Hello all,

 

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.

Like 0

Like

1 comments

Dear Kevin, 

 

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

 

Best regards, 

Dennis 

Show all comments

Hi,

I am trying to find the parameter values changed through a process execution which is attached to a case stage.

I have enabled the trace data option in process.

 

But after the process ran, I can't see the traced data in the process log.

Is there anything I am missing to turn off or on?

The process has an approval element. Does it have to do anything with trace data option?

Like 0

Like

2 comments

Hello,

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.

Best regards,

Oscar

Thanks Oscar.

Actually the process was typically not accurate for the action that I wanted to perform.

Show all comments

Hi,

i would like to know how can i access the array of items inside this ProcessRun Button:

I've tried to use "EditPages" and "diff" from the page, but it didn't work.

Best Regards.

Thanks in advance.

 

 

Like 0

Like

1 comments

Dear Pedro, 

You can access the content of the list by getting the value of an attribute RunProcessButtonMenuItems:

 var processButtonMenuItems = this.get("RunProcessButtonMenuItems");

 

Show all comments

Is there a way to read all the users inside an organizational role and then send those email addresses to the next step of a process?

Like 0

Like

2 comments

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).

Show all comments

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.

3 comments

Hello Janine,

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".

Thank you for this idea.

Best regards,

Oscar

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.

Harvey Adcock,

 

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. 

 

Best regards,

Olga. 

Show all comments

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.

1 comments

Dear Janine, 

We've registered the request to the development team to add the functionality. Thank you for the idea! 

Best regards,

Dennis 

Show all comments

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?

Like 0

Like

1 comments

Hello Janine,



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.



Best regards,

Alex

Show all comments

Hello. i'd like to hide the 'Run Process' -button in the Side Panel for certain Roles.

As well as change the contents of the drop-down of the 'Home' -button next to it.

Like 0

Like

3 comments

Dear Julius, 

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.

Hope you will find it helpful.

Regards,

Anastasia

Anastasia Botezat,

 

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?

Hi Harvey Adcock,

 

In order to replace "LeftPanelTopMenuModule" client module schema, please follow the steps described below:

 

1. Please go to Configuration > Add > Module

2. In the appeared empty module, please add the code below:

define("UsrLeftPanelTopMenuModule", ["LeftPanelTopMenuModule", "LeftPanelTopMenuModuleResources"],
 function() {
 Ext.define("Terrasoft.UsrLeftPanelTopMenuModule", {
 override: "Terrasoft.LeftPanelTopMenuModuleViewModel",
 /*
 * @override
 */
			...
 });
 }
);

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:

 

https://academy.creatio.com/documents/technic-sdk/7-16/creating-custom-client-module-schema

 

4. In a new replacing client schema, please insert the code below:

 

define("BootstrapModulesV2", ["UsrLeftPanelTopMenuModule"], function() {
	return {};
});

Set "BootstrapModulesV2" as Title and Name, set "BootstrapModulesV2" (NUI) as a parent object, set replace parent input checked. 

 

5. Save the changes and hard-reload the page. 

Show all comments

Hello I am trying to show/hide the 'Run Process' button for some specific roles.

As well as the content in the 'Home' drop-down menu.

 

How can I do this?

Best regards,

Like 0

Like

5 comments

Hi,

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. 

Regards,

Anastasia

Hi Anastasia,



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.

define("UsrClientTopLeftMenu", ["LeftPanelTopMenuModule"],
function(resources,LeftPanelUtilities) {
    Ext.define("Terrasoft.configuration.UsrClientTopLeftMenu", {
    	alternateClassName: "Terrasoft.UsrClientTopLeftMenu",
        extend: "Terrasoft.LeftPanelTopMenuModule",
 
        // extend functions
       	getTopMenuConfig: function() {
       			this.callParent(arguments);
				var menuConfig = [
					{
						id: "collapse-button",
						tag: "CollapseMenu",
						className: "Terrasoft.HoverMenuButton",
						style: Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
						classes: {
							imageClass: ["button-image-size"],
							wrapperClass: ["collapse-button-wrapperEl"]
						},
						imageConfig: resources.localizableImages.collapseIconSvg,
						click: {
							bindTo: "collapseSideBar"
						},
						hint: this.getCollapseSideBarMenuItemCaptionConfig(),
						markerValue: this.getCollapseSideBarMenuItemCaptionConfig()
					},
					{
						id: "menu-button",
						tag: "MainMenu",
						className: "Terrasoft.HoverMenuButton",
						style: Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
						hint: {bindTo: "getMenuButtonHint"},
						markerValue: resources.localizableStrings.MenuButtonHint,
						classes: {
							imageClass: ["button-image-size"],
							wrapperClass: ["menu-button-wrapperEl"]
						},
						imageConfig: resources.localizableImages.menuIconSvg,
						menu: {
							items: {bindTo: "MainMenuItems"},
							"alignType": "tr?",
							"ulClass": "position-fixed"
						},
						delayedShowEnabled: {
							bindTo: "Collapsed"
						},
						showDelay: this.get("ShowDelay"),
						hideDelay: this.get("HideDelay")
					},
					{
						id: "menu-startprocess-button",
						tag: "StartProcessMenu",
						className: "Terrasoft.HoverMenuButton",
						style: Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
						hint: {bindTo: "getStartProcessMenuButtonHint"},
						markerValue: resources.localizableStrings.StartProcessButtonHint,
						classes: {
							imageClass: ["button-image-size"],
							wrapperClass: ["menu-startprocess-button-wrapperEl"]
						},
						imageConfig: resources.localizableImages.processIconSvg,
						menu: {
							items: {bindTo: "startProcessMenu"},
							"alignType": "tr?",
							"ulClass": "position-fixed"
						},
						click: {
							bindTo: "startProcessMenuButtonClick"
						},
						visible: false,
						delayedShowEnabled: {
							bindTo: "Collapsed"
						},
						showDelay: this.get("ShowDelay"),
						hideDelay: this.get("HideDelay")
					},
					{
						id: "menu-quickadd-button",
						tag: "quickAddMenu",
						className: "Terrasoft.HoverMenuButton",
						style: Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
						classes: {
							imageClass: ["button-image-size"],
							wrapperClass: ["menu-quickadd-button-wrapperEl"]
						},
						hint: {
							bindTo: "getQuickAddHint"
						},
						markerValue: resources.localizableStrings.AddButtonHint,
						imageConfig: resources.localizableImages.quickaddIconSvg,
						menu: {
							items: {bindTo: "quickAddMenu"},
							"alignType": "tr?",
							"ulClass": "position-fixed"
						},
						visible: {
							bindTo: "IsSSP",
							bindConfig: {
								converter: function(value) {
									return !value;
								}
							}
						},
						delayedShowEnabled: {
							bindTo: "Collapsed"
						},
						showDelay: this.get("ShowDelay"),
						hideDelay: this.get("HideDelay")
					}
				];
				return menuConfig;
			},
 
    });
});

 

Bhoobalan Palanivelu,

Please use the following approach to hide the "Run process" button from the top menu module:

 

1) Create a module called UsrLeftPanelTopMenuModule with the following content:

define("UsrLeftPanelTopMenuModule", ["LeftPanelTopMenuModule"],
    function() {
        Ext.define("Terrasoft.configuration.UsrLeftPanelTopMenuModuleViewModel", {
            alternateClassName: "Terrasoft.UsrLeftPanelTopMenuModuleViewModel",
            override: "Terrasoft.LeftPanelTopMenuModuleViewModel",
            getTopMenuConfig: function() {
                var esq = this.callParent(arguments);
                var index = esq.map(function(e) { return e.id; }).indexOf("menu-startprocess-button");
                if (index > -1) {
                    esq.splice(index, 1);
                }
                return esq;
            }
        });
    }
);

2) Create a replacing view model for BootstrapModulesV2 model:

with the following content:

define("BootstrapModulesV2", ["UsrLeftPanelTopMenuModule"], function() {
	return {};
});

3) Relogin to the application

 

As a result the button will be hidden:

Best regards,

Oscar

Hello Oleg Drobina,

 

Could you please help me with an approach to apply the above splice method only for non-administrator users?

 

Thank you for all your help.

 

 

Mouna RACHIDI,

Hi, in the getTopMenuConfig you can get the value of the current user like this:

var currentUserId = Terrasoft.SysValue.CURRENT_USER.value;

Then you can write a esq request to a table to see if the user has the role of a system administrator:

var esq = Ext.create("Terrasoft.EntitySchemaQuery", {

                        rootSchemaName: "SysAdminUnitInRole"

 });

var esqFirstFilter = esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "SysAdminUnitId", currentUserId );

var esqSecondFilter = esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "SysAdminUnitRoleId", "83A43EBC-F36B-1410-298D-001E8C82BCAD");

 

Note, 83A43EBC-F36B-1410-298D-001E8C82BCAD is the Id of role "System administrators" in the SysAdminUnit table.

If you found the values, then you just var this.callParent(arguments);, and if not, you apply the code that Oleg provided.

 

Show all comments