Start → UserTaskA(with signal start event A) → 3 x Subprocess(boundary signal event A) → End
For the first run, UserTaskA which assignee is ${requester} can run with no problem.
In those 3 subprocess, there are 3 separate user task, if task disapproved, signal A should be triggered, and other 2 subprocess should be cancelled.
Then UserTaskA expected to be assigned to ${requester}, but it prompt error instead:
An error happened while submitting the task form : Cannot submit task form 26ea8605-420b-11ec-b635-0050569ea777: Unknown property used in expression: ${requester}. Cause: Cannot resolve identifier ‘requester’
May I know why the variable is loss after the signal start event?
It would be great if you can attach a snip of your visual model.
When you deliver a signal, the signal start event is triggered and so a new process instance is started.
You need to supply variables to new started process instance with the deliver signal call so in your case you need to supply requester as variable with the deliver signal call.
My goal is having multiple parallel approval at the same time,
while any one of them has been rejected, others user task should be cancelled,
and return to User Input.
At the very beginning, I tried to link those boundary signals directly to the User Input task,
but in result 3 User Input tasks triggered.
So I tried to use signal start event, but seems it cannot carry previous variables back to the task?
“anyRejection” variable is initialized to false each time work returns to Task 1.
In case of rejection, a message is sent causing the work of all sub-processes to interrupt.
Below expression is used to send the message #{execution.getProcessEngineServices().getRuntimeService().createMessageCorrelation("rejected_msg").processInstanceBusinessKey(execution.processBusinessKey).setVariable("anyRejection", true).correlateAll()}
Note: The signal event does not perform any kind of correlation to a specific process instance. On the contrary, it is broadcast to all process instances
In your case, you need to correlate to a specific process instance. Why?
Let’s assume that two process instances of this model have been started then broadcast to all process instances means to interrupt sub-processes in both running instances even if rejection is happened in only one instance.
I tried use a message named “Reject” for all message event in the model,
but unlike the signal event, no I am not abled to cancel all pending user task and redirect to User Input.