Answered

How can I communicate between processes using message events

I've got two processes ProcessEen and ProcessTwee. ProcessEen sends an intermediate message event which is pick up by the start of ProcessTwee. After that it will wait for ProcessTwee to complete.

When ProcessTwee ends it will sand and message event which should be picked up by the instance of ProcessEen. But it doesn't it keeps waiting for an event.

When using signals it works but when having multiple instances of ProcessEen thay all finish when one ProcessTwee instance is ready.

So my basic question is: How can I trigger the first process to continue using message events.

Attached the collaboration diagram.

photo
0

Dear Jan

Thank you for your interest in Bizagi.

Consider the use of sub-processes in your model. To know more about this subject please review the following article of our online help.

http://help.bizagi.com/bpmsuite/en/index.html?sub-processes.htm

best regards

Luis Emilio

photo
0

Hello in this case, its only one way - using SubProcess?

In this case, there is only one solution? Or you know another way to find the ID of case that sent the message?

photo
0

I've found a solution for my problem using a signal for the first communication. In my ProcessEen I put the value of Me.Case.Id into an attribute using an expression. Then I send a signal with the same name as the catch signal start event of ProcessTwee. Using signals I can access the attribute values of ProcessEen. So I copy the attribute value containing the case id of ProcessEen to an attribute in ProcessTwee. Also I can copy the Me.Case.Id value of ProcessTwee to an attribute of ProcessEen. From now on I can use message events between the two processes using the case id of the other process in the Collaboration Diagram.

photo
0

Jan-Willem Goedheer wrote:

I've found a solution for my problem using a signal for the first communication. In my ProcessEen I put the value of Me.Case.Id into an attribute using an expression. Then I send a signal with the same name as the catch signal start event of ProcessTwee. Using signals I can access the attribute values of ProcessEen. So I copy the attribute value containing the case id of ProcessEen to an attribute in ProcessTwee. Also I can copy the Me.Case.Id value of ProcessTwee to an attribute of ProcessEen. From now on I can use message events between the two processes using the case id of the other process in the Collaboration Diagram.

Dear Jan-Willem Goedheer,

Have you any video or tutorial to help me?

i have the same problem but i dont know the steps to get the same result.

Best regards.

photo
0

Dear Djalma,

Processes can communicate between each other through message flows. This type of communication is called Collaboration. Collaboration is a Tool that relates two or more processes allowing them to communicate with each other by sending and receiving messages containing information to take actions.In Bizagi, collaboration is done through the throw and catch shapes which are configured in each process.

To implement collaboration, refer to this article:

http://wiki.bizagi.com/en/index.php?title=Transmit_information_between_Processes_with_Process_Wizard

Regards

photo
0

It seems that Bizagi isn't prepared to allow a robust message exchange design as BPMN specification defines. It's a real problem to retrieve the desired Case Id without using subprocess or Signal Events, specially if you have different process and process entities as well.

Do you have any workaround?

Thank you,

Adriel

photo
0

Dear Adriel,

Sub-processes may or may not have the same Process Entity as their Parent process. Thus, to access the parents case's information you must consider the context of both processes to evaluate how to navigate the data model. For further information: http://help.bizagi.com/bpmsuite/en/index.html?managing_sub-process_entities.htm

Regards

photo
0

Thank yoy Juan!

Unfortunately this solution isn't the better one, due to I don't have a relationship between the two entities and I don't want to treat the design as a sub-process. But, the "parameter" exchange is a good thinking that Message Events (both Start, Itermediate and End) should implement.

I'll be waiting :)

Thank you again.

Adriel

photo
0

Dear Adriel,

What about to access to not related entities. In such cases, where the entities cannot be accessed directly through XPath navigation, the EntityManager functions are employed. The information returned by EntityManager is handled as a collection of items. You will then need to iterate over the collection to access specific information (i.e. the item values).

The following is the syntax of the EntityManager function:

  • CEntityManager.GetEntity("Entity").GetEntityList("Attribute","Filter","Search","Order");

For further information: http://help.bizagi.com/bpmsuite/en/index.html?access_entities_not_related_to.htm

Thank you in advance,