As we transition to the new Hyland Community, some post links may be temporarily disrupted as we finalize redirects. We apologize for the inconvenience and are working to resolve this as quickly as possible. Details.
runtimeService.signalEventReceived("invokeSubProcessC");
<intermediateCatchEvent id="catch_invokeSubProcessC" name="SignalCatchEvent"> <signalEventDefinition signalRef="invokeSubProcessC"></signalEventDefinition> </intermediateCatchEvent> … <sequenceFlow id="flow9" name="" sourceRef="catch_invokeSubProcessC" targetRef="subProcessC"></sequenceFlow> … <subProcess id="subProcessC" name="Sub Process"> </subProcess>
<br><boundaryEvent id="boundary" attachedToRef="task" cancelActivity="false"> <br> <signalEventDefinition signalRef="invokeSubProcessC"/><br></boundaryEvent><br>
<br><?xml version="1.0" encoding="UTF-8"?><br><definitions id="definitions" xmlns="<a href="http://www.omg.org/spec/BPMN/20100524/MODEL" rel="nofollow noopener noreferrer">http://www.omg.org/spec/BPMN/20100524/MODEL</a>"<br> xmlns:activiti="<a href="http://activiti.org/bpmn" rel="nofollow noopener noreferrer">http://activiti.org/bpmn</a>" targetNamespace="Examples"><br><br> <signal id="alertSignal" name="alert" /><br><br> <process id="nonInterruptingSignalEvent"><br><br> <startEvent id="theStart" /><br><br> <sequenceFlow id="flow1" sourceRef="theStart" targetRef="theUserTask" /><br><br> <userTask id="theUserTask" name="My User Task" /><br><br> <boundaryEvent id="signal" attachedToRef="theUserTask" cancelActivity="false"><br> <signalEventDefinition signalRef="alertSignal" /><br> </boundaryEvent><br> <br> <sequenceFlow id="flow2" sourceRef="theUserTask" targetRef="theEnd" /><br> <br> <endEvent id="theEnd" /><br> <br> <sequenceFlow id="flow3" sourceRef="signal" targetRef="theUserTask2" /><br> <br> <userTask id="theUserTask2" name="My Second User Task" /><br> <br> <sequenceFlow id="flow4" sourceRef="theUserTask2" targetRef="theEnd2" /><br> <br> <endEvent id="theEnd2" /><br> </process><br><br></definitions><br>
<br>@Deployment<br> public void testNonInterruptingSignal() {<br> ProcessInstance pi = runtimeService.startProcessInstanceByKey("nonInterruptingSignalEvent");<br> <br> List<Task> tasks = taskService.createTaskQuery().processInstanceId(pi.getProcessInstanceId()).list();<br> assertEquals(1, tasks.size());<br> Task currentTask = tasks.get(0);<br> assertEquals("My User Task", currentTask.getName());<br> <br> runtimeService.signalEventReceived("alert");<br> <br> tasks = taskService.createTaskQuery().processInstanceId(pi.getProcessInstanceId()).list();<br> assertEquals(2, tasks.size());<br> <br> for (Task task : tasks) {<br> if (!task.getName().equals("My User Task") && !task.getName().equals("My Second User Task")) {<br> fail("Expected: <My User Task> or <My Second User Task> but was <" + task.getName() + ">.");<br> }<br> }<br><br>…<br>
helpfull post
<br>[org.activiti.engine.impl.interceptor.CommandContext] (http-localhost-127.0.0.1-8090-11) Error while closing command context: org.activiti.engine.ActivitiException: Execution '1008' has not subscribed to a signal event with name 'startSubProcessAfromX'.<br> at org.activiti.engine.impl.cmd.SignalEventReceivedCmd.execute(SignalEventReceivedCmd.java:52) [activiti-engine-5.10.jar:5.10]<br> at org.activiti.engine.impl.cmd.SignalEventReceivedCmd.execute(SignalEventReceivedCmd.java:29) [activiti-engine-5.10.jar:5.10]<br>…<br>
<br><definitions …><br> <signal id="startSubProcessAfromX" name="startSubProcessAfromX"></signal><br> <signal id="startSubProcessAfromY" name="startSubProcessAfromY"></signal><br> …<br> <process id="processP" name="processP"><br> …<br> <userTask id="TaskX" …></userTask><br> <boundaryEvent id="boundarysignal1" cancelActivity="false" attachedToRef="TaskX"><br> <signalEventDefinition signalRef="startSubProcessAfromX"></signalEventDefinition><br> </boundaryEvent><br> <userTask id="TaskY" …></userTask><br> <boundaryEvent id="boundarysignal2" cancelActivity="false" attachedToRef="TaskY"><br> <signalEventDefinition signalRef="startSubProcessAfromY"></signalEventDefinition><br> </boundaryEvent><br> …<br> <sequenceFlow id="flow34" name="" sourceRef="boundarysignal1" targetRef="exclusivegateway1"></sequenceFlow><br> <sequenceFlow id="flow35" name="" sourceRef="boundarysignal2" targetRef="exclusivegateway1"></sequenceFlow><br> …<br>
<br>public void triggerSubProcessAButtonClicked(BusinessProcess businessProcess){<br> …<br> runtimeService.signalEventReceived("startSubProcessAfromX", businessProcess.getProcessInstanceId());<br> … <br>}<br>
Try signaling the exact execution instead of the process-instance… Try querying the task and use the executionId you get from there.
<br>//send signal to current task only.<br>String taskId = Helper.getContextHelper().getParameter(RequestConstants.TASK_ID_PARAMETER_NAME);<br>runtimeService.signalEventReceived(TaskConstants.TRIGGER_SUBPROCESS_SIGNAL_NAME, taskId);<br>