@nanobpm/nano-workforce 0.57.0 → 0.58.0

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.
Files changed (82) hide show
  1. package/.github/workflows/ci.yml +7 -0
  2. package/AGENTS.md +83 -1
  3. package/CHANGELOG.md +7 -0
  4. package/README.md +1 -1
  5. package/SPEC.md +21 -22
  6. package/app/agentCompletion.test.ts +337 -0
  7. package/app/agentCompletion.ts +219 -0
  8. package/app/answer-escalation.test.ts +106 -0
  9. package/app/answerEscalation.test.ts +67 -0
  10. package/app/baseGuard.test.ts +9 -1
  11. package/app/baseGuard.ts +11 -0
  12. package/app/escalationSla.test.ts +39 -0
  13. package/app/escalationSla.ts +28 -0
  14. package/app/escalationTaxonomy.test.ts +115 -0
  15. package/app/escalationTaxonomy.ts +115 -0
  16. package/app/feature.test.ts +161 -0
  17. package/app/feature.ts +173 -0
  18. package/app/mergeProtocol.test.ts +15 -0
  19. package/app/mergeProtocol.ts +10 -0
  20. package/app/persist-escalation.test.ts +34 -36
  21. package/app/plan.test.ts +0 -294
  22. package/app/plan.ts +26 -216
  23. package/app/reviewWait.ts +12 -4
  24. package/app/roundResultDefault.test.ts +111 -2
  25. package/app/roundResultDefault.ts +35 -0
  26. package/app/service.test.ts +6 -7
  27. package/app/service.ts +52 -35
  28. package/db/migrations/026_agent_completion.sql +36 -0
  29. package/db/migrations/027_retire_escalation_subsystem.sql +43 -0
  30. package/db/migrations/028_feature_runs.sql +28 -0
  31. package/e2e/agent-answerable.e2e.ts +185 -0
  32. package/e2e/convergence-escalation.e2e.ts +180 -0
  33. package/e2e/convergence-loop.e2e.ts +1 -1
  34. package/e2e/feature-run.e2e.ts +231 -0
  35. package/e2e/plan-fanout-sla.e2e.ts +238 -0
  36. package/e2e/plan-fanout.e2e.ts +303 -0
  37. package/e2e/retire-escalation-subsystem.e2e.ts +223 -0
  38. package/e2e/support/github-admit.ts +99 -0
  39. package/e2e/user-task-spine.e2e.ts +155 -0
  40. package/nano.app.json +37 -11
  41. package/openapi.yaml +181 -73
  42. package/operations/agentCompleteEscalation.ts +53 -0
  43. package/operations/listActivePrs.test.ts +39 -6
  44. package/operations/postMessage.ts +10 -41
  45. package/operations/revertEscalationCompletion.ts +44 -0
  46. package/operations/startAndMessage.test.ts +0 -58
  47. package/operations/startFeature.ts +127 -0
  48. package/package.json +4 -1
  49. package/pages/cockpit.page.json +1 -0
  50. package/pages/epic-detail.page.json +11 -37
  51. package/pages/epic.page.json +1 -1
  52. package/pages/feature.page.json +82 -0
  53. package/pages/home.page.json +6 -18
  54. package/resources/agent-guide.md +52 -24
  55. package/resources/forms/feature-escalation.form +27 -0
  56. package/resources/forms/plan-review-decision.form +27 -0
  57. package/resources/forms/pr-escalation.form +23 -0
  58. package/resources/forms/spine-demo.form +15 -0
  59. package/resources/forms/trial-merge-decision.form +25 -0
  60. package/resources/processes/convergence-loop.bpmn +127 -75
  61. package/resources/processes/feature.bpmn +240 -0
  62. package/resources/processes/plan-fanout.bpmn +304 -223
  63. package/resources/processes/spine-demo.bpmn +72 -0
  64. package/scripts/check-migrations.ts +68 -0
  65. package/workers/answer-escalation/worker.ts +78 -0
  66. package/workers/converge-feature/worker.ts +51 -0
  67. package/workers/finalize/worker.ts +0 -2
  68. package/workers/mark-merged/worker.ts +0 -2
  69. package/workers/merge/worker.ts +6 -5
  70. package/workers/persist-escalation/worker.ts +28 -32
  71. package/workers/record-feature/worker.ts +61 -0
  72. package/workers/record-plan-review/worker.test.ts +9 -10
  73. package/workers/record-plan-review/worker.ts +15 -5
  74. package/workers/resolve-trial-attention/worker.test.ts +77 -0
  75. package/workers/resolve-trial-attention/worker.ts +43 -0
  76. package/operations/answerFeatureEscalation.test.ts +0 -112
  77. package/operations/answerFeatureEscalation.ts +0 -58
  78. package/operations/answerPlanEscalation.test.ts +0 -115
  79. package/operations/answerPlanEscalation.ts +0 -41
  80. package/workers/persist-plan-escalation/worker.test.ts +0 -80
  81. package/workers/persist-plan-escalation/worker.ts +0 -73
  82. package/workers/persist-task-escalation/worker.ts +0 -120
@@ -1,15 +1,5 @@
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" id="Definitions_nano_workforce_plan" targetNamespace="http://nanobpm.io/nano-workforce">
3
- <bpmn:message id="Message_featureEscalationAnswered" name="feature-escalation-answered">
4
- <bpmn:extensionElements>
5
- <zeebe:subscription correlationKey="=escalationCorrKey" />
6
- </bpmn:extensionElements>
7
- </bpmn:message>
8
- <bpmn:message id="Message_planEscalationAnswered" name="plan-escalation-answered">
9
- <bpmn:extensionElements>
10
- <zeebe:subscription correlationKey="=planKey" />
11
- </bpmn:extensionElements>
12
- </bpmn:message>
13
3
  <bpmn:message id="Message_waveMerged" name="wave-merged">
14
4
  <bpmn:extensionElements>
15
5
  <zeebe:subscription correlationKey="=planKey" />
@@ -43,6 +33,7 @@
43
33
  <bpmn:incoming>f_toPlan</bpmn:incoming>
44
34
  <bpmn:incoming>f_plan_revise</bpmn:incoming>
45
35
  <bpmn:incoming>f_plan_answer_revise</bpmn:incoming>
36
+ <bpmn:incoming>f_plan_sla</bpmn:incoming>
46
37
  <bpmn:outgoing>f_toRecordPlan</bpmn:outgoing>
47
38
  </bpmn:serviceTask>
48
39
  <bpmn:serviceTask id="record-plan" name="Record plan &#38; levelize">
@@ -75,18 +66,25 @@
75
66
  <bpmn:outgoing>f_plan_escalate</bpmn:outgoing>
76
67
  <bpmn:outgoing>f_plan_revise</bpmn:outgoing>
77
68
  </bpmn:exclusiveGateway>
78
- <bpmn:serviceTask id="persist-plan-escalation" name="Record plan escalation">
69
+ <bpmn:userTask id="plan-review-decision" name="Plan-review decision (human)">
79
70
  <bpmn:extensionElements>
80
- <zeebe:taskDefinition type="pr.persist-plan-escalation" />
71
+ <zeebe:formDefinition formId="plan-review-decision" />
72
+ <zeebe:userTask />
73
+ <zeebe:assignmentDefinition candidateGroups="operators" assignee="=escalationAssignee" />
74
+ <zeebe:ioMapping>
75
+ <zeebe:output source="=(if planReviewEpoch = null then 0 else planReviewEpoch) + 1" target="planReviewEpoch" />
76
+ <zeebe:output source="=(if planFindings = null then &#34;&#34; else planFindings) + (if (notes = null or notes = &#34;&#34;) then &#34;&#34; else &#34;&#10;&#10;Human guidance:&#10;&#34; + notes)" target="planFindings" />
77
+ </zeebe:ioMapping>
81
78
  </bpmn:extensionElements>
82
79
  <bpmn:incoming>f_plan_escalate</bpmn:incoming>
83
- <bpmn:outgoing>f_toWaitPlanAnswer</bpmn:outgoing>
84
- </bpmn:serviceTask>
85
- <bpmn:intermediateCatchEvent id="wait-plan-answer" name="Wait: plan answer">
86
- <bpmn:incoming>f_toWaitPlanAnswer</bpmn:incoming>
87
80
  <bpmn:outgoing>f_toGwPlanAnswer</bpmn:outgoing>
88
- <bpmn:messageEventDefinition id="med_planAnswered" messageRef="Message_planEscalationAnswered" />
89
- </bpmn:intermediateCatchEvent>
81
+ </bpmn:userTask>
82
+ <bpmn:boundaryEvent id="be_plan_sla" name="SLA elapsed" attachedToRef="plan-review-decision">
83
+ <bpmn:outgoing>f_plan_sla</bpmn:outgoing>
84
+ <bpmn:timerEventDefinition id="ted_plan_sla">
85
+ <bpmn:timeDuration xsi:type="bpmn:tFormalExpression">=escalationSlaTimeout</bpmn:timeDuration>
86
+ </bpmn:timerEventDefinition>
87
+ </bpmn:boundaryEvent>
90
88
  <bpmn:exclusiveGateway id="gw-plan-answer" name="proceed override?" default="f_plan_answer_revise">
91
89
  <bpmn:incoming>f_toGwPlanAnswer</bpmn:incoming>
92
90
  <bpmn:outgoing>f_plan_answer_proceed</bpmn:outgoing>
@@ -105,10 +103,8 @@
105
103
  <bpmn:extensionElements>
106
104
  <zeebe:ioMapping>
107
105
  <zeebe:input source="=null" target="answer" />
108
- <zeebe:input source="=null" target="status" />
109
106
  <zeebe:input source="=null" target="summary" />
110
107
  <zeebe:input source="=null" target="pr" />
111
- <zeebe:input source="=null" target="question" />
112
108
  <zeebe:input source="=null" target="delta" />
113
109
  </zeebe:ioMapping>
114
110
  </bpmn:extensionElements>
@@ -130,6 +126,8 @@
130
126
  </zeebe:taskHeaders>
131
127
  <zeebe:ioMapping>
132
128
  <zeebe:input source="=&#34;&#10;&#10;---&#10;&#10;&#34; + task.prompt + (if (blackboardBrief = null) then &#34;&#34; else blackboardBrief) + (if (baseBranchBrief = null) then &#34;&#34; else baseBranchBrief)" target="appendPrompt" />
129
+ <zeebe:output source="=status" target="status" />
130
+ <zeebe:output source="=question" target="question" />
133
131
  </zeebe:ioMapping>
134
132
  </bpmn:extensionElements>
135
133
  <bpmn:incoming>w_toImpl</bpmn:incoming>
@@ -141,29 +139,43 @@
141
139
  <bpmn:outgoing>w_escalate</bpmn:outgoing>
142
140
  <bpmn:outgoing>w_done</bpmn:outgoing>
143
141
  </bpmn:exclusiveGateway>
144
- <bpmn:serviceTask id="persist-task-escalation" name="Record task escalation">
142
+ <bpmn:userTask id="feature-escalation" name="Task escalation (human)">
145
143
  <bpmn:extensionElements>
146
- <zeebe:taskDefinition type="pr.persist-task-escalation" />
144
+ <zeebe:formDefinition formId="feature-escalation" />
145
+ <zeebe:userTask />
146
+ <zeebe:assignmentDefinition candidateGroups="operators" assignee="=escalationAssignee" />
147
147
  </bpmn:extensionElements>
148
148
  <bpmn:incoming>w_escalate</bpmn:incoming>
149
- <bpmn:outgoing>w_toWait</bpmn:outgoing>
150
- </bpmn:serviceTask>
151
- <bpmn:intermediateCatchEvent id="wait-feature-answer" name="Wait: human answer">
152
- <bpmn:incoming>w_toWait</bpmn:incoming>
149
+ <bpmn:outgoing>w_toAnswerGw</bpmn:outgoing>
150
+ </bpmn:userTask>
151
+ <bpmn:boundaryEvent id="be_feature_sla" name="SLA elapsed" attachedToRef="feature-escalation">
152
+ <bpmn:outgoing>w_sla</bpmn:outgoing>
153
+ <bpmn:timerEventDefinition id="ted_feature_sla">
154
+ <bpmn:timeDuration xsi:type="bpmn:tFormalExpression">=escalationSlaTimeout</bpmn:timeDuration>
155
+ </bpmn:timerEventDefinition>
156
+ </bpmn:boundaryEvent>
157
+ <bpmn:exclusiveGateway id="w_gw_answer" name="answer?" default="w_abandon">
158
+ <bpmn:incoming>w_toAnswerGw</bpmn:incoming>
153
159
  <bpmn:outgoing>w_answerLoop</bpmn:outgoing>
154
- <bpmn:messageEventDefinition id="med_featureAnswered" messageRef="Message_featureEscalationAnswered" />
155
- </bpmn:intermediateCatchEvent>
160
+ <bpmn:outgoing>w_abandon</bpmn:outgoing>
161
+ </bpmn:exclusiveGateway>
156
162
  <bpmn:endEvent id="w_end" name="Task done">
157
163
  <bpmn:incoming>w_done</bpmn:incoming>
164
+ <bpmn:incoming>w_abandon</bpmn:incoming>
165
+ <bpmn:incoming>w_sla</bpmn:incoming>
158
166
  </bpmn:endEvent>
159
167
  <bpmn:sequenceFlow id="w_toImpl" sourceRef="w_start" targetRef="implement-task" />
160
168
  <bpmn:sequenceFlow id="w_toGw" sourceRef="implement-task" targetRef="w_gw" />
161
- <bpmn:sequenceFlow id="w_escalate" name="escalated" sourceRef="w_gw" targetRef="persist-task-escalation">
162
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=status = "escalated"</bpmn:conditionExpression>
169
+ <bpmn:sequenceFlow id="w_escalate" name="escalated" sourceRef="w_gw" targetRef="feature-escalation">
170
+ <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=status = "escalated" and question != null and trim(question) != ""</bpmn:conditionExpression>
163
171
  </bpmn:sequenceFlow>
164
172
  <bpmn:sequenceFlow id="w_done" name="done" sourceRef="w_gw" targetRef="w_end" />
165
- <bpmn:sequenceFlow id="w_toWait" sourceRef="persist-task-escalation" targetRef="wait-feature-answer" />
166
- <bpmn:sequenceFlow id="w_answerLoop" sourceRef="wait-feature-answer" targetRef="implement-task" />
173
+ <bpmn:sequenceFlow id="w_toAnswerGw" sourceRef="feature-escalation" targetRef="w_gw_answer" />
174
+ <bpmn:sequenceFlow id="w_answerLoop" name="answer" sourceRef="w_gw_answer" targetRef="implement-task">
175
+ <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=resolution = "answer"</bpmn:conditionExpression>
176
+ </bpmn:sequenceFlow>
177
+ <bpmn:sequenceFlow id="w_abandon" name="abandon" sourceRef="w_gw_answer" targetRef="w_end" />
178
+ <bpmn:sequenceFlow id="w_sla" name="SLA auto-abandon" sourceRef="be_feature_sla" targetRef="w_end" />
167
179
  </bpmn:subProcess>
168
180
  <bpmn:serviceTask id="record-wave" name="Record wave &#38; hand off">
169
181
  <bpmn:extensionElements>
@@ -193,6 +205,7 @@
193
205
  </bpmn:extensionElements>
194
206
  <bpmn:incoming>f_runTrialMerge</bpmn:incoming>
195
207
  <bpmn:incoming>f_trialAnswerRerun</bpmn:incoming>
208
+ <bpmn:incoming>f_trial_sla</bpmn:incoming>
196
209
  <bpmn:outgoing>f_toRecordTrialMerge</bpmn:outgoing>
197
210
  </bpmn:serviceTask>
198
211
  <bpmn:serviceTask id="record-trial-merge" name="Record trial merge">
@@ -207,21 +220,32 @@
207
220
  <bpmn:outgoing>f_trialEscalate</bpmn:outgoing>
208
221
  <bpmn:outgoing>f_trialProceed</bpmn:outgoing>
209
222
  </bpmn:exclusiveGateway>
210
- <bpmn:serviceTask id="persist-trial-escalation" name="Record trial escalation">
223
+ <bpmn:userTask id="trial-merge-decision" name="Trial-merge decision (human)">
211
224
  <bpmn:extensionElements>
212
- <zeebe:taskDefinition type="pr.persist-task-escalation" />
225
+ <zeebe:formDefinition formId="trial-merge-decision" />
226
+ <zeebe:userTask />
227
+ <zeebe:assignmentDefinition candidateGroups="operators" assignee="=escalationAssignee" />
213
228
  </bpmn:extensionElements>
214
229
  <bpmn:incoming>f_trialEscalate</bpmn:incoming>
215
- <bpmn:outgoing>f_toWaitTrial</bpmn:outgoing>
216
- </bpmn:serviceTask>
217
- <bpmn:intermediateCatchEvent id="wait-trial-answer" name="Wait: trial answer">
218
- <bpmn:incoming>f_toWaitTrial</bpmn:incoming>
219
230
  <bpmn:outgoing>f_toGwTrialAnswer</bpmn:outgoing>
220
- <bpmn:messageEventDefinition id="med_trialAnswered" messageRef="Message_featureEscalationAnswered" />
221
- </bpmn:intermediateCatchEvent>
222
- <bpmn:exclusiveGateway id="gw-trial-answer" name="proceed override?" default="f_trialAnswerRerun">
231
+ </bpmn:userTask>
232
+ <bpmn:boundaryEvent id="be_trial_sla" name="SLA elapsed" attachedToRef="trial-merge-decision">
233
+ <bpmn:outgoing>f_trial_sla</bpmn:outgoing>
234
+ <bpmn:timerEventDefinition id="ted_trial_sla">
235
+ <bpmn:timeDuration xsi:type="bpmn:tFormalExpression">=escalationSlaTimeout</bpmn:timeDuration>
236
+ </bpmn:timerEventDefinition>
237
+ </bpmn:boundaryEvent>
238
+ <bpmn:serviceTask id="resolve-trial-attention" name="Clear trial attention">
239
+ <bpmn:extensionElements>
240
+ <zeebe:taskDefinition type="pr.resolve-trial-attention" />
241
+ </bpmn:extensionElements>
223
242
  <bpmn:incoming>f_toGwTrialAnswer</bpmn:incoming>
243
+ <bpmn:outgoing>f_resolveToTrialAnswer</bpmn:outgoing>
244
+ </bpmn:serviceTask>
245
+ <bpmn:exclusiveGateway id="gw-trial-answer" name="action?" default="f_trialAnswerRerun">
246
+ <bpmn:incoming>f_resolveToTrialAnswer</bpmn:incoming>
224
247
  <bpmn:outgoing>f_trialAnswerProceed</bpmn:outgoing>
248
+ <bpmn:outgoing>f_trialAnswerAbandon</bpmn:outgoing>
225
249
  <bpmn:outgoing>f_trialAnswerRerun</bpmn:outgoing>
226
250
  </bpmn:exclusiveGateway>
227
251
  <bpmn:exclusiveGateway id="gw-more" name="more waves?" default="f_done">
@@ -241,6 +265,7 @@
241
265
  <zeebe:taskDefinition type="pr.record-results" />
242
266
  </bpmn:extensionElements>
243
267
  <bpmn:incoming>f_done</bpmn:incoming>
268
+ <bpmn:incoming>f_trialAnswerAbandon</bpmn:incoming>
244
269
  <bpmn:outgoing>f_toEnd</bpmn:outgoing>
245
270
  </bpmn:serviceTask>
246
271
  <bpmn:endEvent id="End" name="Fleet dispatched">
@@ -255,14 +280,14 @@
255
280
  <bpmn:sequenceFlow id="f_plan_proceed" name="approved" sourceRef="gw-plan-review" targetRef="select-wave">
256
281
  <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=planApproved</bpmn:conditionExpression>
257
282
  </bpmn:sequenceFlow>
258
- <bpmn:sequenceFlow id="f_plan_escalate" name="escalated" sourceRef="gw-plan-review" targetRef="persist-plan-escalation">
283
+ <bpmn:sequenceFlow id="f_plan_escalate" name="escalated" sourceRef="gw-plan-review" targetRef="plan-review-decision">
259
284
  <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=planEscalated</bpmn:conditionExpression>
260
285
  </bpmn:sequenceFlow>
261
286
  <bpmn:sequenceFlow id="f_plan_revise" name="revise" sourceRef="gw-plan-review" targetRef="plan" />
262
- <bpmn:sequenceFlow id="f_toWaitPlanAnswer" sourceRef="persist-plan-escalation" targetRef="wait-plan-answer" />
263
- <bpmn:sequenceFlow id="f_toGwPlanAnswer" sourceRef="wait-plan-answer" targetRef="gw-plan-answer" />
287
+ <bpmn:sequenceFlow id="f_plan_sla" name="SLA auto-revise" sourceRef="be_plan_sla" targetRef="plan" />
288
+ <bpmn:sequenceFlow id="f_toGwPlanAnswer" sourceRef="plan-review-decision" targetRef="gw-plan-answer" />
264
289
  <bpmn:sequenceFlow id="f_plan_answer_proceed" name="proceed" sourceRef="gw-plan-answer" targetRef="select-wave">
265
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=planEscalationDirective = "proceed"</bpmn:conditionExpression>
290
+ <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=directive = "proceed"</bpmn:conditionExpression>
266
291
  </bpmn:sequenceFlow>
267
292
  <bpmn:sequenceFlow id="f_plan_answer_revise" name="revise" sourceRef="gw-plan-answer" targetRef="plan" />
268
293
  <bpmn:sequenceFlow id="f_toImplement" sourceRef="select-wave" targetRef="implement" />
@@ -274,16 +299,20 @@
274
299
  <bpmn:sequenceFlow id="f_skipTrialMerge" name="skip" sourceRef="gw-trial-needed" targetRef="gw-more" />
275
300
  <bpmn:sequenceFlow id="f_toRecordTrialMerge" sourceRef="trial-merge" targetRef="record-trial-merge" />
276
301
  <bpmn:sequenceFlow id="f_toGwTrial" sourceRef="record-trial-merge" targetRef="gw-trial" />
277
- <bpmn:sequenceFlow id="f_trialEscalate" name="suite failed" sourceRef="gw-trial" targetRef="persist-trial-escalation">
302
+ <bpmn:sequenceFlow id="f_trialEscalate" name="suite failed" sourceRef="gw-trial" targetRef="trial-merge-decision">
278
303
  <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=trialMergeRed</bpmn:conditionExpression>
279
304
  </bpmn:sequenceFlow>
280
305
  <bpmn:sequenceFlow id="f_trialProceed" name="proceed" sourceRef="gw-trial" targetRef="gw-more" />
281
- <bpmn:sequenceFlow id="f_toWaitTrial" sourceRef="persist-trial-escalation" targetRef="wait-trial-answer" />
282
- <bpmn:sequenceFlow id="f_toGwTrialAnswer" sourceRef="wait-trial-answer" targetRef="gw-trial-answer" />
306
+ <bpmn:sequenceFlow id="f_toGwTrialAnswer" sourceRef="trial-merge-decision" targetRef="resolve-trial-attention" />
307
+ <bpmn:sequenceFlow id="f_resolveToTrialAnswer" sourceRef="resolve-trial-attention" targetRef="gw-trial-answer" />
283
308
  <bpmn:sequenceFlow id="f_trialAnswerProceed" name="proceed" sourceRef="gw-trial-answer" targetRef="gw-more">
284
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=answer = "proceed"</bpmn:conditionExpression>
309
+ <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=action = "proceed"</bpmn:conditionExpression>
310
+ </bpmn:sequenceFlow>
311
+ <bpmn:sequenceFlow id="f_trialAnswerAbandon" name="abandon" sourceRef="gw-trial-answer" targetRef="record-results">
312
+ <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=action = "abandon"</bpmn:conditionExpression>
285
313
  </bpmn:sequenceFlow>
286
- <bpmn:sequenceFlow id="f_trialAnswerRerun" name="rerun" sourceRef="gw-trial-answer" targetRef="trial-merge" />
314
+ <bpmn:sequenceFlow id="f_trialAnswerRerun" name="rebase" sourceRef="gw-trial-answer" targetRef="trial-merge" />
315
+ <bpmn:sequenceFlow id="f_trial_sla" name="SLA auto-rerun" sourceRef="be_trial_sla" targetRef="trial-merge" />
287
316
  <bpmn:sequenceFlow id="f_moreWaves" name="more" sourceRef="gw-more" targetRef="wait-wave-merged">
288
317
  <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=hasMoreWaves</bpmn:conditionExpression>
289
318
  </bpmn:sequenceFlow>
@@ -294,353 +323,405 @@
294
323
  <bpmndi:BPMNDiagram id="BPMNDiagram_plan-fanout">
295
324
  <bpmndi:BPMNPlane id="BPMNPlane_plan-fanout" bpmnElement="plan-fanout">
296
325
  <bpmndi:BPMNShape id="BPMNShape_Start" bpmnElement="Start">
297
- <dc:Bounds x="80" y="222" width="36" height="36" />
326
+ <dc:Bounds x="80" y="231" width="36" height="36" />
298
327
  <bpmndi:BPMNLabel>
299
- <dc:Bounds x="63" y="263" width="70" height="28" />
328
+ <dc:Bounds x="63" y="272" width="70" height="28" />
300
329
  </bpmndi:BPMNLabel>
301
330
  </bpmndi:BPMNShape>
302
331
  <bpmndi:BPMNShape id="BPMNShape_ensure-base-branch" bpmnElement="ensure-base-branch">
303
- <dc:Bounds x="216" y="200" width="100" height="80" />
332
+ <dc:Bounds x="216" y="209" width="100" height="80" />
304
333
  </bpmndi:BPMNShape>
305
334
  <bpmndi:BPMNShape id="BPMNShape_plan" bpmnElement="plan">
306
- <dc:Bounds x="416" y="200" width="100" height="80" />
335
+ <dc:Bounds x="416" y="209" width="100" height="80" />
307
336
  </bpmndi:BPMNShape>
308
337
  <bpmndi:BPMNShape id="BPMNShape_record-plan" bpmnElement="record-plan">
309
- <dc:Bounds x="616" y="200" width="100" height="80" />
338
+ <dc:Bounds x="616" y="209" width="100" height="80" />
310
339
  </bpmndi:BPMNShape>
311
340
  <bpmndi:BPMNShape id="BPMNShape_review-plan" bpmnElement="review-plan">
312
- <dc:Bounds x="816" y="200" width="100" height="80" />
341
+ <dc:Bounds x="816" y="209" width="100" height="80" />
313
342
  </bpmndi:BPMNShape>
314
343
  <bpmndi:BPMNShape id="BPMNShape_record-plan-review" bpmnElement="record-plan-review">
315
- <dc:Bounds x="1016" y="200" width="100" height="80" />
344
+ <dc:Bounds x="1016" y="209" width="100" height="80" />
316
345
  </bpmndi:BPMNShape>
317
346
  <bpmndi:BPMNShape id="BPMNShape_gw-plan-review" bpmnElement="gw-plan-review" isMarkerVisible="true">
318
- <dc:Bounds x="1216" y="215" width="50" height="50" />
347
+ <dc:Bounds x="1216" y="224" width="50" height="50" />
319
348
  <bpmndi:BPMNLabel>
320
- <dc:Bounds x="1168" y="270" width="67" height="28" />
349
+ <dc:Bounds x="1168" y="279" width="67" height="28" />
321
350
  </bpmndi:BPMNLabel>
322
351
  </bpmndi:BPMNShape>
323
- <bpmndi:BPMNShape id="BPMNShape_persist-plan-escalation" bpmnElement="persist-plan-escalation">
324
- <dc:Bounds x="1366" y="360" width="100" height="80" />
325
- </bpmndi:BPMNShape>
326
- <bpmndi:BPMNShape id="BPMNShape_wait-plan-answer" bpmnElement="wait-plan-answer">
327
- <dc:Bounds x="1566" y="382" width="36" height="36" />
328
- <bpmndi:BPMNLabel>
329
- <dc:Bounds x="1547" y="423" width="75" height="28" />
330
- </bpmndi:BPMNLabel>
352
+ <bpmndi:BPMNShape id="BPMNShape_plan-review-decision" bpmnElement="plan-review-decision">
353
+ <dc:Bounds x="1366" y="369" width="100" height="80" />
331
354
  </bpmndi:BPMNShape>
332
355
  <bpmndi:BPMNShape id="BPMNShape_gw-plan-answer" bpmnElement="gw-plan-answer" isMarkerVisible="true">
333
- <dc:Bounds x="1702" y="375" width="50" height="50" />
356
+ <dc:Bounds x="1566" y="384" width="50" height="50" />
334
357
  <bpmndi:BPMNLabel>
335
- <dc:Bounds x="1757" y="386" width="67" height="28" />
358
+ <dc:Bounds x="1621" y="395" width="67" height="28" />
336
359
  </bpmndi:BPMNLabel>
337
360
  </bpmndi:BPMNShape>
338
361
  <bpmndi:BPMNShape id="BPMNShape_select-wave" bpmnElement="select-wave">
339
- <dc:Bounds x="1852" y="200" width="100" height="80" />
362
+ <dc:Bounds x="1716" y="209" width="100" height="80" />
340
363
  </bpmndi:BPMNShape>
341
364
  <bpmndi:BPMNShape id="BPMNShape_implement" bpmnElement="implement" isExpanded="true">
342
- <dc:Bounds x="2052" y="80" width="802" height="320" />
365
+ <dc:Bounds x="1916" y="80" width="952" height="338" />
343
366
  </bpmndi:BPMNShape>
344
367
  <bpmndi:BPMNShape id="BPMNShape_record-wave" bpmnElement="record-wave">
345
- <dc:Bounds x="2954" y="200" width="100" height="80" />
368
+ <dc:Bounds x="2968" y="209" width="100" height="80" />
346
369
  </bpmndi:BPMNShape>
347
370
  <bpmndi:BPMNShape id="BPMNShape_gw-trial-needed" bpmnElement="gw-trial-needed" isMarkerVisible="true">
348
- <dc:Bounds x="3154" y="215" width="50" height="50" />
371
+ <dc:Bounds x="3168" y="224" width="50" height="50" />
349
372
  <bpmndi:BPMNLabel>
350
- <dc:Bounds x="3135" y="196" width="88" height="14" />
373
+ <dc:Bounds x="3149" y="205" width="88" height="14" />
351
374
  </bpmndi:BPMNLabel>
352
375
  </bpmndi:BPMNShape>
353
376
  <bpmndi:BPMNShape id="BPMNShape_trial-merge" bpmnElement="trial-merge">
354
- <dc:Bounds x="3304" y="360" width="100" height="80" />
377
+ <dc:Bounds x="3318" y="849" width="100" height="80" />
355
378
  </bpmndi:BPMNShape>
356
379
  <bpmndi:BPMNShape id="BPMNShape_record-trial-merge" bpmnElement="record-trial-merge">
357
- <dc:Bounds x="3504" y="360" width="100" height="80" />
380
+ <dc:Bounds x="3518" y="849" width="100" height="80" />
358
381
  </bpmndi:BPMNShape>
359
382
  <bpmndi:BPMNShape id="BPMNShape_gw-trial" bpmnElement="gw-trial" isMarkerVisible="true">
360
- <dc:Bounds x="3704" y="375" width="50" height="50" />
383
+ <dc:Bounds x="3718" y="864" width="50" height="50" />
361
384
  <bpmndi:BPMNLabel>
362
- <dc:Bounds x="3759" y="393" width="71" height="14" />
385
+ <dc:Bounds x="3708" y="919" width="71" height="14" />
363
386
  </bpmndi:BPMNLabel>
364
387
  </bpmndi:BPMNShape>
365
- <bpmndi:BPMNShape id="BPMNShape_persist-trial-escalation" bpmnElement="persist-trial-escalation">
366
- <dc:Bounds x="3854" y="520" width="100" height="80" />
388
+ <bpmndi:BPMNShape id="BPMNShape_trial-merge-decision" bpmnElement="trial-merge-decision">
389
+ <dc:Bounds x="3868" y="369" width="100" height="80" />
367
390
  </bpmndi:BPMNShape>
368
- <bpmndi:BPMNShape id="BPMNShape_wait-trial-answer" bpmnElement="wait-trial-answer">
369
- <dc:Bounds x="4054" y="542" width="36" height="36" />
370
- <bpmndi:BPMNLabel>
371
- <dc:Bounds x="4031" y="583" width="82" height="28" />
372
- </bpmndi:BPMNLabel>
391
+ <bpmndi:BPMNShape id="BPMNShape_resolve-trial-attention" bpmnElement="resolve-trial-attention">
392
+ <dc:Bounds x="4068" y="369" width="100" height="80" />
373
393
  </bpmndi:BPMNShape>
374
394
  <bpmndi:BPMNShape id="BPMNShape_gw-trial-answer" bpmnElement="gw-trial-answer" isMarkerVisible="true">
375
- <dc:Bounds x="4190" y="535" width="50" height="50" />
395
+ <dc:Bounds x="4268" y="384" width="50" height="50" />
376
396
  <bpmndi:BPMNLabel>
377
- <dc:Bounds x="4245" y="546" width="67" height="28" />
397
+ <dc:Bounds x="4267" y="439" width="53" height="14" />
378
398
  </bpmndi:BPMNLabel>
379
399
  </bpmndi:BPMNShape>
380
400
  <bpmndi:BPMNShape id="BPMNShape_gw-more" bpmnElement="gw-more" isMarkerVisible="true">
381
- <dc:Bounds x="4340" y="215" width="50" height="50" />
401
+ <dc:Bounds x="4418" y="224" width="50" height="50" />
382
402
  <bpmndi:BPMNLabel>
383
- <dc:Bounds x="4323" y="196" width="84" height="14" />
403
+ <dc:Bounds x="4341" y="279" width="84" height="14" />
384
404
  </bpmndi:BPMNLabel>
385
405
  </bpmndi:BPMNShape>
386
406
  <bpmndi:BPMNShape id="BPMNShape_wait-wave-merged" bpmnElement="wait-wave-merged">
387
- <dc:Bounds x="4522" y="382" width="36" height="36" />
407
+ <dc:Bounds x="4600" y="391" width="36" height="36" />
388
408
  <bpmndi:BPMNLabel>
389
- <dc:Bounds x="4501" y="349" width="78" height="28" />
409
+ <dc:Bounds x="4579" y="358" width="78" height="28" />
390
410
  </bpmndi:BPMNLabel>
391
411
  </bpmndi:BPMNShape>
392
412
  <bpmndi:BPMNShape id="BPMNShape_record-results" bpmnElement="record-results">
393
- <dc:Bounds x="4490" y="200" width="100" height="80" />
413
+ <dc:Bounds x="4568" y="209" width="100" height="80" />
394
414
  </bpmndi:BPMNShape>
395
415
  <bpmndi:BPMNShape id="BPMNShape_End" bpmnElement="End">
396
- <dc:Bounds x="4690" y="222" width="36" height="36" />
416
+ <dc:Bounds x="4768" y="231" width="36" height="36" />
397
417
  <bpmndi:BPMNLabel>
398
- <dc:Bounds x="4671" y="263" width="74" height="28" />
418
+ <dc:Bounds x="4749" y="272" width="74" height="28" />
419
+ </bpmndi:BPMNLabel>
420
+ </bpmndi:BPMNShape>
421
+ <bpmndi:BPMNShape id="BPMNShape_be_plan_sla" bpmnElement="be_plan_sla">
422
+ <dc:Bounds x="1398" y="431" width="36" height="36" />
423
+ <bpmndi:BPMNLabel>
424
+ <dc:Bounds x="1374" y="512" width="84" height="14" />
425
+ </bpmndi:BPMNLabel>
426
+ </bpmndi:BPMNShape>
427
+ <bpmndi:BPMNShape id="BPMNShape_be_trial_sla" bpmnElement="be_trial_sla">
428
+ <dc:Bounds x="3900" y="431" width="36" height="36" />
429
+ <bpmndi:BPMNLabel>
430
+ <dc:Bounds x="3816" y="512" width="84" height="14" />
399
431
  </bpmndi:BPMNLabel>
400
432
  </bpmndi:BPMNShape>
401
433
  <bpmndi:BPMNEdge id="BPMNEdge_f_toEnsureBase" bpmnElement="f_toEnsureBase">
402
- <di:waypoint x="116" y="240" />
403
- <di:waypoint x="216" y="240" />
434
+ <di:waypoint x="116" y="249" />
435
+ <di:waypoint x="216" y="249" />
404
436
  </bpmndi:BPMNEdge>
405
437
  <bpmndi:BPMNEdge id="BPMNEdge_f_toPlan" bpmnElement="f_toPlan">
406
- <di:waypoint x="316" y="240" />
407
- <di:waypoint x="416" y="240" />
438
+ <di:waypoint x="316" y="249" />
439
+ <di:waypoint x="416" y="249" />
408
440
  </bpmndi:BPMNEdge>
409
441
  <bpmndi:BPMNEdge id="BPMNEdge_f_toRecordPlan" bpmnElement="f_toRecordPlan">
410
- <di:waypoint x="516" y="240" />
411
- <di:waypoint x="616" y="240" />
442
+ <di:waypoint x="516" y="249" />
443
+ <di:waypoint x="616" y="249" />
412
444
  </bpmndi:BPMNEdge>
413
445
  <bpmndi:BPMNEdge id="BPMNEdge_f_toReviewPlan" bpmnElement="f_toReviewPlan">
414
- <di:waypoint x="716" y="240" />
415
- <di:waypoint x="816" y="240" />
446
+ <di:waypoint x="716" y="249" />
447
+ <di:waypoint x="816" y="249" />
416
448
  </bpmndi:BPMNEdge>
417
449
  <bpmndi:BPMNEdge id="BPMNEdge_f_toRecordPlanReview" bpmnElement="f_toRecordPlanReview">
418
- <di:waypoint x="916" y="240" />
419
- <di:waypoint x="1016" y="240" />
450
+ <di:waypoint x="916" y="249" />
451
+ <di:waypoint x="1016" y="249" />
420
452
  </bpmndi:BPMNEdge>
421
453
  <bpmndi:BPMNEdge id="BPMNEdge_f_toGwPlanReview" bpmnElement="f_toGwPlanReview">
422
- <di:waypoint x="1116" y="240" />
423
- <di:waypoint x="1216" y="240" />
454
+ <di:waypoint x="1116" y="249" />
455
+ <di:waypoint x="1216" y="249" />
424
456
  </bpmndi:BPMNEdge>
425
457
  <bpmndi:BPMNEdge id="BPMNEdge_f_plan_proceed" bpmnElement="f_plan_proceed">
426
- <di:waypoint x="1266" y="240" />
427
- <di:waypoint x="1852" y="240" />
458
+ <di:waypoint x="1266" y="249" />
459
+ <di:waypoint x="1716" y="249" />
428
460
  <bpmndi:BPMNLabel>
429
- <dc:Bounds x="1467" y="218" width="60" height="14" />
461
+ <dc:Bounds x="1399" y="227" width="60" height="14" />
430
462
  </bpmndi:BPMNLabel>
431
463
  </bpmndi:BPMNEdge>
432
464
  <bpmndi:BPMNEdge id="BPMNEdge_f_toImplement" bpmnElement="f_toImplement">
433
- <di:waypoint x="1952" y="240" />
434
- <di:waypoint x="2052" y="240" />
465
+ <di:waypoint x="1816" y="249" />
466
+ <di:waypoint x="1916" y="249" />
435
467
  </bpmndi:BPMNEdge>
436
468
  <bpmndi:BPMNEdge id="BPMNEdge_f_toRecordWave" bpmnElement="f_toRecordWave">
437
- <di:waypoint x="2854" y="240" />
438
- <di:waypoint x="2954" y="240" />
469
+ <di:waypoint x="2868" y="249" />
470
+ <di:waypoint x="2968" y="249" />
439
471
  </bpmndi:BPMNEdge>
440
472
  <bpmndi:BPMNEdge id="BPMNEdge_f_toTrialNeeded" bpmnElement="f_toTrialNeeded">
441
- <di:waypoint x="3054" y="240" />
442
- <di:waypoint x="3154" y="240" />
473
+ <di:waypoint x="3068" y="249" />
474
+ <di:waypoint x="3168" y="249" />
443
475
  </bpmndi:BPMNEdge>
444
476
  <bpmndi:BPMNEdge id="BPMNEdge_f_skipTrialMerge" bpmnElement="f_skipTrialMerge">
445
- <di:waypoint x="3204" y="240" />
446
- <di:waypoint x="4340" y="240" />
477
+ <di:waypoint x="3218" y="249" />
478
+ <di:waypoint x="4418" y="249" />
447
479
  <bpmndi:BPMNLabel>
448
- <dc:Bounds x="3451" y="218" width="32" height="14" />
480
+ <dc:Bounds x="3740" y="227" width="32" height="14" />
449
481
  </bpmndi:BPMNLabel>
450
482
  </bpmndi:BPMNEdge>
451
483
  <bpmndi:BPMNEdge id="BPMNEdge_f_done" bpmnElement="f_done">
452
- <di:waypoint x="4390" y="240" />
453
- <di:waypoint x="4490" y="240" />
484
+ <di:waypoint x="4468" y="249" />
485
+ <di:waypoint x="4568" y="249" />
454
486
  <bpmndi:BPMNLabel>
455
- <dc:Bounds x="4434" y="218" width="32" height="14" />
487
+ <dc:Bounds x="4502" y="227" width="32" height="14" />
456
488
  </bpmndi:BPMNLabel>
457
489
  </bpmndi:BPMNEdge>
458
490
  <bpmndi:BPMNEdge id="BPMNEdge_f_toEnd" bpmnElement="f_toEnd">
459
- <di:waypoint x="4590" y="240" />
460
- <di:waypoint x="4690" y="240" />
491
+ <di:waypoint x="4668" y="249" />
492
+ <di:waypoint x="4768" y="249" />
461
493
  </bpmndi:BPMNEdge>
462
494
  <bpmndi:BPMNEdge id="BPMNEdge_f_plan_answer_revise" bpmnElement="f_plan_answer_revise">
463
- <di:waypoint x="1727" y="425" />
464
- <di:waypoint x="1727" y="460" />
465
- <di:waypoint x="466" y="460" />
466
- <di:waypoint x="466" y="280" />
495
+ <di:waypoint x="1591" y="434" />
496
+ <di:waypoint x="1591" y="489" />
497
+ <di:waypoint x="466" y="489" />
498
+ <di:waypoint x="466" y="289" />
467
499
  <bpmndi:BPMNLabel>
468
- <dc:Bounds x="1074" y="438" width="46" height="14" />
500
+ <dc:Bounds x="1006" y="467" width="46" height="14" />
469
501
  </bpmndi:BPMNLabel>
470
502
  </bpmndi:BPMNEdge>
471
503
  <bpmndi:BPMNEdge id="BPMNEdge_f_toRecordTrialMerge" bpmnElement="f_toRecordTrialMerge">
472
- <di:waypoint x="3404" y="400" />
473
- <di:waypoint x="3504" y="400" />
504
+ <di:waypoint x="3418" y="889" />
505
+ <di:waypoint x="3518" y="889" />
474
506
  </bpmndi:BPMNEdge>
475
507
  <bpmndi:BPMNEdge id="BPMNEdge_f_toGwTrial" bpmnElement="f_toGwTrial">
476
- <di:waypoint x="3604" y="400" />
477
- <di:waypoint x="3704" y="400" />
508
+ <di:waypoint x="3618" y="889" />
509
+ <di:waypoint x="3718" y="889" />
478
510
  </bpmndi:BPMNEdge>
479
511
  <bpmndi:BPMNEdge id="BPMNEdge_f_trialProceed" bpmnElement="f_trialProceed">
480
- <di:waypoint x="3729" y="375" />
481
- <di:waypoint x="3729" y="240" />
482
- <di:waypoint x="4340" y="240" />
512
+ <di:waypoint x="3768" y="889" />
513
+ <di:waypoint x="4443" y="889" />
514
+ <di:waypoint x="4443" y="274" />
483
515
  <bpmndi:BPMNLabel>
484
- <dc:Bounds x="3734" y="301" width="53" height="14" />
516
+ <dc:Bounds x="4079" y="867" width="53" height="14" />
485
517
  </bpmndi:BPMNLabel>
486
518
  </bpmndi:BPMNEdge>
487
519
  <bpmndi:BPMNEdge id="BPMNEdge_f_trialAnswerRerun" bpmnElement="f_trialAnswerRerun">
488
- <di:waypoint x="4215" y="585" />
489
- <di:waypoint x="4215" y="620" />
490
- <di:waypoint x="3354" y="620" />
491
- <di:waypoint x="3354" y="440" />
520
+ <di:waypoint x="4293" y="384" />
521
+ <di:waypoint x="4293" y="349" />
522
+ <di:waypoint x="3368" y="349" />
523
+ <di:waypoint x="3368" y="849" />
492
524
  <bpmndi:BPMNLabel>
493
- <dc:Bounds x="3765" y="598" width="39" height="14" />
525
+ <dc:Bounds x="3808" y="327" width="46" height="14" />
494
526
  </bpmndi:BPMNLabel>
495
527
  </bpmndi:BPMNEdge>
496
528
  <bpmndi:BPMNEdge id="BPMNEdge_f_plan_escalate" bpmnElement="f_plan_escalate">
497
- <di:waypoint x="1241" y="265" />
498
- <di:waypoint x="1241" y="400" />
499
- <di:waypoint x="1366" y="400" />
529
+ <di:waypoint x="1241" y="274" />
530
+ <di:waypoint x="1241" y="409" />
531
+ <di:waypoint x="1366" y="409" />
500
532
  <bpmndi:BPMNLabel>
501
- <dc:Bounds x="1246" y="326" width="67" height="14" />
533
+ <dc:Bounds x="1246" y="335" width="67" height="14" />
502
534
  </bpmndi:BPMNLabel>
503
535
  </bpmndi:BPMNEdge>
504
536
  <bpmndi:BPMNEdge id="BPMNEdge_f_plan_answer_proceed" bpmnElement="f_plan_answer_proceed">
505
- <di:waypoint x="1727" y="375" />
506
- <di:waypoint x="1727" y="240" />
507
- <di:waypoint x="1852" y="240" />
537
+ <di:waypoint x="1591" y="384" />
538
+ <di:waypoint x="1591" y="249" />
539
+ <di:waypoint x="1716" y="249" />
508
540
  <bpmndi:BPMNLabel>
509
- <dc:Bounds x="1732" y="301" width="53" height="14" />
541
+ <dc:Bounds x="1596" y="310" width="53" height="14" />
510
542
  </bpmndi:BPMNLabel>
511
543
  </bpmndi:BPMNEdge>
512
544
  <bpmndi:BPMNEdge id="BPMNEdge_f_runTrialMerge" bpmnElement="f_runTrialMerge">
513
- <di:waypoint x="3179" y="265" />
514
- <di:waypoint x="3179" y="400" />
515
- <di:waypoint x="3304" y="400" />
545
+ <di:waypoint x="3193" y="274" />
546
+ <di:waypoint x="3193" y="889" />
547
+ <di:waypoint x="3318" y="889" />
516
548
  <bpmndi:BPMNLabel>
517
- <dc:Bounds x="3184" y="326" width="25" height="14" />
549
+ <dc:Bounds x="3198" y="575" width="25" height="14" />
518
550
  </bpmndi:BPMNLabel>
519
551
  </bpmndi:BPMNEdge>
520
552
  <bpmndi:BPMNEdge id="BPMNEdge_f_trialEscalate" bpmnElement="f_trialEscalate">
521
- <di:waypoint x="3729" y="425" />
522
- <di:waypoint x="3729" y="560" />
523
- <di:waypoint x="3854" y="560" />
553
+ <di:waypoint x="3743" y="864" />
554
+ <di:waypoint x="3743" y="409" />
555
+ <di:waypoint x="3868" y="409" />
524
556
  <bpmndi:BPMNLabel>
525
- <dc:Bounds x="3734" y="486" width="85" height="14" />
557
+ <dc:Bounds x="3748" y="630" width="85" height="14" />
526
558
  </bpmndi:BPMNLabel>
527
559
  </bpmndi:BPMNEdge>
528
560
  <bpmndi:BPMNEdge id="BPMNEdge_f_trialAnswerProceed" bpmnElement="f_trialAnswerProceed">
529
- <di:waypoint x="4215" y="535" />
530
- <di:waypoint x="4215" y="385" />
531
- <di:waypoint x="4365" y="385" />
532
- <di:waypoint x="4365" y="265" />
561
+ <di:waypoint x="4293" y="384" />
562
+ <di:waypoint x="4293" y="249" />
563
+ <di:waypoint x="4418" y="249" />
533
564
  <bpmndi:BPMNLabel>
534
- <dc:Bounds x="4264" y="363" width="53" height="14" />
565
+ <dc:Bounds x="4298" y="310" width="53" height="14" />
535
566
  </bpmndi:BPMNLabel>
536
567
  </bpmndi:BPMNEdge>
537
- <bpmndi:BPMNEdge id="BPMNEdge_f_moreWaves" bpmnElement="f_moreWaves">
538
- <di:waypoint x="4390" y="240" />
539
- <di:waypoint x="4410" y="240" />
540
- <di:waypoint x="4410" y="265" />
541
- <di:waypoint x="4444" y="265" />
542
- <di:waypoint x="4444" y="420" />
543
- <di:waypoint x="4522" y="420" />
544
- <di:waypoint x="4522" y="438" />
545
- <di:waypoint x="4540" y="438" />
546
- <di:waypoint x="4540" y="418" />
568
+ <bpmndi:BPMNEdge id="BPMNEdge_f_trialAnswerAbandon" bpmnElement="f_trialAnswerAbandon">
569
+ <di:waypoint x="4293" y="384" />
570
+ <di:waypoint x="4293" y="220" />
571
+ <di:waypoint x="4548" y="220" />
572
+ <di:waypoint x="4548" y="249" />
573
+ <di:waypoint x="4568" y="249" />
547
574
  <bpmndi:BPMNLabel>
548
- <dc:Bounds x="4449" y="336" width="35" height="14" />
575
+ <dc:Bounds x="4394" y="198" width="53" height="14" />
549
576
  </bpmndi:BPMNLabel>
550
577
  </bpmndi:BPMNEdge>
551
- <bpmndi:BPMNEdge id="BPMNEdge_f_toWaitPlanAnswer" bpmnElement="f_toWaitPlanAnswer">
552
- <di:waypoint x="1466" y="400" />
553
- <di:waypoint x="1566" y="400" />
578
+ <bpmndi:BPMNEdge id="BPMNEdge_f_moreWaves" bpmnElement="f_moreWaves">
579
+ <di:waypoint x="4468" y="249" />
580
+ <di:waypoint x="4488" y="249" />
581
+ <di:waypoint x="4488" y="274" />
582
+ <di:waypoint x="4522" y="274" />
583
+ <di:waypoint x="4522" y="429" />
584
+ <di:waypoint x="4600" y="429" />
585
+ <di:waypoint x="4600" y="447" />
586
+ <di:waypoint x="4618" y="447" />
587
+ <di:waypoint x="4618" y="427" />
588
+ <bpmndi:BPMNLabel>
589
+ <dc:Bounds x="4527" y="345" width="35" height="14" />
590
+ </bpmndi:BPMNLabel>
554
591
  </bpmndi:BPMNEdge>
555
592
  <bpmndi:BPMNEdge id="BPMNEdge_f_toGwPlanAnswer" bpmnElement="f_toGwPlanAnswer">
556
- <di:waypoint x="1602" y="400" />
557
- <di:waypoint x="1702" y="400" />
558
- </bpmndi:BPMNEdge>
559
- <bpmndi:BPMNEdge id="BPMNEdge_f_toWaitTrial" bpmnElement="f_toWaitTrial">
560
- <di:waypoint x="3954" y="560" />
561
- <di:waypoint x="4054" y="560" />
593
+ <di:waypoint x="1466" y="409" />
594
+ <di:waypoint x="1566" y="409" />
562
595
  </bpmndi:BPMNEdge>
563
596
  <bpmndi:BPMNEdge id="BPMNEdge_f_toGwTrialAnswer" bpmnElement="f_toGwTrialAnswer">
564
- <di:waypoint x="4090" y="560" />
565
- <di:waypoint x="4190" y="560" />
597
+ <di:waypoint x="3968" y="409" />
598
+ <di:waypoint x="4068" y="409" />
599
+ </bpmndi:BPMNEdge>
600
+ <bpmndi:BPMNEdge id="BPMNEdge_f_resolveToTrialAnswer" bpmnElement="f_resolveToTrialAnswer">
601
+ <di:waypoint x="4168" y="409" />
602
+ <di:waypoint x="4268" y="409" />
566
603
  </bpmndi:BPMNEdge>
567
604
  <bpmndi:BPMNEdge id="BPMNEdge_f_plan_revise" bpmnElement="f_plan_revise">
568
- <di:waypoint x="1241" y="215" />
569
- <di:waypoint x="1241" y="180" />
570
- <di:waypoint x="466" y="180" />
571
- <di:waypoint x="466" y="200" />
605
+ <di:waypoint x="1241" y="224" />
606
+ <di:waypoint x="1241" y="189" />
607
+ <di:waypoint x="466" y="189" />
608
+ <di:waypoint x="466" y="209" />
572
609
  <bpmndi:BPMNLabel>
573
- <dc:Bounds x="831" y="158" width="46" height="14" />
610
+ <dc:Bounds x="831" y="167" width="46" height="14" />
574
611
  </bpmndi:BPMNLabel>
575
612
  </bpmndi:BPMNEdge>
576
613
  <bpmndi:BPMNEdge id="BPMNEdge_f_waveMerged" bpmnElement="f_waveMerged">
577
- <di:waypoint x="4540" y="418" />
578
- <di:waypoint x="4540" y="640" />
579
- <di:waypoint x="1902" y="640" />
580
- <di:waypoint x="1902" y="280" />
614
+ <di:waypoint x="4618" y="427" />
615
+ <di:waypoint x="4618" y="489" />
616
+ <di:waypoint x="1766" y="489" />
617
+ <di:waypoint x="1766" y="289" />
618
+ </bpmndi:BPMNEdge>
619
+ <bpmndi:BPMNEdge id="BPMNEdge_f_plan_sla" bpmnElement="f_plan_sla">
620
+ <di:waypoint x="1416" y="467" />
621
+ <di:waypoint x="1416" y="487" />
622
+ <di:waypoint x="466" y="487" />
623
+ <di:waypoint x="466" y="289" />
624
+ <bpmndi:BPMNLabel>
625
+ <dc:Bounds x="901" y="454" width="81" height="28" />
626
+ </bpmndi:BPMNLabel>
627
+ </bpmndi:BPMNEdge>
628
+ <bpmndi:BPMNEdge id="BPMNEdge_f_trial_sla" bpmnElement="f_trial_sla">
629
+ <di:waypoint x="3918" y="467" />
630
+ <di:waypoint x="3918" y="829" />
631
+ <di:waypoint x="3368" y="829" />
632
+ <di:waypoint x="3368" y="849" />
633
+ <bpmndi:BPMNLabel>
634
+ <dc:Bounds x="3606" y="796" width="74" height="28" />
635
+ </bpmndi:BPMNLabel>
581
636
  </bpmndi:BPMNEdge>
582
637
  <bpmndi:BPMNShape id="BPMNShape_w_start" bpmnElement="w_start">
583
- <dc:Bounds x="2092" y="142" width="36" height="36" />
638
+ <dc:Bounds x="1956" y="142" width="36" height="36" />
584
639
  <bpmndi:BPMNLabel>
585
- <dc:Bounds x="2093" y="183" width="34" height="14" />
640
+ <dc:Bounds x="1957" y="183" width="34" height="14" />
586
641
  </bpmndi:BPMNLabel>
587
642
  </bpmndi:BPMNShape>
588
643
  <bpmndi:BPMNShape id="BPMNShape_implement-task" bpmnElement="implement-task">
589
- <dc:Bounds x="2228" y="120" width="100" height="80" />
644
+ <dc:Bounds x="2092" y="120" width="100" height="80" />
590
645
  </bpmndi:BPMNShape>
591
646
  <bpmndi:BPMNShape id="BPMNShape_w_gw" bpmnElement="w_gw" isMarkerVisible="true">
592
- <dc:Bounds x="2428" y="135" width="50" height="50" />
647
+ <dc:Bounds x="2292" y="135" width="50" height="50" />
593
648
  <bpmndi:BPMNLabel>
594
- <dc:Bounds x="2416" y="116" width="74" height="14" />
649
+ <dc:Bounds x="2280" y="116" width="74" height="14" />
595
650
  </bpmndi:BPMNLabel>
596
651
  </bpmndi:BPMNShape>
597
- <bpmndi:BPMNShape id="BPMNShape_persist-task-escalation" bpmnElement="persist-task-escalation">
598
- <dc:Bounds x="2578" y="280" width="100" height="80" />
652
+ <bpmndi:BPMNShape id="BPMNShape_feature-escalation" bpmnElement="feature-escalation">
653
+ <dc:Bounds x="2442" y="280" width="100" height="80" />
599
654
  </bpmndi:BPMNShape>
600
- <bpmndi:BPMNShape id="BPMNShape_wait-feature-answer" bpmnElement="wait-feature-answer">
601
- <dc:Bounds x="2778" y="302" width="36" height="36" />
655
+ <bpmndi:BPMNShape id="BPMNShape_w_gw_answer" bpmnElement="w_gw_answer" isMarkerVisible="true">
656
+ <dc:Bounds x="2642" y="295" width="50" height="50" />
602
657
  <bpmndi:BPMNLabel>
603
- <dc:Bounds x="2754" y="269" width="85" height="28" />
658
+ <dc:Bounds x="2639" y="276" width="56" height="14" />
604
659
  </bpmndi:BPMNLabel>
605
660
  </bpmndi:BPMNShape>
606
661
  <bpmndi:BPMNShape id="BPMNShape_w_end" bpmnElement="w_end">
607
- <dc:Bounds x="2610" y="142" width="36" height="36" />
662
+ <dc:Bounds x="2792" y="142" width="36" height="36" />
608
663
  <bpmndi:BPMNLabel>
609
- <dc:Bounds x="2595" y="183" width="66" height="14" />
664
+ <dc:Bounds x="2777" y="123" width="66" height="14" />
665
+ </bpmndi:BPMNLabel>
666
+ </bpmndi:BPMNShape>
667
+ <bpmndi:BPMNShape id="BPMNShape_be_feature_sla" bpmnElement="be_feature_sla">
668
+ <dc:Bounds x="2474" y="342" width="36" height="36" />
669
+ <bpmndi:BPMNLabel>
670
+ <dc:Bounds x="2450" y="423" width="84" height="14" />
610
671
  </bpmndi:BPMNLabel>
611
672
  </bpmndi:BPMNShape>
612
673
  <bpmndi:BPMNEdge id="BPMNEdge_w_toImpl" bpmnElement="w_toImpl">
613
- <di:waypoint x="2128" y="160" />
614
- <di:waypoint x="2228" y="160" />
674
+ <di:waypoint x="1992" y="160" />
675
+ <di:waypoint x="2092" y="160" />
615
676
  </bpmndi:BPMNEdge>
616
677
  <bpmndi:BPMNEdge id="BPMNEdge_w_toGw" bpmnElement="w_toGw">
617
- <di:waypoint x="2328" y="160" />
618
- <di:waypoint x="2428" y="160" />
678
+ <di:waypoint x="2192" y="160" />
679
+ <di:waypoint x="2292" y="160" />
619
680
  </bpmndi:BPMNEdge>
620
681
  <bpmndi:BPMNEdge id="BPMNEdge_w_done" bpmnElement="w_done">
621
- <di:waypoint x="2478" y="160" />
622
- <di:waypoint x="2610" y="160" />
682
+ <di:waypoint x="2342" y="160" />
683
+ <di:waypoint x="2792" y="160" />
623
684
  <bpmndi:BPMNLabel>
624
- <dc:Bounds x="2528" y="138" width="32" height="14" />
685
+ <dc:Bounds x="2551" y="138" width="32" height="14" />
686
+ </bpmndi:BPMNLabel>
687
+ </bpmndi:BPMNEdge>
688
+ <bpmndi:BPMNEdge id="BPMNEdge_w_abandon" bpmnElement="w_abandon">
689
+ <di:waypoint x="2692" y="320" />
690
+ <di:waypoint x="2810" y="320" />
691
+ <di:waypoint x="2810" y="178" />
692
+ <bpmndi:BPMNLabel>
693
+ <dc:Bounds x="2725" y="298" width="53" height="14" />
625
694
  </bpmndi:BPMNLabel>
626
695
  </bpmndi:BPMNEdge>
627
696
  <bpmndi:BPMNEdge id="BPMNEdge_w_escalate" bpmnElement="w_escalate">
628
- <di:waypoint x="2453" y="185" />
629
- <di:waypoint x="2453" y="320" />
630
- <di:waypoint x="2578" y="320" />
697
+ <di:waypoint x="2317" y="185" />
698
+ <di:waypoint x="2317" y="320" />
699
+ <di:waypoint x="2442" y="320" />
631
700
  <bpmndi:BPMNLabel>
632
- <dc:Bounds x="2458" y="246" width="67" height="14" />
701
+ <dc:Bounds x="2322" y="246" width="67" height="14" />
633
702
  </bpmndi:BPMNLabel>
634
703
  </bpmndi:BPMNEdge>
635
- <bpmndi:BPMNEdge id="BPMNEdge_w_toWait" bpmnElement="w_toWait">
636
- <di:waypoint x="2678" y="320" />
637
- <di:waypoint x="2778" y="320" />
704
+ <bpmndi:BPMNEdge id="BPMNEdge_w_toAnswerGw" bpmnElement="w_toAnswerGw">
705
+ <di:waypoint x="2542" y="320" />
706
+ <di:waypoint x="2642" y="320" />
707
+ </bpmndi:BPMNEdge>
708
+ <bpmndi:BPMNEdge id="BPMNEdge_w_sla" bpmnElement="w_sla">
709
+ <di:waypoint x="2492" y="378" />
710
+ <di:waypoint x="2492" y="398" />
711
+ <di:waypoint x="2810" y="398" />
712
+ <di:waypoint x="2810" y="178" />
713
+ <bpmndi:BPMNLabel>
714
+ <dc:Bounds x="2567" y="365" width="88" height="28" />
715
+ </bpmndi:BPMNLabel>
638
716
  </bpmndi:BPMNEdge>
639
717
  <bpmndi:BPMNEdge id="BPMNEdge_w_answerLoop" bpmnElement="w_answerLoop">
640
- <di:waypoint x="2796" y="338" />
641
- <di:waypoint x="2796" y="380" />
642
- <di:waypoint x="2278" y="380" />
643
- <di:waypoint x="2278" y="200" />
718
+ <di:waypoint x="2667" y="345" />
719
+ <di:waypoint x="2667" y="400" />
720
+ <di:waypoint x="2142" y="400" />
721
+ <di:waypoint x="2142" y="200" />
722
+ <bpmndi:BPMNLabel>
723
+ <dc:Bounds x="2380" y="378" width="49" height="14" />
724
+ </bpmndi:BPMNLabel>
644
725
  </bpmndi:BPMNEdge>
645
726
  </bpmndi:BPMNPlane>
646
727
  </bpmndi:BPMNDiagram>