Communication between process

I have spring boot embedded application. We have multiple modules where each module is a process eg. ER, SR, SK,SO. SR has it own process and SO and ER is part of SR. User logins to system creates multiple SR (where each SR is a process). Later another user logins and creates SK and one SK will have many SR. After creating SK the another user will review the SK and based on certain conditions he will accept/reject the SK. If SK is accepted it will move to ER and SO process else return. I have two questions,

  1. if is there any way of how can I fork out multiple signals to the SR so that respective SR can move forward
  2. how can I lock all the SR that is part of particular SK so that no another SK creation used the SR that are in state of accepting or rejecting the SK.

There are a number of events in BPMN that could help do this.
The signal event can trigger multiple processes and also have processes wait at a point until that signal has been received.

So if 10 waiting signals are there and I complete SK only for 5 signals then only those process will be resumed and remaining process will wait for the signal.

A signal is correlated on a signal name - so you would create a signal dynamically with an expression
And then each signal could be triggered by some correlation key.

Thank you Niall for solution.
But then I want to know even if i make it dynamic how will my parent process know the signal.
Eg. A user created 10 SR.
Same user creates 1 SK with 5SR and send the SK to review.
Then another user will accept or reject the SK.
How will the SR process know that SK for it has been accepted or rejected.
If accepted it will move to next process otherwise user will make some changes and again it can be used in another SK.
I know how to control this with code. But then I want to know if there is anyway of BPM doing it.
Also I have purchased the license for camunda.
We can consider SK has a contract and SR is items. So one contract will have multiple items. And if contract {SK} gets reject then items {SR} should know that the contract for that item has been rejected/accepted.

The parent process can create a correlation variable that is passed to the child processes and then those processes can use that the variable as the name of the signal.

There are lots of ways to send messages back and forth to from processes you can maybe check out this tutorial for some idea.

Also - you should be aware that if you’re an enterprise customer you can create a support ticket to get help.

I don’t have parent and child process. The two process are independent of each other. My first process will not be calling second process. Multiple process id from first process will be used in second process. And when second process is finished then the ids used for processing seconds process will be notified with accept/reject status.
I got licensed on last Friday only. I have registered for jira today. But then i thought first i will check in forum.

It’s pretty easy to start processes with a payload of data that could help correlate to whatever you want to.

Hi Niall,
Sorry late reply but we figured out the way using event gateway and conditional event. Also thanks for suggestion.