I have several business processes that my users start from the contact record. Each opens a pre-configured page that allows my users to record information and make connections to other objects.
However, some of them take longer to start that I'd like. Is there any methods that I should investigate to try and improve performance? There aren't any steps before the preconfigured page so I'm not sure what more I could do.
Unfortunately, only from this screenshot, it is hard to tell what could be the issue. Please check that there are no web socket issues in your browser. Also, if your application is deployed on-site, please check that web sockets are set up correctly. If it is not the issue please contact support team at support@creatio.com.
You did everything correct, but the trick here is that trace data cannot be received from "Terminate event". Please view trace data of approval element and check parameter values before this element execution and after this element execution so to get needed data.
The functionality can be implemented using a script task element in order to select all contact emails which are included in the role. The contact emails are selected from the database via EntitySchemaQuery. Then join all selected emails into a string using ";" as separator. After that use the newly built string of emails as an email for sending.
The basic business process "Send email to case group" works in the same way. Please feel free to use the business process as an example. Pay attention to the script task element "Prepare Recipient Emails" (https://prnt.sc/p0tv3t).
Currently, when Maximum number of repetitions for a process is exceeded, a warning is displayed and the process doesn't complete any more steps, but it is left in Process status Running. When Maximum number of repetitions is reached, the process should end and go to Completed status because there is no way to increase the limit while running and the process has to be manually stopped in Process log.
Yes, you are right, this behaviour should be changed. I will create a suggestion to our R&D team on this topic and I hope they will review this logic. For example set the status to "Completed" or they will create a new process status like "Number of repetitions exceeded".
Agreed it shouldn't be left running - though my preference would either be a new status as you suggested, Oscar, or the process should change state to Error, since processing has been terminated rather than gracefully stopping.
Thank you for supporting this idea! The project to change the status of processes that exceeded the maximum number of repetitions has been already registered and accepted by our R&D team. Hope that it will be released in further releases.
In the properties for running a business process from section, enable conditions for running a process. For example, the current user may need to have a specific role assigned or the record may need to be in one or more statuses.
How do you restrict access to a custom process? For example, if I want to ensure that only System Administrators can run a process, is the only way to restrict who can run the process by checking the current user in the process?
Unfortunately, bpm'online has no business process rights functionality.
Your suggestion to check the current user in business process seems to be a nice workaround. I think the most convenient way to implement it in script task.
In order to hide the button menu, you need to override the basic functionality, which involves development within the system.
Firstly, you need to override basic schema LeftPanelTopMenuModule. Please find the loadMenu method. There you can see that visibility of the button in based on user type. You can add your custom method to check current user rights and set the visibility based on the response result:
Here is an example of how to check current user role. In the example we are hiding the Menu button form non-administrators role. You can adjust the code up to your needs. (the example involves creating of custom CSS style and adding it to the schema dependencies):
As for the list of menu items, please take a look at loadItemsMainMenu method, which is responsible for its logic.
How do you override the LeftPanelTopMenuModule module? I cannot create a replacing client module, so not sure how I would go about this. Is it no longer possible to do this?
Also, please add Title "UsrLeftPanelTopMenuModule" and Name "UsrLeftPanelTopMenuModule", choose the package. Important: do not set the parent object. Save the module.
3. Then, you need to replace "BootstrapModulesV2". Here is the article on how to replace client module schema:
If you intend to modify the basic top menu item, please take a look at LeftPanelTopMenuModule schema. It is responsible for menu items and methods, which regulate visibility and click handling.
Particularly, you would be interested in getTopMenuConfig method, which returns a collection of menu items. Among others, you can find StartProcessMenu item. You can override its visibility property to set it to your role, or bind it to the custom method.
Same goes for the "Home" drop down - MainMenu item in the LeftPanelTopMenuModule schema.
I have created a module extending LeftPanelTopMenuModule and customized the visible property (to false) of StartProcessMenu item.
And now where to use this newly created module UsrClientTopLeftMenu to see the changes.
Note:
I found that this LeftPanelTopMenuModule is used in Workplace selection menu (LeftPanelClientWorkplaceMenu). I could not replace Workplace selection menu also.