Answered

Executable collaboration diagrams in Bizagi (message exchange)

Hello, are Bizagi Studio collaboration diagrams executable? If that's a yes, is there an example with steps on how to implement a simple message exchange between 2 processes, where a intermediate message throw event in the first process would invoke the second process through a start message event.

Such an example would fit as an expansion of the following page:

http://wiki.bizagi.com/en/index.php?title=Collaboration#Collaboration_Diagrams

Thanks

Best Answer
photo

Dear Roger,

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.

Please follow this example at: Transmit_information_between_Processes_with_Process_Wizard

Kind Regards

photo
0

Dear Roger,

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.

Please follow this example at: Transmit_information_between_Processes_with_Process_Wizard

Kind Regards

photo
0

Hello, I have here this simple Collaboration diagram.

The process "Processo 1" has the process entity "Tabela 1" and the process "Processo 2" has the "Tabela 2" as its entity process.How can I set the case number of the instance related to the "Processo 1" to an attribute on the "Processo 2" due to they use different contexts and entitys?I can't find a way to properly execute the returning message from the End Message Event of "Processo 2" to the Intermediate Cath Message on the "Processo 1".Considering a simple situation like this one, which is the better solution?Thank you,Adriel Moro

photo
0

Dear Adriel,

It is a common requirement to access Parameter and System entities that are not related to the data model, in order to extract information for use in XPath expressions.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).For further information: http://help.bizagi.com/bpmsuite/en/index.html?access_entities_not_related_to.htmRegards

photo
0

Thank you Juan!

Because when the "child" process is started with a "Message start Event" we don't know which process nor the instance responsible for triggering the process.

Thus, the problem is: "where can I find the Case Number responsible for triggering the process? In Which entity should I look for? Which filter should I set"?

Do you got it?

Thank you again.

Regards,

Adriel

photo
0

Dear Adriel,

Yes, I got it. I can give you a possible solution according your explanation. There a way to create a case and to know what is the number of it. At the end of the end event of "Processo 1", create an expression in order to invoke a SOA method called: createCasesAsString. No matter if you are in "Processo 2", you will be able to create a case and to know the number.

Another way is to search a especific case from one Process to another. Again, using SOA Method: getCases

Regards

photo
0

Adriel Moro wrote:

Thank you Juan!

Because when the "child" process is started with a "Message start Event" we don't know which process nor the instance responsible for triggering the process.

Thus, the problem is: "where can I find the Case Number responsible for triggering the process? In Which entity should I look for? Which filter should I set"?

Do you got it?

Thank you again.

Regards,

Adriel

Adriel,

I think i can help you. Please send an email to gpberra@gmail.com

I'm from Brazil, so you can speak in portuguese.

Regards

photo
0

There is a simple solution without webservices (but it is not perfect).

If you have Process 1 that calls a Process 2 like this:

Process1:

(Start)-->[Activity]-->((Message))

Process2:

(Message)-->[Activity:Script]-->[Activity]-->((End))

Make sure you have a Master Entity in Process1 with a column that has the CaseId (for Process1) and another column that will hold the CaseId (for Process2).

In the [Activity:Script] in Process2 you can use entity Manager to find an Entity with CaseIdProcess2 == null.

Then you can fill this with the correct CaseId.

This is not the best solution because if two Process1 finish at the same time there is a probability that two Process2 will get the same Process1, you can test for this in the script as well so it can be corrected automatically.

I like Juan Zuluaga's tip on calling the SOA layer to create the case since there you will get immediate feedback on the second process's ID.

It would be great if the Message End Event could send actual data on the message, but this is not possible in BizAgi.

Regards,

Jaime