Epicor BPM & Functions Design Feedback

That’s a perfect use case for json.
Epicor has libraries available in the assemblies to handle that.

I’ve worked around the absence of a dedicated “notes” widget by adding an unconnected code widget containing only a block comment.

Not exactly BPM or Functions, but I recently joined a company using Kinetic and sorely miss the ability to run ad hoc queries to answer business questions or develop SSRS reports. We can write BAQs or upload RDLs, but it would shorten the change/test cycle if there were a facility for running SQL directly.

Something like what Epic Games do with comments in Unreal Engine blueprints would work really well.

@timshuwy - Could you get Epicor to have you create this for the BPM Cookbook as a functions example? I’d love to have this!!! I would bet every Epicor customer would use this.

1 Like

A post was split to a new topic: Better Design for business objects

A post was split to a new topic: Add Misc Charges to Cust Shipment

It would be nice to be able to see the using statements in a Function without having to demote it and click edit. Maybe as another tab right next to Overview, Signature, Notes?

Since Epicor already drops the code you write into the body of a generated function in a generated class that you never see, it should be pretty simple to parse out any using statements you write inline and put them where they belong.

My wish list:

Add the ability to call ContextLibrary classes in custom code. Like Erp.Internal.LibFindPart and Erp.Internal.Lib.CalendarDate. There a handful of helpful Context Bound classes.

Not sure if this was implemented or not but add the ability alias assemblies. Currently, you can’t use two services with the same Table signatures such as the SelectedSerialNumbersTable.

Add the ability to copy a Function to another Library or list a Function as a template and then have the ability to create a function from a Template function.

I agree with all the modal comments, sometimes I have to have two instances of Epicor running so I don’t have to close the designer all the time to lookup or trace things.

I agree with VS Editor or just a formatting tool to prettify the code.

Add the ability to Group Widgets so the group can be used on more than one result row after a condition widget so you don’t have to use custom code to loop through. Or even if it was only the Function widget that had the ability like the custom code/email/autoprint widget in a standard directive. Maybe there is a solution that exists that I’m simply missing. :man_shrugging:

image

image

Hmm. Table search supports multi-selection. Definitely, if you need items from different areas of a list, it will be difficult.

BPM/EFx are not source code based. They are metadata-based. What would you expect to store in a source control?

Colleagues,

Brain is not a right person for such questions/requests. He is discussing UI design, not functionality.

1 Like

It is the limitation for the Tuple<>-based version of the InvokeFunction method.
There is another overload of this function. Something like object InvokeFunction(lib, func, object args). Array-based overload works for cases covered by Tuple<>-based one too.

You can try to call a function with more than 7 in or out parameters with widget and look at generated code.

Tuple<>-based overload was implemented for performance reason.

Also, if you think about named tuples, then they are value types, so they are very inefficient in our case.

I’ll start a new thread on this since it is tied to the ability to use DevSecOps practices for ALL Epicor customizations.

But briefly, I would want to store the same information that one would get in an BPM/EFx Export. I understand that with EFx, we might have to rely on encrypted artifacts for functions that are distributed by 3rd party providers but that’s a whole other version management issue.

It is mostly impossible. Compilation errors (when you save enabled directive in maintenance UI) come from C# compiler.
In general, directive validation should cover your needs. But it should be improved definitely.

They only look similar. But they are completely different sub-systems. Anyway, the new UI will use way different approach.

I thought about this approach. The main “blocker” is targeting. Existing import/export UIs cover both MD and DD. Putting them into the action menu conflicts with this behavior.

Also, I’d prefer to completely remove Import/Export from BPM in favor of the new solution workbench (if and when it will be ready).

In general, it is possible already (if you have a group and select overwrite mode).
However, I understand what you mean.
There are two problems here:

  1. Since BPM does not support company mapping (how it is implemented for EFx), copying is the only way to use same directive in a few companies. And it makes overwriting much more complex. Especially since directive name is not an id and can be changed in one of the companies.
  2. I have a few ideas how to improve that, but no ideas how to migrate existing environments.

In such a case, you already can do that via REST calls. A few years ago I created pretty stupid PowerShell scrip to import EFx libraries for our auto-test team.
So such approach allows to export and import EFx export packages. Moreover, in the case of export/import (in contrast with installation), you can specify non-binary format.

BPM is harder. If you have no BPM forms and Hold Types associated with your directives, you can do similar thing (but in old format - compressed DataSets).

That’s exactly how I would do it. That’s all I would add to the forms, a menu item to export as JSON and just make a REST call to get it. It would be just like the Azure Portal… :wink:

Then that file goes to Git…

1 Like

Why do you need that? Could you please explain a use case?

It’s a quality of life thing. Often time I find myself wanting to copy something I’ve done in another function in a new function. I usually use the custom code widget so I can see all the code right from the main window without even having to demote the library. However if I want to see the using references for that code I have to demote it and then open it and click one tab over just to see it. If it was on the main screens tab like everything else then I wouldn’t have to do all that just to see what usings are being used.

2 Likes