Hi Community!

 

We are trying to find an elegant way of preventing the execution of business processes from create, update and delete elements within other business processes.

Think of it as Outlook's 'Stop processing more rules' flag.

 

We could set a certain flag and add it to the other processes' signal conditions, but this leads to a high coupling of business processes, more complexity, and over the lifetime of a Creatio instance inevitably to errors as everyone needs to know this 'magic' behavior.

 

Ideally, signals in Creatio would have the option to distinguish between different triggering options, like 'user', 'business process', 'import', 'odata', 'event handler', etc. but unfortunately, this is a missing feature.

 

Any thoughts would be more than welcome!

 

Thanks,

Robert

Like 1

Like

2 comments

Hi Community,
any ideas on this?

 

Thanks,

Robert

Hello,
 

At the moment, such functionality is not available in Creatio's OOTB solution for triggering the addition/modification of records. 
Indeed, a workaround in this situation can be to create additional columns at the level of the object model that will be filled in depending on which method the record was created/modified (for example, a special column for OData).
We will register this development idea with our R&D team so that they can consider implementing such functionality in future versions of the Creatio product.
 

Thank you.

Show all comments

We are testing some signals and created new Usr object for this purpose since there were some issues on OOTB objects. After creating new object, signals for 'Record added' are not triggering. 

 

Is there any additional configuration needed on object to enable signals?

 

Thanks, 

Mario

Like 0

Like

3 comments

Hello,

Basically, in order to trigger the logic of starting business processes on the event of adding/modifying or deleting records, you need to select the object for which events will be tracked and specify the appropriate parameters. You can learn more in this article on Creatio Academy.

Also, you should additionally make sure that the new object has been published and the system has been compiled after adding a new custom object.

Thank you.

HI, 

 

thanks for update, I already read all that and did not find any clues for additional setup. After your post, I tried to compile and publish all, but it did not help. 

 

Is there any way I can check if signal was raised?

 

Br,

Mario

Hi Mario,

 

1) What is the Parent for this new object? BaseEntity?

 

2) How are you performing the add of the record? Is it via the UI, a process, code or direct SQL insert?

 

Ryan

Show all comments

Is it possible to trigger process's signal from backend (C# code)? 

For example, I modify record of schema in C# code and I want process to become triggered when the record was modified.

I have tried to make it as shown on a picture but it didn`t work. It worked only if the record was changed from UI side.

I would be very appreciated for knowledgebase link concerning this question.

Thank you in advance.

Like 0

Like

3 comments

What does the C# code look like that you're using to trigger it?

Can you provide more details on your custom code since I've created a simple method in the Account object that modifies a contact in the process inside the Account object (using onInserted method):

var contactEntity = UserConnection.EntitySchemaManager.GetInstanceByName("Contact");
			var contactRecord = contactEntity.CreateEntity(UserConnection);
			contactRecord.FetchFromDB("Id", new Guid("9c4111d2-cbf1-49f2-8c2b-00c6a82547c0"));
			contactRecord.SetColumnValue("Name", "From the code");
			contactRecord.Save();

and it triggers the business process with the start signal that is executed when the Contact name is modified. Maybe your logic is not modifying the record in the manner that should trigger the business process.

UsrContactSaved - the process on Contact schema that triggers when Contact record is saved ContactUtilities.ChangeContactStatus - the method that should change Status on schema Contact (this method is scheduled by job)

UsrOnContactStatusChanged - the process that should be triggered when the Status field in Contact schema was changed (but it doesn`t trigger)

So, when UsrContactSaved process triggered, there is a code in it that schedule a job that must call ContactUtilities.ChangeContactStatus in 10 minutes. After 10 minutes triggers ContactUtilities.ChangeContactStatus method and it changes Status via method in C# code.

In conclusion, status changed but UsrOnContactStatusChanged didn`t work. Expected result: UsrOnContactStatusChanged has to be triggered after work of UsrChangeContactStatusProcess process.

Show all comments

Hi,

I am doing a 

var result = entity.Save();

for an object(entity). And I have a business process that works on the signal OnRecordAdded for this object. My concern is, is the entity.Save() synchronous with the business process that runs for the entity? In other words, is the value for the "result" variable assigned only after this business process completes?

Like 0

Like

1 comments

Hi,

 

The result is accessible in the context of the business process execution and once the process completes its execution the result becomes unavailable.

 

You can also test it by debugging process execution in Visual Studio. You need to activate development in the file system and connect to the app via VS. Then you need to set breakpoints in the process schema and check when the result parameter receives the value and when it loses the value.

 

Best regards,

Oscar

Show all comments

Hi all,

         How can I attach params with "throw signal" in business process? Because I catch this signal, I want some params with it.

Thanks

Toàn

Like 0

Like

2 comments

Hello!

 

As for now, there is no such functionality. I will forward your case to the developer team and suggest them to implement this functionality.

Try using Sub Process, then you can pass param

Show all comments

When using Throw signal, there is no way to specify the record Id the signal is associated with.  What record Id is sent in the signal? How do you make sure that it is the record Id that you need to send?

For example, the process below does not provide a record Id with the signal.

Throw Signal

 

 

 

 

 

 

 

 

 

Catch Signal

 

 

 

 

 

 

 

 

 

Result

 

Like 0

Like

3 comments

A subprocess works, but I'm trying to limit the processes running on the server, so, I want to hand off the processing and not keep the parent process running.

If you need to use signals and reduce the number of processes running in your system you need to use event sub-process in your process and as a result complete several tasks in terms of one process. You can read more about event sub-process element here.

Show all comments

Whether or not a System User is Active can be read from System administration object.  However, when the state of Active is changed in System Users, no Signal is caught using Record Modified if the Active flag was changed manually in System Users.  The Signal only triggers a process if the Active status is changed by another process.

How can a process be started when changing the Active status of a System User manually?

Like 0

Like

1 comments

In order to create the functionality please use object "Users/roles (view)" instead of "System administration object" (https://prnt.sc/pj03qp).

Show all comments