@5minds/node-red-contrib-processcube 0.14.0-fix-error-in-process-instance-query-9aeac9-lyzi0gix → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. package/Dockerfile +1 -1
  2. package/docker-compose.yml +12 -0
  3. package/examples/External-Task-Sample.json +252 -0
  4. package/externaltask-error.html +26 -12
  5. package/externaltask-error.js +19 -20
  6. package/externaltask-input.html +31 -14
  7. package/externaltask-input.js +107 -55
  8. package/externaltask-output.html +20 -10
  9. package/externaltask-output.js +12 -11
  10. package/message-event-trigger.html +14 -14
  11. package/message-event-trigger.js +10 -14
  12. package/nodered/node-red-contrib-processcube-flows.json +216 -132
  13. package/nodered/package.json +1 -0
  14. package/nodered/settings.js +92 -82
  15. package/package.json +3 -9
  16. package/process-start.html +23 -19
  17. package/process-start.js +10 -15
  18. package/processcube-engine-config.html +10 -10
  19. package/processcube-engine-config.js +30 -22
  20. package/processdefinition-query.html +23 -29
  21. package/processdefinition-query.js +42 -36
  22. package/processes/External-Task-Sample.bpmn +94 -0
  23. package/processinstance-query.html +20 -19
  24. package/processinstance-query.js +16 -23
  25. package/signal-event-trigger.html +14 -14
  26. package/signal-event-trigger.js +10 -14
  27. package/usertask-finished-listener.html +12 -17
  28. package/usertask-finished-listener.js +30 -27
  29. package/usertask-input.html +27 -40
  30. package/usertask-input.js +37 -24
  31. package/usertask-new-listener.html +12 -17
  32. package/usertask-new-listener.js +27 -27
  33. package/usertask-output.html +24 -23
  34. package/usertask-output.js +25 -21
  35. package/.prettierrc.json +0 -6
  36. package/processes/CheckError.bpmn +0 -78
  37. package/processes/NodeRedExternalTask.bpmn +0 -77
  38. package/processes/SampleUserTask.bpmn +0 -95
@@ -1,75 +1,62 @@
1
1
  <script type="text/javascript">
2
- RED.nodes.registerType('usertask-input', {
2
+ RED.nodes.registerType('usertask-input',{
3
3
  category: 'ProcessCube',
4
4
  color: '#02AFD6',
5
5
  defaults: {
6
- name: { value: '' },
7
- engine: { value: '', type: 'processcube-engine-config' },
8
- query: { value: 'payload' },
9
- query_type: { value: 'msg' },
10
- force_send_array: { value: false },
11
- multisend: { value: false },
6
+ name: {value: ""},
7
+ engine: {value: "", type: "processcube-engine-config"},
8
+ query: {value: "payload"},
9
+ query_type: {value: "msg"},
10
+ force_send_array: {value: false},
11
+ multisend: {value: false}
12
12
  },
13
13
  inputs: 1,
14
14
  outputs: 1,
15
- icon: 'font-awesome/fa-envelope-open',
16
- label: function () {
17
- return this.name || 'usertask-input';
15
+ icon: "font-awesome/fa-envelope-open",
16
+ label: function() {
17
+ return this.name || "usertask-input";
18
18
  },
19
- oneditprepare: function () {
20
- $('#node-input-query').typedInput({
19
+ oneditprepare: function() {
20
+ $("#node-input-query").typedInput({
21
21
  default: 'msg',
22
- types: ['msg', 'json'],
22
+ types: ['msg', 'json']
23
23
  });
24
24
 
25
- $('#node-input-query').typedInput('value', this.query);
26
- $('#node-input-query').typedInput('type', this.query_type);
27
- },
28
- oneditsave: function () {
29
- (this.query = $('#node-input-query').typedInput('value')),
30
- (this.query_type = $('#node-input-query').typedInput('type'));
25
+ $("#node-input-query").typedInput('value', this.query);
26
+ $("#node-input-query").typedInput('type', this.query_type);
31
27
  },
28
+ oneditsave: function() {
29
+ this.query = $("#node-input-query").typedInput('value'),
30
+ this.query_type = $("#node-input-query").typedInput('type')
31
+
32
+ }
32
33
  });
33
34
  </script>
34
35
 
35
36
  <script type="text/html" data-template-name="usertask-input">
36
37
  <div class="form-row">
37
38
  <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
38
- <input type="text" id="node-input-name" placeholder="Name" />
39
+ <input type="text" id="node-input-name" placeholder="Name">
39
40
  </div>
40
41
  <div class="form-row">
41
42
  <label for="node-input-engine"><i class="fa fa-tag"></i> Engine-URL</label>
42
- <input type="text" id="node-input-engine" placeholder="http://engine:8000" />
43
+ <input type="text" id="node-input-engine" placeholder="http://engine:8000">
43
44
  </div>
44
45
  <div class="form-row">
45
46
  <label for="node-input-query"><i class="fa fa-tag"></i> Query</label>
46
- <input type="text" id="node-input-query" />
47
+ <input type="text" id="node-input-query">
47
48
  </div>
48
49
  <div class="form-row" style="display:flex; margin-bottom: 3px;">
49
- <label for="node-input-force_send_array" style="vertical-align:top"
50
- ><i class="fa fa-list-alt"></i> Force send payload as array</label
51
- >
50
+ <label for="node-input-force_send_array" style="vertical-align:top"><i class="fa fa-list-alt"></i> Force send payload as array</label>
52
51
  <div>
53
- <input
54
- type="checkbox"
55
- checked
56
- id="node-input-force_send_array"
57
- style="display: inline-block; width: auto; margin: 0px 0px 0px 4px;"
58
- />
59
- <label style="width:auto" for="node-input-force_send_array"
60
- >Alway send an array? Only works if <i>Send multi</i> is false.</label
61
- >
52
+ <input type="checkbox" checked id="node-input-force_send_array" style="display: inline-block; width: auto; margin: 0px 0px 0px 4px;">
53
+ <label style="width:auto" for="node-input-force_send_array">Alway send an array? Only works if <i>Send multi</i> is false.</label>
62
54
  </div>
63
55
  </div>
64
56
  <div class="form-row" style="display:flex; margin-bottom: 3px;">
65
57
  <label for="node-input-multisend" style="vertical-align:top"><i class="fa fa-list-alt"></i> Send multi</label>
66
58
  <div>
67
- <input
68
- type="checkbox"
69
- checked
70
- id="node-input-multisend"
71
- style="display: inline-block; width: auto; margin: 0px 0px 0px 4px;"
72
- />
59
+ <input type="checkbox" checked id="node-input-multisend" style="display: inline-block; width: auto; margin: 0px 0px 0px 4px;">
73
60
  <label style="width:auto" for="node-input-multisend">Send one output of each usertask input?</label>
74
61
  </div>
75
62
  </div>
package/usertask-input.js CHANGED
@@ -1,13 +1,21 @@
1
- const process = require('process');
2
- const EventEmitter = require('node:events');
1
+ const process = require("process");
2
+ const EventEmitter = require("node:events");
3
3
 
4
- const engine_client = require('@5minds/processcube_engine_client');
4
+ const engine_client = require("@5minds/processcube_engine_client");
5
5
 
6
6
  function showStatus(node, msgCounter) {
7
7
  if (msgCounter >= 1) {
8
- node.status({ fill: 'blue', shape: 'dot', text: `handling tasks ${msgCounter}` });
8
+ node.status({
9
+ fill: "blue",
10
+ shape: "dot",
11
+ text: `handling tasks ${msgCounter}`,
12
+ });
9
13
  } else {
10
- node.status({ fill: 'blue', shape: 'ring', text: `subcribed ${msgCounter}` });
14
+ node.status({
15
+ fill: "blue",
16
+ shape: "ring",
17
+ text: `subcribed ${msgCounter}`,
18
+ });
11
19
  }
12
20
  }
13
21
 
@@ -17,33 +25,30 @@ module.exports = function (RED) {
17
25
  var node = this;
18
26
  var msgCounter = 0;
19
27
  var flowContext = node.context().flow;
20
- var nodeContext = node.context();
21
28
 
22
29
  this.engine = this.server = RED.nodes.getNode(config.engine);
23
30
 
24
- const engineUrl = this.engine?.url || process.env.ENGINE_URL || 'http://engine:8000';
25
-
26
- var client = nodeContext.get('client');
27
-
28
- if (!client) {
29
- nodeContext.set('client', new engine_client.EngineClient(engineUrl));
30
- client = nodeContext.get('client');
31
- }
31
+ const client = this.engine.getEngineClient();
32
32
 
33
- var eventEmitter = flowContext.get('emitter');
33
+ var eventEmitter = flowContext.get("emitter");
34
34
 
35
35
  if (!eventEmitter) {
36
- flowContext.set('emitter', new EventEmitter());
37
- eventEmitter = flowContext.get('emitter');
36
+ flowContext.set("emitter", new EventEmitter());
37
+ eventEmitter = flowContext.get("emitter");
38
38
  }
39
39
 
40
- node.on('close', async () => {
40
+ node.on("close", async () => {
41
41
  client.dispose();
42
42
  client = null;
43
43
  });
44
44
 
45
- node.on('input', function (msg) {
46
- let query = RED.util.evaluateNodeProperty(config.query, config.query_type, node, msg);
45
+ node.on("input", function (msg) {
46
+ let query = RED.util.evaluateNodeProperty(
47
+ config.query,
48
+ config.query_type,
49
+ node,
50
+ msg
51
+ );
47
52
  query = {
48
53
  ...query,
49
54
  identity: node.server.identity,
@@ -61,22 +66,30 @@ module.exports = function (RED) {
61
66
  node.send(msg);
62
67
  } else {
63
68
  if (!config.force_send_array) {
64
- if (config.multisend && matchingFlowNodes.userTasks && matchingFlowNodes.userTasks.length > 1) {
69
+ if (
70
+ config.multisend &&
71
+ matchingFlowNodes.userTasks &&
72
+ matchingFlowNodes.userTasks.length > 1
73
+ ) {
65
74
  matchingFlowNodes.userTasks.forEach((userTask) => {
66
75
  msg.payload = { userTask: userTask };
67
76
  node.send(msg);
68
77
  });
69
78
  } else {
70
- msg.payload = { userTasks: matchingFlowNodes.userTasks };
79
+ msg.payload = {
80
+ userTasks: matchingFlowNodes.userTasks,
81
+ };
71
82
  node.send(msg);
72
83
  }
73
84
  } else {
74
- msg.payload = { userTasks: matchingFlowNodes.userTasks || [] };
85
+ msg.payload = {
86
+ userTasks: matchingFlowNodes.userTasks || [],
87
+ };
75
88
  node.send(msg);
76
89
  }
77
90
  }
78
91
  });
79
92
  });
80
93
  }
81
- RED.nodes.registerType('usertask-input', UserTaskInput);
94
+ RED.nodes.registerType("usertask-input", UserTaskInput);
82
95
  };
@@ -1,39 +1,34 @@
1
1
  <script type="text/javascript">
2
- RED.nodes.registerType('usertask-new-listener', {
2
+ RED.nodes.registerType('usertask-new-listener',{
3
3
  category: 'ProcessCube Events',
4
4
  color: '#02AFD6',
5
5
  defaults: {
6
- name: { value: '' },
7
- engine: { value: '', type: 'processcube-engine-config' },
8
- multisend: { value: false },
6
+ name: {value: ""},
7
+ engine: {value: "", type: "processcube-engine-config"},
8
+ multisend: {value: false}
9
9
  },
10
10
  inputs: 0,
11
11
  outputs: 1,
12
- icon: 'font-awesome/fa-envelope-open',
13
- label: function () {
14
- return this.name || 'usertask-new-listener';
15
- },
12
+ icon: "font-awesome/fa-envelope-open",
13
+ label: function() {
14
+ return this.name || "usertask-new-listener";
15
+ }
16
16
  });
17
17
  </script>
18
18
 
19
19
  <script type="text/html" data-template-name="usertask-new-listener">
20
20
  <div class="form-row">
21
21
  <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
22
- <input type="text" id="node-input-name" placeholder="Name" />
22
+ <input type="text" id="node-input-name" placeholder="Name">
23
23
  </div>
24
24
  <div class="form-row">
25
25
  <label for="node-input-engine"><i class="fa fa-tag"></i> Engine-URL</label>
26
- <input type="text" id="node-input-engine" placeholder="http://engine:8000" />
26
+ <input type="text" id="node-input-engine" placeholder="http://engine:8000">
27
27
  </div>
28
28
  <div class="form-row" style="display:flex; margin-bottom: 3px;">
29
29
  <label for="node-input-multisend" style="vertical-align:top"><i class="fa fa-list-alt"></i> Send multi</label>
30
30
  <div>
31
- <input
32
- type="checkbox"
33
- checked
34
- id="node-input-multisend"
35
- style="display: inline-block; width: auto; margin: 0px 0px 0px 4px;"
36
- />
31
+ <input type="checkbox" checked id="node-input-multisend" style="display: inline-block; width: auto; margin: 0px 0px 0px 4px;">
37
32
  <label style="width:auto" for="node-input-multisend">Send one output of each usertask input?</label>
38
33
  </div>
39
34
  </div>
@@ -41,4 +36,4 @@
41
36
 
42
37
  <script type="text/html" data-help-name="usertask-new-listener">
43
38
  <p>A node which subscribes to an User Task of https://processcube.io</p>
44
- </script>
39
+ </script>
@@ -1,31 +1,23 @@
1
- const process = require('process');
2
- const EventEmitter = require('node:events');
1
+ const process = require("process");
2
+ const EventEmitter = require("node:events");
3
3
 
4
- const engine_client = require('@5minds/processcube_engine_client');
4
+ const engine_client = require("@5minds/processcube_engine_client");
5
5
 
6
6
  module.exports = function (RED) {
7
7
  function UserTaskNewListener(config) {
8
8
  RED.nodes.createNode(this, config);
9
9
  var node = this;
10
10
  var flowContext = node.context().flow;
11
- var nodeContext = node.context();
12
11
 
13
12
  this.engine = this.server = RED.nodes.getNode(config.engine);
14
13
 
15
- const engineUrl = this.engine?.url || process.env.ENGINE_URL || 'http://engine:8000';
14
+ const client = this.engine.getEngineClient();
16
15
 
17
- var client = nodeContext.get('client');
18
-
19
- if (!client) {
20
- nodeContext.set('client', new engine_client.EngineClient(engineUrl));
21
- client = nodeContext.get('client');
22
- }
23
-
24
- var eventEmitter = flowContext.get('emitter');
16
+ var eventEmitter = flowContext.get("emitter");
25
17
 
26
18
  if (!eventEmitter) {
27
- flowContext.set('emitter', new EventEmitter());
28
- eventEmitter = flowContext.get('emitter');
19
+ flowContext.set("emitter", new EventEmitter());
20
+ eventEmitter = flowContext.get("emitter");
29
21
  }
30
22
 
31
23
  const register = async () => {
@@ -34,35 +26,43 @@ module.exports = function (RED) {
34
26
  (userTaskWaitingNotification) => {
35
27
  node.send({
36
28
  payload: {
37
- flowNodeInstanceId: userTaskWaitingNotification.flowNodeInstanceId,
38
- action: 'new',
39
- type: 'usertask',
29
+ flowNodeInstanceId:
30
+ userTaskWaitingNotification.flowNodeInstanceId,
31
+ action: "new",
32
+ type: "usertask",
40
33
  },
41
34
  });
42
35
  },
43
- { identity: currentIdentity },
36
+ { identity: currentIdentity }
44
37
  );
45
38
 
46
39
  node.server.registerOnIdentityChanged(async (identity) => {
47
- client.userTasks.removeSubscription(subscription, currentIdentity);
40
+ client.userTasks.removeSubscription(
41
+ subscription,
42
+ currentIdentity
43
+ );
48
44
  currentIdentity = identity;
49
45
 
50
46
  subscription = await client.userTasks.onUserTaskWaiting(
51
47
  (userTaskWaitingNotification) => {
52
48
  node.send({
53
49
  payload: {
54
- flowNodeInstanceId: userTaskWaitingNotification.flowNodeInstanceId,
55
- action: 'new',
56
- type: 'usertask',
50
+ flowNodeInstanceId:
51
+ userTaskWaitingNotification.flowNodeInstanceId,
52
+ action: "new",
53
+ type: "usertask",
57
54
  },
58
55
  });
59
56
  },
60
- { identity: currentIdentity },
57
+ { identity: currentIdentity }
61
58
  );
62
59
  });
63
60
 
64
- node.on('close', async () => {
65
- client.userTasks.removeSubscription(subscription, currentIdentity);
61
+ node.on("close", async () => {
62
+ client.userTasks.removeSubscription(
63
+ subscription,
64
+ currentIdentity
65
+ );
66
66
  client.dispose();
67
67
  client = null;
68
68
  });
@@ -72,5 +72,5 @@ module.exports = function (RED) {
72
72
  register();
73
73
  }
74
74
  }
75
- RED.nodes.registerType('usertask-new-listener', UserTaskNewListener);
75
+ RED.nodes.registerType("usertask-new-listener", UserTaskNewListener);
76
76
  };
@@ -1,47 +1,48 @@
1
1
  <script type="text/javascript">
2
- RED.nodes.registerType('usertask-output', {
2
+ RED.nodes.registerType('usertask-output',{
3
3
  category: 'ProcessCube',
4
4
  color: '#02AFD6',
5
5
  defaults: {
6
- name: { value: '' },
7
- engine: { value: '', type: 'processcube-engine-config' },
8
- result: { value: 'payload' },
9
- result_type: { value: 'msg' },
6
+ name: {value: ""},
7
+ engine: {value: "", type: "processcube-engine-config"},
8
+ result: {value: "payload"},
9
+ result_type: {value: "msg"}
10
10
  },
11
11
  inputs: 1,
12
12
  outputs: 1,
13
- icon: 'font-awesome/fa-envelope',
14
- label: function () {
15
- return this.name || 'usertask-output';
13
+ icon: "font-awesome/fa-envelope",
14
+ label: function() {
15
+ return this.name || "usertask-output";
16
16
  },
17
- oneditprepare: function () {
18
- $('#node-input-result').typedInput({
19
- default: 'msg',
20
- types: ['msg', 'json'],
21
- });
17
+ oneditprepare: function() {
18
+ $("#node-input-result").typedInput({
19
+ default: 'msg',
20
+ types: ['msg', 'json']
21
+ });
22
22
 
23
- $('#node-input-result').typedInput('value', this.result);
24
- $('#node-input-result').typedInput('type', this.result_type);
25
- },
26
- oneditsave: function () {
27
- (this.result = $('#node-input-result').typedInput('value')),
28
- (this.result_type = $('#node-input-result').typedInput('type'));
29
- },
23
+ $("#node-input-result").typedInput('value', this.result);
24
+ $("#node-input-result").typedInput('type', this.result_type);
25
+ },
26
+ oneditsave: function() {
27
+ this.result = $("#node-input-result").typedInput('value'),
28
+ this.result_type = $("#node-input-result").typedInput('type')
29
+
30
+ }
30
31
  });
31
32
  </script>
32
33
 
33
34
  <script type="text/html" data-template-name="usertask-output">
34
35
  <div class="form-row">
35
36
  <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
36
- <input type="text" id="node-input-name" placeholder="Name" />
37
+ <input type="text" id="node-input-name" placeholder="Name">
37
38
  </div>
38
39
  <div class="form-row">
39
40
  <label for="node-input-engine"><i class="fa fa-tag"></i> Engine-URL</label>
40
- <input type="text" id="node-input-engine" placeholder="http://engine:8000" />
41
+ <input type="text" id="node-input-engine" placeholder="http://engine:8000">
41
42
  </div>
42
43
  <div class="form-row">
43
44
  <label for="node-input-result"><i class="fa fa-tag"></i> Result</label>
44
- <input type="text" id="node-input-result" />
45
+ <input type="text" id="node-input-result">
45
46
  </div>
46
47
  </script>
47
48
 
@@ -1,7 +1,7 @@
1
- const process = require('process');
2
- const EventEmitter = require('node:events');
1
+ const process = require("process");
2
+ const EventEmitter = require("node:events");
3
3
 
4
- const engine_client = require('@5minds/processcube_engine_client');
4
+ const engine_client = require("@5minds/processcube_engine_client");
5
5
 
6
6
  module.exports = function (RED) {
7
7
  function UserTaskOutput(config) {
@@ -9,34 +9,36 @@ module.exports = function (RED) {
9
9
 
10
10
  var node = this;
11
11
  var flowContext = node.context().flow;
12
- var nodeContext = node.context();
13
12
 
14
13
  this.engine = this.server = RED.nodes.getNode(config.engine);
15
14
 
16
- const engineUrl = this.engine?.url || process.env.ENGINE_URL || 'http://engine:8000';
15
+ const client = this.engine.getEngineClient();
17
16
 
18
- var client = nodeContext.get('client');
19
-
20
- if (!client) {
21
- nodeContext.set('client', new engine_client.EngineClient(engineUrl));
22
- client = nodeContext.get('client');
23
- }
24
-
25
- var eventEmitter = flowContext.get('emitter');
17
+ var eventEmitter = flowContext.get("emitter");
26
18
 
27
19
  if (!eventEmitter) {
28
- flowContext.set('emitter', new EventEmitter());
29
- eventEmitter = flowContext.get('emitter');
20
+ flowContext.set("emitter", new EventEmitter());
21
+ eventEmitter = flowContext.get("emitter");
30
22
  }
31
23
 
32
- node.on('input', function (msg) {
24
+ node.on("input", function (msg) {
33
25
  if (msg.payload.userTask) {
34
- const flowNodeInstanceId = msg.payload.userTask.flowNodeInstanceId;
26
+ const flowNodeInstanceId =
27
+ msg.payload.userTask.flowNodeInstanceId;
35
28
 
36
- const userTaskResult = RED.util.evaluateNodeProperty(config.result, config.result_type, node, msg);
29
+ const userTaskResult = RED.util.evaluateNodeProperty(
30
+ config.result,
31
+ config.result_type,
32
+ node,
33
+ msg
34
+ );
37
35
 
38
36
  client.userTasks
39
- .finishUserTask(flowNodeInstanceId, userTaskResult, node.server.identity)
37
+ .finishUserTask(
38
+ flowNodeInstanceId,
39
+ userTaskResult,
40
+ node.server.identity
41
+ )
40
42
  .then(() => {
41
43
  node.send(msg);
42
44
  })
@@ -44,10 +46,12 @@ module.exports = function (RED) {
44
46
  node.error(error);
45
47
  });
46
48
  } else {
47
- node.error(`No UserTask found in message: ${JSON.stringify(msg.payload)}`);
49
+ node.error(
50
+ `No UserTask found in message: ${JSON.stringify(msg.payload)}`
51
+ );
48
52
  }
49
53
  });
50
54
  }
51
55
 
52
- RED.nodes.registerType('usertask-output', UserTaskOutput);
56
+ RED.nodes.registerType("usertask-output", UserTaskOutput);
53
57
  };
package/.prettierrc.json DELETED
@@ -1,6 +0,0 @@
1
- {
2
- "singleQuote": true,
3
- "printWidth": 120,
4
- "arrowParens": "always",
5
- "tabWidth": 4
6
- }
@@ -1,78 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="CheckError_Definition" targetNamespace="http://bpmn.io/schema/bpmn" exporter="5Minds Studio" exporterVersion="1">
3
- <bpmn:collaboration id="Collaboration_1cidyxu" name="">
4
- <bpmn:participant id="Participant_0px403d" name="CheckError" processRef="CheckError_Process" />
5
- </bpmn:collaboration>
6
- <bpmn:process id="CheckError_Process" name="CheckError" isExecutable="true">
7
- <bpmn:laneSet>
8
- <bpmn:lane id="Lane_1xzf0d3" name="Lane">
9
- <bpmn:flowNodeRef>StartEvent_1</bpmn:flowNodeRef>
10
- <bpmn:flowNodeRef>Event_0kmuys0</bpmn:flowNodeRef>
11
- <bpmn:flowNodeRef>Activity_09zn4t5</bpmn:flowNodeRef>
12
- <bpmn:flowNodeRef>Event_1gy657v</bpmn:flowNodeRef>
13
- <bpmn:flowNodeRef>Event_1w4tivm</bpmn:flowNodeRef>
14
- </bpmn:lane>
15
- </bpmn:laneSet>
16
- <bpmn:startEvent id="StartEvent_1" name="Start">
17
- <bpmn:outgoing>Flow_14izvt0</bpmn:outgoing>
18
- </bpmn:startEvent>
19
- <bpmn:sequenceFlow id="Flow_14izvt0" sourceRef="StartEvent_1" targetRef="Activity_09zn4t5" />
20
- <bpmn:endEvent id="Event_0kmuys0">
21
- <bpmn:incoming>Flow_1ukmuxb</bpmn:incoming>
22
- </bpmn:endEvent>
23
- <bpmn:sequenceFlow id="Flow_1ukmuxb" sourceRef="Activity_09zn4t5" targetRef="Event_0kmuys0" />
24
- <bpmn:serviceTask id="Activity_09zn4t5" name="ETW with error" camunda:type="external" camunda:topic="SampleError">
25
- <bpmn:incoming>Flow_14izvt0</bpmn:incoming>
26
- <bpmn:outgoing>Flow_1ukmuxb</bpmn:outgoing>
27
- </bpmn:serviceTask>
28
- <bpmn:sequenceFlow id="Flow_0tgf785" sourceRef="Event_1w4tivm" targetRef="Event_1gy657v" />
29
- <bpmn:endEvent id="Event_1gy657v">
30
- <bpmn:incoming>Flow_0tgf785</bpmn:incoming>
31
- </bpmn:endEvent>
32
- <bpmn:boundaryEvent id="Event_1w4tivm" attachedToRef="Activity_09zn4t5">
33
- <bpmn:outgoing>Flow_0tgf785</bpmn:outgoing>
34
- <bpmn:errorEventDefinition id="ErrorEventDefinition_0nesf0j" />
35
- </bpmn:boundaryEvent>
36
- </bpmn:process>
37
- <bpmndi:BPMNDiagram id="BPMNDiagram_1">
38
- <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_1cidyxu">
39
- <bpmndi:BPMNShape id="Participant_0px403d_di" bpmnElement="Participant_0px403d" isHorizontal="true">
40
- <dc:Bounds x="5" y="4" width="525" height="346" />
41
- </bpmndi:BPMNShape>
42
- <bpmndi:BPMNShape id="Lane_1xzf0d3_di" bpmnElement="Lane_1xzf0d3" isHorizontal="true">
43
- <dc:Bounds x="35" y="4" width="495" height="346" />
44
- </bpmndi:BPMNShape>
45
- <bpmndi:BPMNShape id="StartEvent_1_di" bpmnElement="StartEvent_1">
46
- <dc:Bounds x="92" y="152" width="36" height="36" />
47
- <bpmndi:BPMNLabel>
48
- <dc:Bounds x="98" y="195" width="24" height="14" />
49
- </bpmndi:BPMNLabel>
50
- </bpmndi:BPMNShape>
51
- <bpmndi:BPMNShape id="Event_0kmuys0_di" bpmnElement="Event_0kmuys0">
52
- <dc:Bounds x="332" y="152" width="36" height="36" />
53
- </bpmndi:BPMNShape>
54
- <bpmndi:BPMNShape id="Activity_04h2kr7_di" bpmnElement="Activity_09zn4t5">
55
- <dc:Bounds x="180" y="130" width="100" height="80" />
56
- </bpmndi:BPMNShape>
57
- <bpmndi:BPMNShape id="Event_1gy657v_di" bpmnElement="Event_1gy657v">
58
- <dc:Bounds x="362" y="272" width="36" height="36" />
59
- </bpmndi:BPMNShape>
60
- <bpmndi:BPMNShape id="Event_0s7ur9g_di" bpmnElement="Event_1w4tivm">
61
- <dc:Bounds x="222" y="192" width="36" height="36" />
62
- </bpmndi:BPMNShape>
63
- <bpmndi:BPMNEdge id="Flow_14izvt0_di" bpmnElement="Flow_14izvt0">
64
- <di:waypoint x="128" y="170" />
65
- <di:waypoint x="180" y="170" />
66
- </bpmndi:BPMNEdge>
67
- <bpmndi:BPMNEdge id="Flow_1ukmuxb_di" bpmnElement="Flow_1ukmuxb">
68
- <di:waypoint x="280" y="170" />
69
- <di:waypoint x="332" y="170" />
70
- </bpmndi:BPMNEdge>
71
- <bpmndi:BPMNEdge id="Flow_0tgf785_di" bpmnElement="Flow_0tgf785">
72
- <di:waypoint x="240" y="228" />
73
- <di:waypoint x="240" y="290" />
74
- <di:waypoint x="362" y="290" />
75
- </bpmndi:BPMNEdge>
76
- </bpmndi:BPMNPlane>
77
- </bpmndi:BPMNDiagram>
78
- </bpmn:definitions>