@nanobpm/nano-workforce 0.171.1 → 0.171.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9,12 +9,9 @@
9
9
  <nano:extend name="pr" type="string" optional="true" />
10
10
  <nano:extend name="summary" type="string" optional="true" />
11
11
  </nano:shape>
12
- <nano:shape id="RecordFeatureEscalationIn" name="Record feature escalation — input">
13
- <nano:extend name="featureKey" type="string" />
14
- <nano:extend name="question" type="string" optional="true" />
15
- </nano:shape>
16
12
  <nano:shape id="RecordFeatureImplementingIn" name="Record feature implementing — input">
17
- <nano:extend name="featureKey" type="string" />
13
+ <nano:extend name="featureKey" type="string" optional="true" />
14
+ <nano:extend name="subjectKey" type="string" optional="true" />
18
15
  </nano:shape>
19
16
  <nano:shape id="ConvergeFeatureIn" name="Converge feature PR — input">
20
17
  <nano:extend name="featureKey" type="string" />
@@ -172,23 +169,28 @@
172
169
  <bpmn:incoming>f_readiness_done</bpmn:incoming>
173
170
  <bpmn:outgoing>f_toImplement</bpmn:outgoing>
174
171
  </bpmn:serviceTask>
175
- <bpmn:serviceTask id="implement-task" name="Implement (agent)">
172
+ <bpmn:callActivity id="implement" name="Implement cell">
176
173
  <bpmn:extensionElements>
177
- <zeebe:taskDefinition type="senior:feature" />
178
- <zeebe:linkedResources>
179
- <zeebe:linkedResource resourceId="prompts/feature.md" bindingType="latest" resourceType="GenericScript" linkName="prompt" />
180
- </zeebe:linkedResources>
174
+ <zeebe:calledElement processId="implement-cell" />
181
175
  <zeebe:ioMapping>
182
- <zeebe:input source="=&#34;&#10;&#10;---&#10;&#10;&#34; + task.prompt + (if (baseBranchBrief = null) then &#34;&#34; else baseBranchBrief) + (if (resolvedArtifacts = null or count(resolvedArtifacts[item != null]) = 0) then &#34;&#34; else (&#34;&#10;&#10;---&#10;&#10;**Bound upstream readiness (intake gate).** This feature was scheduled to wait until an upstream landed and published. Build/install/clone against EXACTLY these resolved published versions (the ones first carrying the awaited capability), and bump the consumer dependency to them — never merely the newest:&#10;&#10;&#34; + string join(resolvedArtifacts[item != null], &#34;&#10;&#34;))) + (if (customInstructions = null) then &#34;&#34; else &#34;&#10;&#10;---&#10;&#10;## Operator custom instructions&#10;&#10;The operator supplied these instructions for this run — follow them:&#10;&#10;&#34; + customInstructions)" target="appendPrompt" />
176
+ <zeebe:input source="=task" target="task" />
177
+ <zeebe:input source="=if (is defined(baseBranchBrief)) then baseBranchBrief else null" target="baseBranchBrief" />
178
+ <zeebe:input source="=if (is defined(resolvedArtifacts)) then resolvedArtifacts else null" target="resolvedArtifacts" />
179
+ <zeebe:input source="=if (is defined(customInstructions)) then customInstructions else null" target="customInstructions" />
183
180
  <zeebe:input source="=if (is defined(transcriptUrlBase)) then transcriptUrlBase else null" target="transcriptUrlBase" />
181
+ <zeebe:input source="=if (is defined(escalationAssignee)) then escalationAssignee else null" target="escalationAssignee" />
182
+ <zeebe:input source="=escalationSlaTimeout" target="escalationSlaTimeout" />
183
+ <zeebe:input source="=featureKey" target="subjectKey" />
184
184
  <zeebe:output source="=status" target="status" />
185
- <zeebe:output source="=question" target="question" />
185
+ <zeebe:output source="=if (is defined(summary)) then summary else null" target="summary" />
186
+ <zeebe:output source="=if (is defined(pr)) then pr else null" target="pr" />
187
+ <zeebe:output source="=if (is defined(question)) then question else null" target="question" />
186
188
  <zeebe:output source="=if (is defined(transcriptUrl)) then transcriptUrl else null" target="transcriptUrl" />
187
189
  </zeebe:ioMapping>
188
190
  </bpmn:extensionElements>
189
191
  <bpmn:incoming>f_implementing</bpmn:incoming>
190
- <bpmn:outgoing>w_toGw</bpmn:outgoing>
191
- </bpmn:serviceTask>
192
+ <bpmn:outgoing>w_toRecord</bpmn:outgoing>
193
+ </bpmn:callActivity>
192
194
  <bpmn:serviceTask id="record-feature-implementing" name="Record implementing">
193
195
  <bpmn:extensionElements>
194
196
  <zeebe:taskDefinition type="pr.record-feature-implementing" />
@@ -197,44 +199,8 @@
197
199
  </zeebe:properties>
198
200
  </bpmn:extensionElements>
199
201
  <bpmn:incoming>f_toImplement</bpmn:incoming>
200
- <bpmn:incoming>w_answerLoop</bpmn:incoming>
201
202
  <bpmn:outgoing>f_implementing</bpmn:outgoing>
202
203
  </bpmn:serviceTask>
203
- <bpmn:exclusiveGateway id="w_gw" name="escalated?" default="w_done">
204
- <bpmn:incoming>w_toGw</bpmn:incoming>
205
- <bpmn:outgoing>w_escalate</bpmn:outgoing>
206
- <bpmn:outgoing>w_done</bpmn:outgoing>
207
- </bpmn:exclusiveGateway>
208
- <bpmn:serviceTask id="record-feature-escalation" name="Record escalation">
209
- <bpmn:extensionElements>
210
- <zeebe:taskDefinition type="pr.record-feature-escalation" />
211
- <zeebe:properties>
212
- <zeebe:property name="io.nanobpm.dataEnvelope.in" value="RecordFeatureEscalationIn" />
213
- </zeebe:properties>
214
- </bpmn:extensionElements>
215
- <bpmn:incoming>w_escalate</bpmn:incoming>
216
- <bpmn:outgoing>w_toEscalationTask</bpmn:outgoing>
217
- </bpmn:serviceTask>
218
- <bpmn:userTask id="feature-escalation" name="Task escalation (human)">
219
- <bpmn:extensionElements>
220
- <zeebe:formDefinition formId="feature-escalation" />
221
- <zeebe:userTask />
222
- <zeebe:assignmentDefinition candidateGroups="operators" assignee="=if (is defined(escalationAssignee) and escalationAssignee != null and trim(string(escalationAssignee)) != &#34;&#34;) then escalationAssignee else null" />
223
- </bpmn:extensionElements>
224
- <bpmn:incoming>w_toEscalationTask</bpmn:incoming>
225
- <bpmn:outgoing>w_toAnswerGw</bpmn:outgoing>
226
- </bpmn:userTask>
227
- <bpmn:boundaryEvent id="be_feature_sla" name="SLA elapsed" attachedToRef="feature-escalation">
228
- <bpmn:outgoing>w_sla</bpmn:outgoing>
229
- <bpmn:timerEventDefinition id="ted_feature_sla">
230
- <bpmn:timeDuration xsi:type="bpmn:tFormalExpression">=escalationSlaTimeout</bpmn:timeDuration>
231
- </bpmn:timerEventDefinition>
232
- </bpmn:boundaryEvent>
233
- <bpmn:exclusiveGateway id="w_gw_answer" name="answer?" default="w_abandon">
234
- <bpmn:incoming>w_toAnswerGw</bpmn:incoming>
235
- <bpmn:outgoing>w_answerLoop</bpmn:outgoing>
236
- <bpmn:outgoing>w_abandon</bpmn:outgoing>
237
- </bpmn:exclusiveGateway>
238
204
  <bpmn:serviceTask id="record-feature" name="Record result">
239
205
  <bpmn:extensionElements>
240
206
  <zeebe:taskDefinition type="pr.record-feature" />
@@ -242,9 +208,7 @@
242
208
  <zeebe:property name="io.nanobpm.dataEnvelope.in" value="RecordFeatureIn" />
243
209
  </zeebe:properties>
244
210
  </bpmn:extensionElements>
245
- <bpmn:incoming>w_done</bpmn:incoming>
246
- <bpmn:incoming>w_abandon</bpmn:incoming>
247
- <bpmn:incoming>w_sla</bpmn:incoming>
211
+ <bpmn:incoming>w_toRecord</bpmn:incoming>
248
212
  <bpmn:outgoing>f_toBlockedGw</bpmn:outgoing>
249
213
  </bpmn:serviceTask>
250
214
  <bpmn:exclusiveGateway id="gw-blocked" name="blocked?" default="f_notBlocked">
@@ -301,19 +265,8 @@
301
265
  <bpmn:sequenceFlow id="f_readiness_skip" name="no gate" sourceRef="gw-readiness" targetRef="ensure-base-branch" />
302
266
  <bpmn:sequenceFlow id="f_readiness_done" sourceRef="readiness-preflight" targetRef="ensure-base-branch" />
303
267
  <bpmn:sequenceFlow id="f_toImplement" sourceRef="ensure-base-branch" targetRef="record-feature-implementing" />
304
- <bpmn:sequenceFlow id="f_implementing" sourceRef="record-feature-implementing" targetRef="implement-task" />
305
- <bpmn:sequenceFlow id="w_toGw" sourceRef="implement-task" targetRef="w_gw" />
306
- <bpmn:sequenceFlow id="w_escalate" name="escalated" sourceRef="w_gw" targetRef="record-feature-escalation">
307
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=status = "escalated" and question != null and trim(question) != ""</bpmn:conditionExpression>
308
- </bpmn:sequenceFlow>
309
- <bpmn:sequenceFlow id="w_toEscalationTask" sourceRef="record-feature-escalation" targetRef="feature-escalation" />
310
- <bpmn:sequenceFlow id="w_done" name="done" sourceRef="w_gw" targetRef="record-feature" />
311
- <bpmn:sequenceFlow id="w_toAnswerGw" sourceRef="feature-escalation" targetRef="w_gw_answer" />
312
- <bpmn:sequenceFlow id="w_answerLoop" name="answer" sourceRef="w_gw_answer" targetRef="record-feature-implementing">
313
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=resolution = "answer"</bpmn:conditionExpression>
314
- </bpmn:sequenceFlow>
315
- <bpmn:sequenceFlow id="w_abandon" name="abandon" sourceRef="w_gw_answer" targetRef="record-feature" />
316
- <bpmn:sequenceFlow id="w_sla" name="SLA auto-abandon" sourceRef="be_feature_sla" targetRef="record-feature" />
268
+ <bpmn:sequenceFlow id="f_implementing" sourceRef="record-feature-implementing" targetRef="implement" />
269
+ <bpmn:sequenceFlow id="w_toRecord" sourceRef="implement" targetRef="record-feature" />
317
270
  <bpmn:sequenceFlow id="f_toBlockedGw" sourceRef="record-feature" targetRef="gw-blocked" />
318
271
  <bpmn:sequenceFlow id="f_blocked" name="blocked" sourceRef="gw-blocked" targetRef="feature-blocked">
319
272
  <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=featureStatus = "blocked"</bpmn:conditionExpression>
@@ -347,64 +300,40 @@
347
300
  <bpmndi:BPMNShape id="BPMNShape_ensure-base-branch" bpmnElement="ensure-base-branch">
348
301
  <dc:Bounds x="566" y="80" width="100" height="80" />
349
302
  </bpmndi:BPMNShape>
350
- <bpmndi:BPMNShape id="BPMNShape_implement-task" bpmnElement="implement-task">
303
+ <bpmndi:BPMNShape id="BPMNShape_implement" bpmnElement="implement">
351
304
  <dc:Bounds x="966" y="80" width="100" height="80" />
352
305
  </bpmndi:BPMNShape>
353
306
  <bpmndi:BPMNShape id="BPMNShape_record-feature-implementing" bpmnElement="record-feature-implementing">
354
307
  <dc:Bounds x="766" y="80" width="100" height="80" />
355
308
  </bpmndi:BPMNShape>
356
- <bpmndi:BPMNShape id="BPMNShape_w_gw" bpmnElement="w_gw" isMarkerVisible="true">
357
- <dc:Bounds x="1166" y="95" width="50" height="50" />
358
- <bpmndi:BPMNLabel>
359
- <dc:Bounds x="1154" y="76" width="74" height="14" />
360
- </bpmndi:BPMNLabel>
361
- </bpmndi:BPMNShape>
362
- <bpmndi:BPMNShape id="BPMNShape_record-feature-escalation" bpmnElement="record-feature-escalation">
363
- <dc:Bounds x="1316" y="240" width="100" height="80" />
364
- </bpmndi:BPMNShape>
365
- <bpmndi:BPMNShape id="BPMNShape_feature-escalation" bpmnElement="feature-escalation">
366
- <dc:Bounds x="1516" y="240" width="100" height="80" />
367
- </bpmndi:BPMNShape>
368
- <bpmndi:BPMNShape id="BPMNShape_w_gw_answer" bpmnElement="w_gw_answer" isMarkerVisible="true">
369
- <dc:Bounds x="1716" y="255" width="50" height="50" />
370
- <bpmndi:BPMNLabel>
371
- <dc:Bounds x="1713" y="236" width="56" height="14" />
372
- </bpmndi:BPMNLabel>
373
- </bpmndi:BPMNShape>
374
309
  <bpmndi:BPMNShape id="BPMNShape_record-feature" bpmnElement="record-feature">
375
- <dc:Bounds x="1866" y="80" width="100" height="80" />
310
+ <dc:Bounds x="1166" y="80" width="100" height="80" />
376
311
  </bpmndi:BPMNShape>
377
312
  <bpmndi:BPMNShape id="BPMNShape_gw-blocked" bpmnElement="gw-blocked" isMarkerVisible="true">
378
- <dc:Bounds x="2066" y="95" width="50" height="50" />
313
+ <dc:Bounds x="1366" y="95" width="50" height="50" />
379
314
  <bpmndi:BPMNLabel>
380
- <dc:Bounds x="2061" y="76" width="60" height="14" />
315
+ <dc:Bounds x="1361" y="76" width="60" height="14" />
381
316
  </bpmndi:BPMNLabel>
382
317
  </bpmndi:BPMNShape>
383
318
  <bpmndi:BPMNShape id="BPMNShape_feature-blocked" bpmnElement="feature-blocked">
384
- <dc:Bounds x="2216" y="400" width="100" height="80" />
319
+ <dc:Bounds x="1516" y="400" width="100" height="80" />
385
320
  </bpmndi:BPMNShape>
386
321
  <bpmndi:BPMNShape id="BPMNShape_record-blocked-ack" bpmnElement="record-blocked-ack">
387
- <dc:Bounds x="2416" y="400" width="100" height="80" />
322
+ <dc:Bounds x="1716" y="400" width="100" height="80" />
388
323
  </bpmndi:BPMNShape>
389
324
  <bpmndi:BPMNShape id="BPMNShape_gw-converge" bpmnElement="gw-converge" isMarkerVisible="true">
390
- <dc:Bounds x="2241" y="95" width="50" height="50" />
325
+ <dc:Bounds x="1541" y="95" width="50" height="50" />
391
326
  <bpmndi:BPMNLabel>
392
- <dc:Bounds x="2233" y="76" width="67" height="14" />
327
+ <dc:Bounds x="1533" y="76" width="67" height="14" />
393
328
  </bpmndi:BPMNLabel>
394
329
  </bpmndi:BPMNShape>
395
330
  <bpmndi:BPMNShape id="BPMNShape_converge" bpmnElement="converge">
396
- <dc:Bounds x="2416" y="240" width="100" height="80" />
331
+ <dc:Bounds x="1716" y="240" width="100" height="80" />
397
332
  </bpmndi:BPMNShape>
398
333
  <bpmndi:BPMNShape id="BPMNShape_End" bpmnElement="End">
399
- <dc:Bounds x="2616" y="102" width="36" height="36" />
400
- <bpmndi:BPMNLabel>
401
- <dc:Bounds x="2617" y="83" width="34" height="14" />
402
- </bpmndi:BPMNLabel>
403
- </bpmndi:BPMNShape>
404
- <bpmndi:BPMNShape id="BPMNShape_be_feature_sla" bpmnElement="be_feature_sla">
405
- <dc:Bounds x="1548" y="302" width="36" height="36" />
334
+ <dc:Bounds x="1916" y="102" width="36" height="36" />
406
335
  <bpmndi:BPMNLabel>
407
- <dc:Bounds x="1524" y="383" width="84" height="14" />
336
+ <dc:Bounds x="1917" y="83" width="34" height="14" />
408
337
  </bpmndi:BPMNLabel>
409
338
  </bpmndi:BPMNShape>
410
339
  <bpmndi:BPMNEdge id="BPMNEdge_f_toReadinessGw" bpmnElement="f_toReadinessGw">
@@ -426,41 +355,26 @@
426
355
  <di:waypoint x="866" y="120" />
427
356
  <di:waypoint x="966" y="120" />
428
357
  </bpmndi:BPMNEdge>
429
- <bpmndi:BPMNEdge id="BPMNEdge_w_toGw" bpmnElement="w_toGw">
358
+ <bpmndi:BPMNEdge id="BPMNEdge_w_toRecord" bpmnElement="w_toRecord">
430
359
  <di:waypoint x="1066" y="120" />
431
360
  <di:waypoint x="1166" y="120" />
432
361
  </bpmndi:BPMNEdge>
433
- <bpmndi:BPMNEdge id="BPMNEdge_w_done" bpmnElement="w_done">
434
- <di:waypoint x="1216" y="120" />
435
- <di:waypoint x="1866" y="120" />
436
- <bpmndi:BPMNLabel>
437
- <dc:Bounds x="1525" y="98" width="32" height="14" />
438
- </bpmndi:BPMNLabel>
439
- </bpmndi:BPMNEdge>
440
362
  <bpmndi:BPMNEdge id="BPMNEdge_f_toBlockedGw" bpmnElement="f_toBlockedGw">
441
- <di:waypoint x="1966" y="120" />
442
- <di:waypoint x="2066" y="120" />
363
+ <di:waypoint x="1266" y="120" />
364
+ <di:waypoint x="1366" y="120" />
443
365
  </bpmndi:BPMNEdge>
444
366
  <bpmndi:BPMNEdge id="BPMNEdge_f_notBlocked" bpmnElement="f_notBlocked">
445
- <di:waypoint x="2116" y="120" />
446
- <di:waypoint x="2241" y="120" />
367
+ <di:waypoint x="1416" y="120" />
368
+ <di:waypoint x="1541" y="120" />
447
369
  <bpmndi:BPMNLabel>
448
- <dc:Bounds x="2140" y="98" width="78" height="14" />
370
+ <dc:Bounds x="1440" y="98" width="78" height="14" />
449
371
  </bpmndi:BPMNLabel>
450
372
  </bpmndi:BPMNEdge>
451
373
  <bpmndi:BPMNEdge id="BPMNEdge_f_noConverge" bpmnElement="f_noConverge">
452
- <di:waypoint x="2291" y="120" />
453
- <di:waypoint x="2616" y="120" />
454
- <bpmndi:BPMNLabel>
455
- <dc:Bounds x="2418" y="98" width="71" height="14" />
456
- </bpmndi:BPMNLabel>
457
- </bpmndi:BPMNEdge>
458
- <bpmndi:BPMNEdge id="BPMNEdge_w_abandon" bpmnElement="w_abandon">
459
- <di:waypoint x="1766" y="280" />
460
- <di:waypoint x="1916" y="280" />
461
- <di:waypoint x="1916" y="160" />
374
+ <di:waypoint x="1591" y="120" />
375
+ <di:waypoint x="1916" y="120" />
462
376
  <bpmndi:BPMNLabel>
463
- <dc:Bounds x="1815" y="258" width="53" height="14" />
377
+ <dc:Bounds x="1718" y="98" width="71" height="14" />
464
378
  </bpmndi:BPMNLabel>
465
379
  </bpmndi:BPMNEdge>
466
380
  <bpmndi:BPMNEdge id="BPMNEdge_f_readiness_gate" bpmnElement="f_readiness_gate">
@@ -471,28 +385,20 @@
471
385
  <dc:Bounds x="246" y="206" width="39" height="14" />
472
386
  </bpmndi:BPMNLabel>
473
387
  </bpmndi:BPMNEdge>
474
- <bpmndi:BPMNEdge id="BPMNEdge_w_escalate" bpmnElement="w_escalate">
475
- <di:waypoint x="1191" y="145" />
476
- <di:waypoint x="1191" y="280" />
477
- <di:waypoint x="1316" y="280" />
478
- <bpmndi:BPMNLabel>
479
- <dc:Bounds x="1196" y="206" width="67" height="14" />
480
- </bpmndi:BPMNLabel>
481
- </bpmndi:BPMNEdge>
482
388
  <bpmndi:BPMNEdge id="BPMNEdge_f_blocked" bpmnElement="f_blocked">
483
- <di:waypoint x="2091" y="145" />
484
- <di:waypoint x="2091" y="440" />
485
- <di:waypoint x="2216" y="440" />
389
+ <di:waypoint x="1391" y="145" />
390
+ <di:waypoint x="1391" y="440" />
391
+ <di:waypoint x="1516" y="440" />
486
392
  <bpmndi:BPMNLabel>
487
- <dc:Bounds x="2096" y="286" width="53" height="14" />
393
+ <dc:Bounds x="1396" y="286" width="53" height="14" />
488
394
  </bpmndi:BPMNLabel>
489
395
  </bpmndi:BPMNEdge>
490
396
  <bpmndi:BPMNEdge id="BPMNEdge_f_converge" bpmnElement="f_converge">
491
- <di:waypoint x="2266" y="145" />
492
- <di:waypoint x="2266" y="280" />
493
- <di:waypoint x="2416" y="280" />
397
+ <di:waypoint x="1566" y="145" />
398
+ <di:waypoint x="1566" y="280" />
399
+ <di:waypoint x="1716" y="280" />
494
400
  <bpmndi:BPMNLabel>
495
- <dc:Bounds x="2271" y="206" width="60" height="14" />
401
+ <dc:Bounds x="1571" y="206" width="60" height="14" />
496
402
  </bpmndi:BPMNLabel>
497
403
  </bpmndi:BPMNEdge>
498
404
  <bpmndi:BPMNEdge id="BPMNEdge_f_readiness_done" bpmnElement="f_readiness_done">
@@ -500,45 +406,19 @@
500
406
  <di:waypoint x="616" y="280" />
501
407
  <di:waypoint x="616" y="160" />
502
408
  </bpmndi:BPMNEdge>
503
- <bpmndi:BPMNEdge id="BPMNEdge_w_toEscalationTask" bpmnElement="w_toEscalationTask">
504
- <di:waypoint x="1416" y="280" />
505
- <di:waypoint x="1516" y="280" />
506
- </bpmndi:BPMNEdge>
507
- <bpmndi:BPMNEdge id="BPMNEdge_w_toAnswerGw" bpmnElement="w_toAnswerGw">
508
- <di:waypoint x="1616" y="280" />
509
- <di:waypoint x="1716" y="280" />
510
- </bpmndi:BPMNEdge>
511
409
  <bpmndi:BPMNEdge id="BPMNEdge_f_toBlockedAck" bpmnElement="f_toBlockedAck">
512
- <di:waypoint x="2316" y="440" />
513
- <di:waypoint x="2416" y="440" />
410
+ <di:waypoint x="1616" y="440" />
411
+ <di:waypoint x="1716" y="440" />
514
412
  </bpmndi:BPMNEdge>
515
413
  <bpmndi:BPMNEdge id="BPMNEdge_f_blockedEnd" bpmnElement="f_blockedEnd">
516
- <di:waypoint x="2516" y="440" />
517
- <di:waypoint x="2634" y="440" />
518
- <di:waypoint x="2634" y="138" />
414
+ <di:waypoint x="1816" y="440" />
415
+ <di:waypoint x="1934" y="440" />
416
+ <di:waypoint x="1934" y="138" />
519
417
  </bpmndi:BPMNEdge>
520
418
  <bpmndi:BPMNEdge id="BPMNEdge_f_toEndConverged" bpmnElement="f_toEndConverged">
521
- <di:waypoint x="2516" y="280" />
522
- <di:waypoint x="2634" y="280" />
523
- <di:waypoint x="2634" y="138" />
524
- </bpmndi:BPMNEdge>
525
- <bpmndi:BPMNEdge id="BPMNEdge_w_sla" bpmnElement="w_sla">
526
- <di:waypoint x="1566" y="338" />
527
- <di:waypoint x="1566" y="358" />
528
- <di:waypoint x="1916" y="358" />
529
- <di:waypoint x="1916" y="160" />
530
- <bpmndi:BPMNLabel>
531
- <dc:Bounds x="1757" y="325" width="88" height="28" />
532
- </bpmndi:BPMNLabel>
533
- </bpmndi:BPMNEdge>
534
- <bpmndi:BPMNEdge id="BPMNEdge_w_answerLoop" bpmnElement="w_answerLoop">
535
- <di:waypoint x="1741" y="305" />
536
- <di:waypoint x="1741" y="360" />
537
- <di:waypoint x="816" y="360" />
538
- <di:waypoint x="816" y="160" />
539
- <bpmndi:BPMNLabel>
540
- <dc:Bounds x="1254" y="338" width="49" height="14" />
541
- </bpmndi:BPMNLabel>
419
+ <di:waypoint x="1816" y="280" />
420
+ <di:waypoint x="1934" y="280" />
421
+ <di:waypoint x="1934" y="138" />
542
422
  </bpmndi:BPMNEdge>
543
423
  </bpmndi:BPMNPlane>
544
424
  </bpmndi:BPMNDiagram>
@@ -1,6 +1,15 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:zeebe="http://camunda.org/schema/zeebe/1.0" xmlns:nano="https://nanobpm.io/schema/shapes/1.0" id="Definitions_nano_workforce_implement_cell" targetNamespace="http://nanobpm.io/nano-workforce">
3
3
  <bpmn:process id="implement-cell" name="Implement cell" isExecutable="true">
4
+ <bpmn:extensionElements>
5
+ <nano:shapes>
6
+ <nano:shape id="RecordEscalationIn" name="Record cell escalation — input">
7
+ <nano:extend name="subjectKey" type="string" />
8
+ <nano:extend name="status" type="string" optional="true" />
9
+ <nano:extend name="question" type="string" optional="true" />
10
+ </nano:shape>
11
+ </nano:shapes>
12
+ </bpmn:extensionElements>
4
13
  <bpmn:startEvent id="Start" name="Task">
5
14
  <bpmn:outgoing>ic_toImplement</bpmn:outgoing>
6
15
  </bpmn:startEvent>
@@ -29,16 +38,46 @@
29
38
  </bpmn:exclusiveGateway>
30
39
  <bpmn:callActivity id="escalate" name="Human escalation">
31
40
  <bpmn:extensionElements>
32
- <zeebe:calledElement processId="human-escalation" propagateAllChildVariables="true" />
41
+ <zeebe:calledElement processId="human-escalation" />
42
+ <zeebe:ioMapping>
43
+ <zeebe:input source="=question" target="question" />
44
+ <zeebe:input source="=if (is defined(escalationAssignee)) then escalationAssignee else null" target="escalationAssignee" />
45
+ <zeebe:input source="=escalationSlaTimeout" target="escalationSlaTimeout" />
46
+ <zeebe:output source="=resolution" target="resolution" />
47
+ <zeebe:output source="=if (is defined(answer)) then answer else null" target="answer" />
48
+ </zeebe:ioMapping>
33
49
  </bpmn:extensionElements>
34
- <bpmn:incoming>ic_escalate</bpmn:incoming>
50
+ <bpmn:incoming>ic_toEscalate</bpmn:incoming>
35
51
  <bpmn:outgoing>ic_toAnswerGw</bpmn:outgoing>
36
52
  </bpmn:callActivity>
53
+ <bpmn:serviceTask id="record-escalation" name="Record escalation">
54
+ <bpmn:extensionElements>
55
+ <zeebe:taskDefinition type="pr.record-feature-escalation" />
56
+ <zeebe:properties>
57
+ <zeebe:property name="io.nanobpm.dataEnvelope.in" value="RecordEscalationIn" />
58
+ </zeebe:properties>
59
+ <zeebe:ioMapping>
60
+ <zeebe:output source="=question" target="question" />
61
+ </zeebe:ioMapping>
62
+ </bpmn:extensionElements>
63
+ <bpmn:incoming>ic_escalate</bpmn:incoming>
64
+ <bpmn:outgoing>ic_toEscalate</bpmn:outgoing>
65
+ </bpmn:serviceTask>
37
66
  <bpmn:exclusiveGateway id="ic_gw_answer" name="answer?" default="ic_abandon">
38
67
  <bpmn:incoming>ic_toAnswerGw</bpmn:incoming>
39
68
  <bpmn:outgoing>ic_answerLoop</bpmn:outgoing>
40
69
  <bpmn:outgoing>ic_abandon</bpmn:outgoing>
41
70
  </bpmn:exclusiveGateway>
71
+ <bpmn:serviceTask id="record-implementing" name="Record implementing (reset)">
72
+ <bpmn:extensionElements>
73
+ <zeebe:taskDefinition type="pr.record-feature-implementing" />
74
+ <zeebe:properties>
75
+ <zeebe:property name="io.nanobpm.dataEnvelope.in" value="RecordFeatureImplementingIn" />
76
+ </zeebe:properties>
77
+ </bpmn:extensionElements>
78
+ <bpmn:incoming>ic_answerLoop</bpmn:incoming>
79
+ <bpmn:outgoing>ic_reImplement</bpmn:outgoing>
80
+ </bpmn:serviceTask>
42
81
  <bpmn:endEvent id="ic_end" name="Task done">
43
82
  <bpmn:incoming>ic_done</bpmn:incoming>
44
83
  <bpmn:incoming>ic_abandon</bpmn:incoming>
@@ -48,11 +87,13 @@
48
87
  <bpmn:sequenceFlow id="ic_done" name="done" sourceRef="ic_gw" targetRef="ic_end">
49
88
  <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=status = "opened" or status = "blocked" or status = "skipped"</bpmn:conditionExpression>
50
89
  </bpmn:sequenceFlow>
51
- <bpmn:sequenceFlow id="ic_escalate" name="escalated" sourceRef="ic_gw" targetRef="escalate" />
90
+ <bpmn:sequenceFlow id="ic_escalate" name="escalated" sourceRef="ic_gw" targetRef="record-escalation" />
91
+ <bpmn:sequenceFlow id="ic_toEscalate" sourceRef="record-escalation" targetRef="escalate" />
52
92
  <bpmn:sequenceFlow id="ic_toAnswerGw" sourceRef="escalate" targetRef="ic_gw_answer" />
53
- <bpmn:sequenceFlow id="ic_answerLoop" name="answer" sourceRef="ic_gw_answer" targetRef="implement-task">
93
+ <bpmn:sequenceFlow id="ic_answerLoop" name="answer" sourceRef="ic_gw_answer" targetRef="record-implementing">
54
94
  <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=resolution = "answer"</bpmn:conditionExpression>
55
95
  </bpmn:sequenceFlow>
96
+ <bpmn:sequenceFlow id="ic_reImplement" sourceRef="record-implementing" targetRef="implement-task" />
56
97
  <bpmn:sequenceFlow id="ic_abandon" name="abandon" sourceRef="ic_gw_answer" targetRef="ic_end" />
57
98
  </bpmn:process>
58
99
  <bpmndi:BPMNDiagram id="BPMNDiagram_implement-cell">
@@ -73,18 +114,24 @@
73
114
  </bpmndi:BPMNLabel>
74
115
  </bpmndi:BPMNShape>
75
116
  <bpmndi:BPMNShape id="BPMNShape_escalate" bpmnElement="escalate">
117
+ <dc:Bounds x="766" y="80" width="100" height="80" />
118
+ </bpmndi:BPMNShape>
119
+ <bpmndi:BPMNShape id="BPMNShape_record-escalation" bpmnElement="record-escalation">
76
120
  <dc:Bounds x="566" y="80" width="100" height="80" />
77
121
  </bpmndi:BPMNShape>
78
122
  <bpmndi:BPMNShape id="BPMNShape_ic_gw_answer" bpmnElement="ic_gw_answer" isMarkerVisible="true">
79
- <dc:Bounds x="766" y="95" width="50" height="50" />
123
+ <dc:Bounds x="966" y="95" width="50" height="50" />
80
124
  <bpmndi:BPMNLabel>
81
- <dc:Bounds x="763" y="76" width="56" height="14" />
125
+ <dc:Bounds x="963" y="76" width="56" height="14" />
82
126
  </bpmndi:BPMNLabel>
83
127
  </bpmndi:BPMNShape>
128
+ <bpmndi:BPMNShape id="BPMNShape_record-implementing" bpmnElement="record-implementing">
129
+ <dc:Bounds x="1116" y="240" width="100" height="80" />
130
+ </bpmndi:BPMNShape>
84
131
  <bpmndi:BPMNShape id="BPMNShape_ic_end" bpmnElement="ic_end">
85
- <dc:Bounds x="916" y="102" width="36" height="36" />
132
+ <dc:Bounds x="1148" y="102" width="36" height="36" />
86
133
  <bpmndi:BPMNLabel>
87
- <dc:Bounds x="901" y="83" width="66" height="14" />
134
+ <dc:Bounds x="1133" y="83" width="66" height="14" />
88
135
  </bpmndi:BPMNLabel>
89
136
  </bpmndi:BPMNShape>
90
137
  <bpmndi:BPMNEdge id="BPMNEdge_ic_toImplement" bpmnElement="ic_toImplement">
@@ -102,34 +149,43 @@
102
149
  <dc:Bounds x="483" y="128" width="67" height="14" />
103
150
  </bpmndi:BPMNLabel>
104
151
  </bpmndi:BPMNEdge>
105
- <bpmndi:BPMNEdge id="BPMNEdge_ic_toAnswerGw" bpmnElement="ic_toAnswerGw">
152
+ <bpmndi:BPMNEdge id="BPMNEdge_ic_toEscalate" bpmnElement="ic_toEscalate">
106
153
  <di:waypoint x="666" y="120" />
107
154
  <di:waypoint x="766" y="120" />
108
155
  </bpmndi:BPMNEdge>
156
+ <bpmndi:BPMNEdge id="BPMNEdge_ic_toAnswerGw" bpmnElement="ic_toAnswerGw">
157
+ <di:waypoint x="866" y="120" />
158
+ <di:waypoint x="966" y="120" />
159
+ </bpmndi:BPMNEdge>
109
160
  <bpmndi:BPMNEdge id="BPMNEdge_ic_abandon" bpmnElement="ic_abandon">
110
- <di:waypoint x="816" y="120" />
111
- <di:waypoint x="916" y="120" />
161
+ <di:waypoint x="1016" y="120" />
162
+ <di:waypoint x="1148" y="120" />
112
163
  <bpmndi:BPMNLabel>
113
- <dc:Bounds x="840" y="128" width="53" height="14" />
164
+ <dc:Bounds x="1056" y="98" width="53" height="14" />
165
+ </bpmndi:BPMNLabel>
166
+ </bpmndi:BPMNEdge>
167
+ <bpmndi:BPMNEdge id="BPMNEdge_ic_answerLoop" bpmnElement="ic_answerLoop">
168
+ <di:waypoint x="991" y="145" />
169
+ <di:waypoint x="991" y="280" />
170
+ <di:waypoint x="1116" y="280" />
171
+ <bpmndi:BPMNLabel>
172
+ <dc:Bounds x="996" y="206" width="49" height="14" />
114
173
  </bpmndi:BPMNLabel>
115
174
  </bpmndi:BPMNEdge>
116
175
  <bpmndi:BPMNEdge id="BPMNEdge_ic_done" bpmnElement="ic_done">
117
176
  <di:waypoint x="441" y="145" />
118
177
  <di:waypoint x="441" y="180" />
119
- <di:waypoint x="934" y="180" />
120
- <di:waypoint x="934" y="138" />
178
+ <di:waypoint x="1166" y="180" />
179
+ <di:waypoint x="1166" y="138" />
121
180
  <bpmndi:BPMNLabel>
122
- <dc:Bounds x="672" y="158" width="32" height="14" />
181
+ <dc:Bounds x="788" y="188" width="32" height="14" />
123
182
  </bpmndi:BPMNLabel>
124
183
  </bpmndi:BPMNEdge>
125
- <bpmndi:BPMNEdge id="BPMNEdge_ic_answerLoop" bpmnElement="ic_answerLoop">
126
- <di:waypoint x="791" y="145" />
127
- <di:waypoint x="791" y="200" />
128
- <di:waypoint x="266" y="200" />
184
+ <bpmndi:BPMNEdge id="BPMNEdge_ic_reImplement" bpmnElement="ic_reImplement">
185
+ <di:waypoint x="1166" y="320" />
186
+ <di:waypoint x="1166" y="340" />
187
+ <di:waypoint x="266" y="340" />
129
188
  <di:waypoint x="266" y="160" />
130
- <bpmndi:BPMNLabel>
131
- <dc:Bounds x="504" y="208" width="49" height="14" />
132
- </bpmndi:BPMNLabel>
133
189
  </bpmndi:BPMNEdge>
134
190
  </bpmndi:BPMNPlane>
135
191
  </bpmndi:BPMNDiagram>