Closed zhaochy1990 closed 7 years ago
my test bpmn file.
<bpmn:process id="Process_1" isExecutable="true">
<bpmn:startEvent id="StartEvent_1">
<bpmn:outgoing>f0</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:userTask id="Task1" name="isPassed">
<bpmn:extensionElements>
<camunda:formData />
</bpmn:extensionElements>
<bpmn:incoming>f0</bpmn:incoming>
<bpmn:outgoing>f1</bpmn:outgoing>
</bpmn:userTask>
<bpmn:dataObjectReference id="DataObjectReference_0n4aw7g" dataObjectRef="DataObject_1xzg760" />
<bpmn:dataObject id="DataObject_1xzg760" />
<bpmn:sequenceFlow id="f0" sourceRef="StartEvent_1" targetRef="Task1" />
<bpmn:sequenceFlow id="f1" sourceRef="Task1" targetRef="Task2" />
<bpmn:userTask id="Task2">
<bpmn:extensionElements>
<camunda:inputOutput>
<camunda:outputParameter name="x">
<camunda:script scriptFormat="javascript">51</camunda:script>
</camunda:outputParameter>
</camunda:inputOutput>
</bpmn:extensionElements>
<bpmn:incoming>f1</bpmn:incoming>
<bpmn:outgoing>f2</bpmn:outgoing>
</bpmn:userTask>
<bpmn:exclusiveGateway id="decision">
<bpmn:incoming>f2</bpmn:incoming>
<bpmn:outgoing>f3</bpmn:outgoing>
<bpmn:outgoing>f4</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:sequenceFlow id="f2" sourceRef="Task2" targetRef="decision" />
<bpmn:userTask id="Task3">
<bpmn:incoming>f3</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_08dd7y2</bpmn:outgoing>
</bpmn:userTask>
<bpmn:sequenceFlow id="f3" sourceRef="decision" targetRef="Task3">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression" language="javascript"><![CDATA[this.variables.x>50]]></bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="f4" sourceRef="decision" targetRef="Task4">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression" language="javascript"><![CDATA[this.variables.x<50]]></bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:userTask id="Task4">
<bpmn:incoming>f4</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_0d6etvm</bpmn:outgoing>
</bpmn:userTask>
<bpmn:endEvent id="end2">
<bpmn:incoming>SequenceFlow_0d6etvm</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="SequenceFlow_0d6etvm" sourceRef="Task4" targetRef="end2" />
<bpmn:sequenceFlow id="SequenceFlow_08dd7y2" sourceRef="Task3" targetRef="sub1" />
<bpmn:subProcess id="sub1">
<bpmn:incoming>SequenceFlow_08dd7y2</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_1qxjnxw</bpmn:outgoing>
<bpmn:startEvent id="StartEvent_02jk9c8">
<bpmn:outgoing>SequenceFlow_19gop1o</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:task id="Task5">
<bpmn:incoming>SequenceFlow_19gop1o</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_0l52das</bpmn:outgoing>
</bpmn:task>
<bpmn:sequenceFlow id="SequenceFlow_19gop1o" sourceRef="StartEvent_02jk9c8" targetRef="Task5" />
<bpmn:endEvent id="EndEvent_1kq7h55">
<bpmn:incoming>SequenceFlow_0l52das</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="SequenceFlow_0l52das" sourceRef="Task5" targetRef="EndEvent_1kq7h55" />
</bpmn:subProcess>
<bpmn:endEvent id="end1">
<bpmn:incoming>SequenceFlow_1qxjnxw</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="SequenceFlow_1qxjnxw" sourceRef="sub1" targetRef="end1" />
</bpmn:process>
I add a listener for the usertask Task5
, but it never be triggered.
Since all ids within a definition must be unique you can listen for start-Task5
:
const BpmnEngine = require('bpmn-engine');
const listener = new EventEmitter();
listener.on('start-Task5', (task) => {
console.log(`${task.id} has started`);
});
listener.on('wait', (task) => {
console.log(`${task.type} <${task.id}> is waiting for signal`);
task.signal();
});
const engine = new BpmnEngine.Engine({source: aboveSource});
engine.execute({
listener,
variables: {
x: 51
}
}, (err, definitions) => {
console.log(err, definitions)
});
engine.once('end', () => {
console.log('completed');
});
Just a friendly remark: What if x = 50
?
thanks a lot, it works. I want to use your lib in my project, this is just a test.
Can you give an subprocess example, struggled... ..