generated from camunda-community-hub/template-repo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathspacetraders-manual-process.bpmn
2124 lines (2124 loc) · 297 KB
/
spacetraders-manual-process.bpmn
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="UTF-8"?>
<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:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:zeebe="http://camunda.org/schema/zeebe/1.0" xmlns:modeler="http://camunda.org/schema/modeler/1.0" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Web Modeler" exporterVersion="87be256" modeler:executionPlatform="Camunda Cloud" modeler:executionPlatformVersion="8.3.0" camunda:diagramRelationId="7a31f36e-7202-4e5c-87dc-ce5230e1e187">
<bpmn:process id="space-traders-manual-process" name="SpaceTraders - Manual process" isExecutable="true">
<bpmn:extensionElements>
<zeebe:userTaskForm id="userTaskForm_2is8fom">{
"executionPlatform": "Camunda Cloud",
"executionPlatformVersion": "8.3.0",
"exporter": {
"name": "Camunda Web Modeler",
"version": "93d428d"
},
"schemaVersion": 13,
"components": [
{
"text": "# SpaceTraders - Start",
"label": "Text view",
"type": "text",
"layout": {
"row": "Row_1n46dso",
"columns": null
},
"id": "Field_0kpjceg"
},
{
"values": [
{
"label": "Continue game",
"value": "continue-game"
},
{
"label": "New game",
"value": "new-game"
}
],
"label": "Choose to continue or start a new game",
"type": "select",
"layout": {
"row": "Row_1qo20qt",
"columns": null
},
"id": "Field_18giz7y",
"key": "operation",
"defaultValue": "continue-game"
},
{
"components": [
{
"text": "Continue a previous game by entering your game token. The token is created when starting a new game.",
"label": "Text view",
"type": "text",
"layout": {
"row": "Row_10l6cvf",
"columns": null
},
"id": "Field_07n6yd3"
},
{
"label": "Token",
"type": "textarea",
"layout": {
"row": "Row_101m968",
"columns": null
},
"id": "Field_0z12abc",
"key": "token",
"description": "Your game token.",
"validate": {
"required": true
}
}
],
"showOutline": true,
"label": "Continue game",
"type": "group",
"layout": {
"row": "Row_110t03v",
"columns": null
},
"id": "Field_1jhe7vt",
"conditional": {
"hide": "=operation != \"continue-game\""
}
},
{
"components": [
{
"text": "Start a new game by registering an agent. The agent is your alias in the game. ",
"label": "Text view",
"type": "text",
"layout": {
"row": "Row_0krv11g",
"columns": null
},
"id": "Field_1elsltt"
},
{
"label": "Agent symbol",
"type": "textfield",
"layout": {
"row": "Row_0kyq2zb",
"columns": null
},
"id": "Field_1i29y1m",
"key": "agent_name",
"description": "Your player alias. Must be unique. ",
"validate": {
"required": true,
"minLength": 3,
"maxLength": 14
}
}
],
"showOutline": true,
"label": "New game",
"type": "group",
"layout": {
"row": "Row_1arcorm",
"columns": null
},
"id": "Field_0gpakx3",
"conditional": {
"hide": "=operation != \"new-game\""
}
}
],
"type": "default",
"id": "space-traders-start"
}</zeebe:userTaskForm>
<zeebe:userTaskForm id="UserTaskForm_3f2t518">{
"executionPlatform": "Camunda Cloud",
"executionPlatformVersion": "8.3.0",
"exporter": {
"name": "Camunda Web Modeler",
"version": "93d428d"
},
"schemaVersion": 13,
"components": [
{
"text": "# SpaceTraders - List contracts\n\nView available contracts and accept a contract to start fulfilling it. \n",
"label": "Text view",
"type": "text",
"layout": {
"row": "Row_14dxlx3",
"columns": null
},
"id": "Field_01trw1p"
},
{
"components": [
{
"text": "{{#loop contracts[not(accepted)]}}\n\nId: *{{this.id}}*\nFaction: *{{this.factionSymbol}}*\nType: *{{this.type}}*\nDeadline: *{{this.terms.deadline}}*\n<br/>\n\nPayment on accept: *{{this.terms.payment.onAccepted}}*\nPayment on fulfilled: *{{this.terms.payment.onFulfilled}}*\n<br/>\n\n**To deliver**\n\n{{#loop this.terms.deliver}}\nTrage good: *{{this.tradeSymbol}}*\nUnits: *{{this.unitsRequired}}*\nDestination: *{{this.destinationSymbol}}*\n<br/>\n{{/loop}}\n\n---\n\n{{/loop}}",
"label": "Text view",
"type": "text",
"layout": {
"row": "Row_1p6exv8",
"columns": null
},
"id": "Field_1mtgpbj"
}
],
"showOutline": true,
"label": "Contracts",
"type": "group",
"layout": {
"row": "Row_05uoyxt",
"columns": null
},
"id": "Field_07reltk"
},
{
"label": "Select a contract",
"type": "select",
"layout": {
"row": "Row_1ov4s9h",
"columns": null
},
"id": "Field_1dpfffa",
"key": "selected_contract",
"searchable": false,
"valuesExpression": "=contracts.id"
},
{
"label": "Accept contract",
"type": "checkbox",
"layout": {
"row": "Row_131vlc5",
"columns": null
},
"id": "Field_1wjeyhs",
"key": "accept_contract",
"conditional": {
"hide": "=selected_contract = null"
}
}
],
"type": "default",
"id": "space-traders-list-contracts"
}</zeebe:userTaskForm>
<zeebe:userTaskForm id="UserTaskForm_0nah045">{
"executionPlatform": "Camunda Cloud",
"executionPlatformVersion": "8.3.0",
"exporter": {
"name": "Camunda Web Modeler",
"version": "bc7ac35"
},
"schemaVersion": 13,
"components": [
{
"text": "# SpaceTraders - List waypoints\n\nSee the available waypoints based on the filter. The list includes waypoints where a ship is located.\n",
"label": "Text view",
"type": "text",
"layout": {
"row": "Row_1xlv08m",
"columns": null
},
"id": "Field_0l7k1yu"
},
{
"components": [
{
"text": "{{#loop waypoints}}\n\nSymbol: *{{this.waypoint.symbol}}*\nType: *{{this.waypoint.type}}*\nDistance: *{{this.waypoint.distance}}*\nTraits: \n{{#loop this.waypoint.traits}}\n- *{{this}}*\n{{/loop}}\n\nShips: \n{{#loop this.ships}} \n- *{{this.symbol}}* (*{{this.type}}*)\n{{/loop}}\n\n---\n\n{{/loop}}",
"label": "Text view",
"type": "text",
"layout": {
"row": "Row_0a4qa2q",
"columns": null
},
"id": "Field_0n7ai20"
}
],
"showOutline": true,
"label": "Waypoints",
"type": "group",
"layout": {
"row": "Row_1ydnuwv",
"columns": null
},
"id": "Field_1b6g5n5"
}
],
"type": "default",
"id": "space-traders-list-waypoints"
}</zeebe:userTaskForm>
</bpmn:extensionElements>
<bpmn:startEvent id="StartEvent_1" name="Start game">
<bpmn:extensionElements>
<zeebe:formDefinition formKey="camunda-forms:bpmn:userTaskForm_2is8fom" />
</bpmn:extensionElements>
<bpmn:outgoing>Flow_0duixn2</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:exclusiveGateway id="Gateway_0fwpgw6" name="New game?" default="Flow_1dejhzn">
<bpmn:incoming>Flow_0duixn2</bpmn:incoming>
<bpmn:outgoing>Flow_08qnenf</bpmn:outgoing>
<bpmn:outgoing>Flow_1dejhzn</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:sequenceFlow id="Flow_0duixn2" sourceRef="StartEvent_1" targetRef="Gateway_0fwpgw6" />
<bpmn:sequenceFlow id="Flow_08qnenf" name="Yes" sourceRef="Gateway_0fwpgw6" targetRef="Activity_0t3yckb">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=operation = "new-game"</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:exclusiveGateway id="Gateway_1ftjo04">
<bpmn:incoming>Flow_0y2t95m</bpmn:incoming>
<bpmn:incoming>Flow_1dejhzn</bpmn:incoming>
<bpmn:outgoing>Flow_09l41ji</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:sequenceFlow id="Flow_0y2t95m" sourceRef="Activity_0t3yckb" targetRef="Gateway_1ftjo04" />
<bpmn:sequenceFlow id="Flow_09l41ji" sourceRef="Gateway_1ftjo04" targetRef="Activity_01ca0n6" />
<bpmn:callActivity id="Activity_01ca0n6" name="Collect data">
<bpmn:extensionElements>
<zeebe:calledElement processId="space-traders-collect-data" propagateAllChildVariables="false" />
<zeebe:ioMapping>
<zeebe:output source="=status" target="status" />
<zeebe:output source="=serverResets" target="serverResets" />
<zeebe:output source="=agent" target="agent" />
<zeebe:output source="=ships" target="ships" />
<zeebe:output source="=contracts" target="contracts" />
<zeebe:output source="=contracts[accepted and not(fulfilled)][1]" target="active_contract" />
<zeebe:output source="=ships[1].nav.systemSymbol" target="current_system" />
</zeebe:ioMapping>
</bpmn:extensionElements>
<bpmn:incoming>Flow_09l41ji</bpmn:incoming>
<bpmn:incoming>Flow_13dar2l</bpmn:incoming>
<bpmn:outgoing>Flow_1n0faxx</bpmn:outgoing>
</bpmn:callActivity>
<bpmn:sequenceFlow id="Flow_1n0faxx" sourceRef="Activity_01ca0n6" targetRef="Activity_17syx4t" />
<bpmn:userTask id="Activity_17syx4t" name="Control center">
<bpmn:extensionElements>
<zeebe:ioMapping>
<zeebe:input source="=null" target="action" />
<zeebe:input source="=false" target="show_token" />
<zeebe:input source="=for a_ship in ships return { symbol: a_ship.symbol, registration: { role: a_ship.registration.role }, nav: { waypointSymbol: a_ship.nav.waypointSymbol, status: a_ship.nav.status }, fuel: { current: a_ship.fuel.current, capacity: a_ship.fuel.capacity }, cargo: { units: a_ship.cargo.units, capacity: a_ship.cargo.capacity, inventory: for inventory in a_ship.cargo.inventory return { symbol: inventory.symbol, units: inventory.units } } }" target="ships" />
<zeebe:input source="=null" target="selected_ship" />
<zeebe:input source="=""" target="target_waypoint" />
<zeebe:output source="=action" target="action" />
<zeebe:output source="=list_waypoints_filter_traits" target="list_waypoints_filter_traits" />
<zeebe:output source="=list_waypoints_filter_type" target="list_waypoints_filter_type" />
<zeebe:output source="=selected_ship" target="selected_ship" />
<zeebe:output source="=target_waypoint" target="target_waypoint" />
</zeebe:ioMapping>
<zeebe:formDefinition formId="space-traders-select-action" />
</bpmn:extensionElements>
<bpmn:incoming>Flow_1n0faxx</bpmn:incoming>
<bpmn:outgoing>Flow_0lwwwm5</bpmn:outgoing>
</bpmn:userTask>
<bpmn:sequenceFlow id="Flow_1dejhzn" name="No" sourceRef="Gateway_0fwpgw6" targetRef="Gateway_1ftjo04" />
<bpmn:intermediateCatchEvent id="Event_0x6pre2" name="To control center">
<bpmn:outgoing>Flow_13dar2l</bpmn:outgoing>
<bpmn:linkEventDefinition id="LinkEventDefinition_1kyfsxd" name="to-control-center" />
</bpmn:intermediateCatchEvent>
<bpmn:sequenceFlow id="Flow_13dar2l" sourceRef="Event_0x6pre2" targetRef="Activity_01ca0n6" />
<bpmn:exclusiveGateway id="Gateway_072vi0y" name="Action?" default="Flow_0ppafdq">
<bpmn:incoming>Flow_0lwwwm5</bpmn:incoming>
<bpmn:outgoing>Flow_0ppafdq</bpmn:outgoing>
<bpmn:outgoing>Flow_0izcf74</bpmn:outgoing>
<bpmn:outgoing>Flow_19fa0md</bpmn:outgoing>
<bpmn:outgoing>Flow_1bgi9br</bpmn:outgoing>
<bpmn:outgoing>Flow_1vvaa7w</bpmn:outgoing>
<bpmn:outgoing>Flow_0z5ll9l</bpmn:outgoing>
<bpmn:outgoing>Flow_00fpv0m</bpmn:outgoing>
<bpmn:outgoing>Flow_0cwrbc4</bpmn:outgoing>
<bpmn:outgoing>Flow_1f47ydk</bpmn:outgoing>
<bpmn:outgoing>Flow_1irtmfz</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:sequenceFlow id="Flow_0lwwwm5" sourceRef="Activity_17syx4t" targetRef="Gateway_072vi0y" />
<bpmn:sequenceFlow id="Flow_0ppafdq" name="Reload" sourceRef="Gateway_072vi0y" targetRef="Event_04901mf" />
<bpmn:intermediateThrowEvent id="Event_04901mf" name="To control center">
<bpmn:incoming>Flow_0ppafdq</bpmn:incoming>
<bpmn:linkEventDefinition id="LinkEventDefinition_0m4mjjh" name="to-control-center" />
</bpmn:intermediateThrowEvent>
<bpmn:sequenceFlow id="Flow_0izcf74" name="List contracts" sourceRef="Gateway_072vi0y" targetRef="Activity_1wbkqrd">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=action = "list-contracts"</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_01uumfe" sourceRef="Activity_1wbkqrd" targetRef="Activity_11p7lac" />
<bpmn:userTask id="Activity_11p7lac" name="Select contract">
<bpmn:extensionElements>
<zeebe:formDefinition formKey="camunda-forms:bpmn:UserTaskForm_3f2t518" />
<zeebe:ioMapping>
<zeebe:input source="=null" target="selected_contract" />
<zeebe:output source="=if selected_contract = "null" then null else selected_contract" target="selected_contract" />
<zeebe:output source="=accept_contract" target="accept_contract" />
</zeebe:ioMapping>
</bpmn:extensionElements>
<bpmn:incoming>Flow_01uumfe</bpmn:incoming>
<bpmn:outgoing>Flow_1ipqg2i</bpmn:outgoing>
</bpmn:userTask>
<bpmn:exclusiveGateway id="Gateway_1gt3oyh" name="Accept contract?" default="Flow_11qz4m5">
<bpmn:incoming>Flow_1ipqg2i</bpmn:incoming>
<bpmn:outgoing>Flow_15zoeyh</bpmn:outgoing>
<bpmn:outgoing>Flow_11qz4m5</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:sequenceFlow id="Flow_1ipqg2i" sourceRef="Activity_11p7lac" targetRef="Gateway_1gt3oyh" />
<bpmn:sequenceFlow id="Flow_15zoeyh" name="Yes" sourceRef="Gateway_1gt3oyh" targetRef="Activity_186utsd">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=selected_contract != null and accept_contract = true</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:exclusiveGateway id="Gateway_0qq2qhy">
<bpmn:incoming>Flow_0ji2dvi</bpmn:incoming>
<bpmn:incoming>Flow_11qz4m5</bpmn:incoming>
<bpmn:outgoing>Flow_1ob7h1c</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:sequenceFlow id="Flow_0ji2dvi" sourceRef="Activity_186utsd" targetRef="Gateway_0qq2qhy" />
<bpmn:sequenceFlow id="Flow_1ob7h1c" sourceRef="Gateway_0qq2qhy" targetRef="Event_0kg68mo" />
<bpmn:intermediateThrowEvent id="Event_0kg68mo" name="To control center">
<bpmn:incoming>Flow_1ob7h1c</bpmn:incoming>
<bpmn:linkEventDefinition id="LinkEventDefinition_19zqk0q" name="to-control-center" />
</bpmn:intermediateThrowEvent>
<bpmn:sequenceFlow id="Flow_11qz4m5" name="No" sourceRef="Gateway_1gt3oyh" targetRef="Gateway_0qq2qhy" />
<bpmn:sequenceFlow id="Flow_19fa0md" name="List waypoints" sourceRef="Gateway_072vi0y" targetRef="Activity_1rpi4qn">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=action = "list-waypoints"</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_1s2ar3d" sourceRef="Activity_00bqf00" targetRef="Activity_07ddhuo" />
<bpmn:intermediateThrowEvent id="Event_1890vku" name="To control center">
<bpmn:incoming>Flow_1cgbtgr</bpmn:incoming>
<bpmn:linkEventDefinition id="LinkEventDefinition_1k0iwiu" name="to-control-center" />
</bpmn:intermediateThrowEvent>
<bpmn:userTask id="Activity_01xfyud" name="Show waypoints">
<bpmn:extensionElements>
<zeebe:ioMapping>
<zeebe:input source="={ all_waypoints: concatenate(flatten(waypoints_list), ship_waypoints), distinct_waypoints: (for waypoint in all_waypoints return if list contains(partial.symbol, waypoint.symbol) then null else waypoint)[item != null], waypoints_and_ships: for waypoint in distinct_waypoints return { waypoint: { symbol: waypoint.symbol, type: waypoint.type, traits: waypoint.traits.symbol, distance: decimal(sqrt(waypoint.x**2 + waypoint.y**2), 1) }, ships: for ship in ships[nav.waypointSymbol = waypoint.symbol] return { symbol: ship.symbol, type: ship.registration.role } }, sorted_waypoints: sort(waypoints_and_ships, function (x,y) x.waypoint.distance < y.waypoint.distance), result: sublist(sorted_waypoints, 1, 50) }.result" target="waypoints" />
</zeebe:ioMapping>
<zeebe:formDefinition formKey="camunda-forms:bpmn:UserTaskForm_0nah045" />
</bpmn:extensionElements>
<bpmn:incoming>Flow_0v38my7</bpmn:incoming>
</bpmn:userTask>
<bpmn:subProcess id="Activity_1rpi4qn" name="For each trait and type">
<bpmn:incoming>Flow_19fa0md</bpmn:incoming>
<bpmn:outgoing>Flow_17jrfyz</bpmn:outgoing>
<bpmn:multiInstanceLoopCharacteristics isSequential="true">
<bpmn:extensionElements>
<zeebe:loopCharacteristics inputCollection="=if list_waypoints_filter_traits != [] then list_waypoints_filter_traits else [null]" inputElement="waypoint_trait" outputCollection="waypoints_list" outputElement="=waypoints_list_by_type" />
</bpmn:extensionElements>
</bpmn:multiInstanceLoopCharacteristics>
<bpmn:startEvent id="Event_1gimx9o">
<bpmn:outgoing>Flow_12czeed</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:callActivity id="Activity_0cu0w4n" name="List waypoints">
<bpmn:extensionElements>
<zeebe:calledElement processId="space-traders-list-waypoints" propagateAllChildVariables="false" />
<zeebe:ioMapping>
<zeebe:input source="=current_system" target="system" />
<zeebe:input source="=waypoint_trait" target="trait" />
<zeebe:input source="=waypoint_type" target="type" />
<zeebe:output source="=waypoints" target="waypoints_by_type" />
</zeebe:ioMapping>
</bpmn:extensionElements>
<bpmn:incoming>Flow_12czeed</bpmn:incoming>
<bpmn:outgoing>Flow_1r1sg42</bpmn:outgoing>
<bpmn:multiInstanceLoopCharacteristics isSequential="true">
<bpmn:extensionElements>
<zeebe:loopCharacteristics inputCollection="=if list_waypoints_filter_type != [] then list_waypoints_filter_type else [null]" inputElement="waypoint_type" outputCollection="waypoints_list_by_type" outputElement="=waypoints_by_type" />
</bpmn:extensionElements>
</bpmn:multiInstanceLoopCharacteristics>
</bpmn:callActivity>
<bpmn:sequenceFlow id="Flow_12czeed" sourceRef="Event_1gimx9o" targetRef="Activity_0cu0w4n" />
<bpmn:endEvent id="Event_1yromdq">
<bpmn:incoming>Flow_1r1sg42</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_1r1sg42" sourceRef="Activity_0cu0w4n" targetRef="Event_1yromdq" />
</bpmn:subProcess>
<bpmn:sequenceFlow id="Flow_17jrfyz" sourceRef="Activity_1rpi4qn" targetRef="Activity_00bqf00" />
<bpmn:sequenceFlow id="Flow_1bgi9br" name="Purchase a ship" sourceRef="Gateway_072vi0y" targetRef="Activity_0fc9ms3">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=action = "purchase-ship"</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:callActivity id="Activity_0fc9ms3" name="List shipyards">
<bpmn:extensionElements>
<zeebe:calledElement processId="space-traders-list-waypoints" propagateAllChildVariables="false" />
<zeebe:ioMapping>
<zeebe:input source="=current_system" target="system" />
<zeebe:input source="="SHIPYARD"" target="trait" />
<zeebe:input source="=null" target="type" />
<zeebe:output source="=waypoints" target="shipyards" />
</zeebe:ioMapping>
</bpmn:extensionElements>
<bpmn:incoming>Flow_1bgi9br</bpmn:incoming>
<bpmn:outgoing>Flow_1poktqu</bpmn:outgoing>
</bpmn:callActivity>
<bpmn:sequenceFlow id="Flow_1poktqu" sourceRef="Activity_0fc9ms3" targetRef="Activity_0k6jizm" />
<bpmn:sequenceFlow id="Flow_1mu2zm2" sourceRef="Activity_0k6jizm" targetRef="Activity_0zwegbp" />
<bpmn:userTask id="Activity_0zwegbp" name="Show available ships">
<bpmn:extensionElements>
<zeebe:ioMapping>
<zeebe:input source="=sort(flatten(flatten(available_ship_list)), function (x,y) x.ship_type < y.ship_type)" target="available_ships" />
<zeebe:input source="=null" target="selected_ship" />
<zeebe:input source="=0" target="ship_amount" />
<zeebe:output source="=if selected_ship = "null" then null else selected_ship" target="selected_ship" />
<zeebe:output source="=ship_amount" target="ship_amount" />
</zeebe:ioMapping>
<zeebe:formDefinition formId="space-traders-purchase-ship" />
</bpmn:extensionElements>
<bpmn:incoming>Flow_1mu2zm2</bpmn:incoming>
<bpmn:outgoing>Flow_0cjie5m</bpmn:outgoing>
</bpmn:userTask>
<bpmn:exclusiveGateway id="Gateway_14mr1mo" name="Purchase a ship?" default="Flow_1581vz1">
<bpmn:incoming>Flow_0cjie5m</bpmn:incoming>
<bpmn:outgoing>Flow_19l8jfg</bpmn:outgoing>
<bpmn:outgoing>Flow_1581vz1</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:sequenceFlow id="Flow_0cjie5m" sourceRef="Activity_0zwegbp" targetRef="Gateway_14mr1mo" />
<bpmn:sequenceFlow id="Flow_19l8jfg" name="Yes" sourceRef="Gateway_14mr1mo" targetRef="Activity_12hofmi">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=selected_ship != null and ship_amount > 0</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:exclusiveGateway id="Gateway_0tnhpt0">
<bpmn:incoming>Flow_10mbx4n</bpmn:incoming>
<bpmn:incoming>Flow_1581vz1</bpmn:incoming>
<bpmn:outgoing>Flow_0ijgbjx</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:sequenceFlow id="Flow_10mbx4n" sourceRef="Activity_12hofmi" targetRef="Gateway_0tnhpt0" />
<bpmn:intermediateThrowEvent id="Event_08bycqp" name="To control center">
<bpmn:incoming>Flow_0ijgbjx</bpmn:incoming>
<bpmn:linkEventDefinition id="LinkEventDefinition_0fkgd1p" name="to-control-center" />
</bpmn:intermediateThrowEvent>
<bpmn:sequenceFlow id="Flow_0ijgbjx" sourceRef="Gateway_0tnhpt0" targetRef="Event_08bycqp" />
<bpmn:sequenceFlow id="Flow_1581vz1" name="No" sourceRef="Gateway_14mr1mo" targetRef="Gateway_0tnhpt0" />
<bpmn:serviceTask id="Activity_0t3yckb" name="Register new agent" zeebe:modelerTemplate="com.camunda.SpaceTradersApi" zeebe:modelerTemplateVersion="5" zeebe:modelerTemplateIcon="data:image/png;base64,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">
<bpmn:extensionElements>
<zeebe:taskDefinition type="io.camunda:http-json:1" retries="10" />
<zeebe:ioMapping>
<zeebe:input source="placeholder" target="objects" />
<zeebe:input source="=agent_name" target="objects.register_registerRequest.symbol" />
<zeebe:input source="COSMIC" target="objects.register_registerRequest.faction" />
<zeebe:input source="post" target="method" />
<zeebe:input source="="https://api.spacetraders.io/v2/register"" target="url" />
<zeebe:input source="={ }" target="queryParameters" />
<zeebe:input source="= objects.register_registerRequest" target="body" />
</zeebe:ioMapping>
<zeebe:taskHeaders>
<zeebe:header key="category" value="game" />
<zeebe:header key="operation" value="register" />
<zeebe:header key="resultExpression" value="={"agent": response.body.data.agent, "contract": response.body.data.contract, "faction": response.body.data.faction, "ship": response.body.data.ship, "token": response.body.data.token}" />
<zeebe:header key="errorExpression" value="=if matches(error.code, "4\d\d") then { error_code: substring after(extract(error.message,"\"code\":\d{4}")[1], ":"), error_message: substring(extract(error.message, "\"message\":\"(\w|\d|\s|\.|\-)+")[1], 12), error_code_by_name: { "4000":"cooldownConflictError", "4001":"waypointNoAccessError", "4100":"tokenEmptyError", "4101":"tokenMissingSubjectError", "4102":"tokenInvalidSubjectError", "4103":"missingTokenRequestError", "4104":"invalidTokenRequestError", "4105":"invalidTokenSubjectError", "4106":"accountNotExistsError", "4107":"agentNotExistsError", "4108":"accountHasNoAgentError", "4109":"registerAgentExistsError", "4110":"registerAgentSymbolReservedError", "4111":"registerAgentConflictSymbolError", "4200":"navigateInTransitError", "4201":"navigateInvalidDestinationError", "4202":"navigateOutsideSystemError", "4203":"navigateInsufficientFuelError", "4204":"navigateSameDestinationError", "4205":"shipExtractInvalidWaypointError", "4206":"shipExtractPermissionError", "4207":"shipJumpNoSystemError", "4208":"shipJumpSameSystemError", "4210":"shipJumpMissingModuleError", "4211":"shipJumpNoValidWaypointError", "4212":"shipJumpMissingAntimatterError", "4214":"shipInTransitError", "4215":"shipMissingSensorArraysError", "4216":"purchaseShipCreditsError", "4217":"shipCargoExceedsLimitError", "4218":"shipCargoMissingError", "4219":"shipCargoUnitCountError", "4220":"shipSurveyVerificationError", "4221":"shipSurveyExpirationError", "4222":"shipSurveyWaypointTypeError", "4223":"shipSurveyOrbitError", "4224":"shipSurveyExhaustedError", "4225":"shipRefuelDockedError", "4226":"shipRefuelInvalidWaypointError", "4227":"shipMissingMountsError", "4228":"shipCargoFullError", "4229":"shipJumpFromGateToGateError", "4230":"waypointChartedError", "4231":"shipTransferShipNotFound", "4232":"shipTransferAgentConflict", "4233":"shipTransferSameShipConflict", "4234":"shipTransferLocationConflict", "4235":"warpInsideSystemError", "4236":"shipNotInOrbitError", "4237":"shipInvalidRefineryGoodError", "4238":"shipInvalidRefineryTypeError", "4239":"shipMissingRefineryError", "4240":"shipMissingSurveyorError", "4241":"shipMissingWarpDriveError", "4242":"shipMissingMineralProcessorError", "4243":"shipMissingMiningLasersError", "4244":"shipNotDockedError", "4245":"purchaseShipNotPresentError", "4246":"shipMountNoShipyardError", "4247":"shipMissingMountError", "4248":"shipMountInsufficientCreditsError", "4249":"shipMissingPowerError", "4250":"shipMissingSlotsError", "4251":"shipMissingMountsError", "4252":"shipMissingCrewError", "4253":"shipExtractDestabilizedError", "4254":"shipJumpInvalidOriginError", "4255":"shipJumpInvalidWaypointError", "4256":"shipJumpOriginUnderConstructionError", "4257":"shipMissingGasProcessorError", "4258":"shipMissingGasSiphonsError", "4259":"shipSiphonInvalidWaypointError", "4260":"shipSiphonPermissionError", "4261":"waypointNoYieldError", "4262":"shipJumpDestinationUnderConstructionError", "4500":"acceptContractNotAuthorizedError", "4501":"acceptContractConflictError", "4502":"fulfillContractDeliveryError", "4503":"contractDeadlineError", "4504":"contractFulfilledError", "4505":"contractNotAcceptedError", "4506":"contractNotAuthorizedError", "4508":"shipDeliverTermsError", "4509":"shipDeliverFulfilledError", "4510":"shipDeliverInvalidLocationError", "4511":"existingContractError", "4600":"marketTradeInsufficientCreditsError", "4601":"marketTradeNoPurchaseError", "4602":"marketTradeNotSoldError", "4603":"marketNotFoundError", "4604":"marketTradeUnitLimitError", "4700":"waypointNoFactionError", "4800":"constructionMaterialNotRequired", "4801":"constructionMaterialFulfilled", "4802":"shipConstructionInvalidLocationError" }, bpmn_error_code: get or else(get value(error_code_by_name, error_code), error_code), error_data: {error_code: error_code, error_message: error_message, error_name: bpmn_error_code}, bpmnError: bpmnError(bpmn_error_code, error_message, error_data) }.bpmnError else null" />
<zeebe:header key="retryBackoff" value="PT1S" />
</zeebe:taskHeaders>
<zeebe:properties>
<zeebe:property name="custom_error_handling" value="by_error_name" />
</zeebe:properties>
</bpmn:extensionElements>
<bpmn:incoming>Flow_08qnenf</bpmn:incoming>
<bpmn:outgoing>Flow_0y2t95m</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:serviceTask id="Activity_1wbkqrd" name="List contracts" zeebe:modelerTemplate="com.camunda.SpaceTradersApi" zeebe:modelerTemplateVersion="5" zeebe:modelerTemplateIcon="data:image/png;base64,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">
<bpmn:extensionElements>
<zeebe:taskDefinition type="io.camunda:http-json:1" retries="10" />
<zeebe:ioMapping>
<zeebe:input source="placeholder" target="objects" />
<zeebe:input source="1" target="objects.getContracts_page" />
<zeebe:input source="10" target="objects.getContracts_limit" />
<zeebe:input source="bearer" target="authentication.type" />
<zeebe:input source="=token" target="authentication.token" />
<zeebe:input source="get" target="method" />
<zeebe:input source="="https://api.spacetraders.io/v2/my/contracts"" target="url" />
<zeebe:input source="={ "page": objects.getContracts_page, "limit": objects.getContracts_limit }" target="queryParameters" />
</zeebe:ioMapping>
<zeebe:taskHeaders>
<zeebe:header key="category" value="contracts" />
<zeebe:header key="operation" value="getContracts" />
<zeebe:header key="resultExpression" value="={"contracts": response.body.data, "meta": response.body.meta}" />
<zeebe:header key="errorExpression" value="=if matches(error.code, "4\d\d") then { error_code: substring after(extract(error.message,"\"code\":\d{4}")[1], ":"), error_message: substring(extract(error.message, "\"message\":\"(\w|\d|\s|\.|\-)+")[1], 12), error_code_by_name: { "4000":"cooldownConflictError", "4001":"waypointNoAccessError", "4100":"tokenEmptyError", "4101":"tokenMissingSubjectError", "4102":"tokenInvalidSubjectError", "4103":"missingTokenRequestError", "4104":"invalidTokenRequestError", "4105":"invalidTokenSubjectError", "4106":"accountNotExistsError", "4107":"agentNotExistsError", "4108":"accountHasNoAgentError", "4109":"registerAgentExistsError", "4110":"registerAgentSymbolReservedError", "4111":"registerAgentConflictSymbolError", "4200":"navigateInTransitError", "4201":"navigateInvalidDestinationError", "4202":"navigateOutsideSystemError", "4203":"navigateInsufficientFuelError", "4204":"navigateSameDestinationError", "4205":"shipExtractInvalidWaypointError", "4206":"shipExtractPermissionError", "4207":"shipJumpNoSystemError", "4208":"shipJumpSameSystemError", "4210":"shipJumpMissingModuleError", "4211":"shipJumpNoValidWaypointError", "4212":"shipJumpMissingAntimatterError", "4214":"shipInTransitError", "4215":"shipMissingSensorArraysError", "4216":"purchaseShipCreditsError", "4217":"shipCargoExceedsLimitError", "4218":"shipCargoMissingError", "4219":"shipCargoUnitCountError", "4220":"shipSurveyVerificationError", "4221":"shipSurveyExpirationError", "4222":"shipSurveyWaypointTypeError", "4223":"shipSurveyOrbitError", "4224":"shipSurveyExhaustedError", "4225":"shipRefuelDockedError", "4226":"shipRefuelInvalidWaypointError", "4227":"shipMissingMountsError", "4228":"shipCargoFullError", "4229":"shipJumpFromGateToGateError", "4230":"waypointChartedError", "4231":"shipTransferShipNotFound", "4232":"shipTransferAgentConflict", "4233":"shipTransferSameShipConflict", "4234":"shipTransferLocationConflict", "4235":"warpInsideSystemError", "4236":"shipNotInOrbitError", "4237":"shipInvalidRefineryGoodError", "4238":"shipInvalidRefineryTypeError", "4239":"shipMissingRefineryError", "4240":"shipMissingSurveyorError", "4241":"shipMissingWarpDriveError", "4242":"shipMissingMineralProcessorError", "4243":"shipMissingMiningLasersError", "4244":"shipNotDockedError", "4245":"purchaseShipNotPresentError", "4246":"shipMountNoShipyardError", "4247":"shipMissingMountError", "4248":"shipMountInsufficientCreditsError", "4249":"shipMissingPowerError", "4250":"shipMissingSlotsError", "4251":"shipMissingMountsError", "4252":"shipMissingCrewError", "4253":"shipExtractDestabilizedError", "4254":"shipJumpInvalidOriginError", "4255":"shipJumpInvalidWaypointError", "4256":"shipJumpOriginUnderConstructionError", "4257":"shipMissingGasProcessorError", "4258":"shipMissingGasSiphonsError", "4259":"shipSiphonInvalidWaypointError", "4260":"shipSiphonPermissionError", "4261":"waypointNoYieldError", "4262":"shipJumpDestinationUnderConstructionError", "4500":"acceptContractNotAuthorizedError", "4501":"acceptContractConflictError", "4502":"fulfillContractDeliveryError", "4503":"contractDeadlineError", "4504":"contractFulfilledError", "4505":"contractNotAcceptedError", "4506":"contractNotAuthorizedError", "4508":"shipDeliverTermsError", "4509":"shipDeliverFulfilledError", "4510":"shipDeliverInvalidLocationError", "4511":"existingContractError", "4600":"marketTradeInsufficientCreditsError", "4601":"marketTradeNoPurchaseError", "4602":"marketTradeNotSoldError", "4603":"marketNotFoundError", "4604":"marketTradeUnitLimitError", "4700":"waypointNoFactionError", "4800":"constructionMaterialNotRequired", "4801":"constructionMaterialFulfilled", "4802":"shipConstructionInvalidLocationError" }, bpmn_error_code: get or else(get value(error_code_by_name, error_code), error_code), error_data: {error_code: error_code, error_message: error_message, error_name: bpmn_error_code}, bpmnError: bpmnError(bpmn_error_code, error_message, error_data) }.bpmnError else null" />
<zeebe:header key="retryBackoff" value="PT1S" />
</zeebe:taskHeaders>
<zeebe:properties>
<zeebe:property name="custom_error_handling" value="by_error_name" />
</zeebe:properties>
</bpmn:extensionElements>
<bpmn:incoming>Flow_0izcf74</bpmn:incoming>
<bpmn:outgoing>Flow_01uumfe</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:serviceTask id="Activity_186utsd" name="Accept contract" zeebe:modelerTemplate="com.camunda.SpaceTradersApi" zeebe:modelerTemplateVersion="5" zeebe:modelerTemplateIcon="data:image/png;base64,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">
<bpmn:extensionElements>
<zeebe:taskDefinition type="io.camunda:http-json:1" retries="10" />
<zeebe:ioMapping>
<zeebe:input source="placeholder" target="objects" />
<zeebe:input source="=selected_contract" target="objects.acceptContract_contractId" />
<zeebe:input source="bearer" target="authentication.type" />
<zeebe:input source="=token" target="authentication.token" />
<zeebe:input source="post" target="method" />
<zeebe:input source="="https://api.spacetraders.io/v2/my/contracts/" + string(objects.acceptContract_contractId) + "/accept"" target="url" />
<zeebe:input source="={ }" target="queryParameters" />
</zeebe:ioMapping>
<zeebe:taskHeaders>
<zeebe:header key="category" value="contracts" />
<zeebe:header key="operation" value="acceptContract" />
<zeebe:header key="resultExpression" value="={"agent": response.body.data.agent, "contract": response.body.data.contract}" />
<zeebe:header key="errorExpression" value="=if matches(error.code, "4\d\d") then { error_code: substring after(extract(error.message,"\"code\":\d{4}")[1], ":"), error_message: substring(extract(error.message, "\"message\":\"(\w|\d|\s|\.|\-)+")[1], 12), error_code_by_name: { "4000":"cooldownConflictError", "4001":"waypointNoAccessError", "4100":"tokenEmptyError", "4101":"tokenMissingSubjectError", "4102":"tokenInvalidSubjectError", "4103":"missingTokenRequestError", "4104":"invalidTokenRequestError", "4105":"invalidTokenSubjectError", "4106":"accountNotExistsError", "4107":"agentNotExistsError", "4108":"accountHasNoAgentError", "4109":"registerAgentExistsError", "4110":"registerAgentSymbolReservedError", "4111":"registerAgentConflictSymbolError", "4200":"navigateInTransitError", "4201":"navigateInvalidDestinationError", "4202":"navigateOutsideSystemError", "4203":"navigateInsufficientFuelError", "4204":"navigateSameDestinationError", "4205":"shipExtractInvalidWaypointError", "4206":"shipExtractPermissionError", "4207":"shipJumpNoSystemError", "4208":"shipJumpSameSystemError", "4210":"shipJumpMissingModuleError", "4211":"shipJumpNoValidWaypointError", "4212":"shipJumpMissingAntimatterError", "4214":"shipInTransitError", "4215":"shipMissingSensorArraysError", "4216":"purchaseShipCreditsError", "4217":"shipCargoExceedsLimitError", "4218":"shipCargoMissingError", "4219":"shipCargoUnitCountError", "4220":"shipSurveyVerificationError", "4221":"shipSurveyExpirationError", "4222":"shipSurveyWaypointTypeError", "4223":"shipSurveyOrbitError", "4224":"shipSurveyExhaustedError", "4225":"shipRefuelDockedError", "4226":"shipRefuelInvalidWaypointError", "4227":"shipMissingMountsError", "4228":"shipCargoFullError", "4229":"shipJumpFromGateToGateError", "4230":"waypointChartedError", "4231":"shipTransferShipNotFound", "4232":"shipTransferAgentConflict", "4233":"shipTransferSameShipConflict", "4234":"shipTransferLocationConflict", "4235":"warpInsideSystemError", "4236":"shipNotInOrbitError", "4237":"shipInvalidRefineryGoodError", "4238":"shipInvalidRefineryTypeError", "4239":"shipMissingRefineryError", "4240":"shipMissingSurveyorError", "4241":"shipMissingWarpDriveError", "4242":"shipMissingMineralProcessorError", "4243":"shipMissingMiningLasersError", "4244":"shipNotDockedError", "4245":"purchaseShipNotPresentError", "4246":"shipMountNoShipyardError", "4247":"shipMissingMountError", "4248":"shipMountInsufficientCreditsError", "4249":"shipMissingPowerError", "4250":"shipMissingSlotsError", "4251":"shipMissingMountsError", "4252":"shipMissingCrewError", "4253":"shipExtractDestabilizedError", "4254":"shipJumpInvalidOriginError", "4255":"shipJumpInvalidWaypointError", "4256":"shipJumpOriginUnderConstructionError", "4257":"shipMissingGasProcessorError", "4258":"shipMissingGasSiphonsError", "4259":"shipSiphonInvalidWaypointError", "4260":"shipSiphonPermissionError", "4261":"waypointNoYieldError", "4262":"shipJumpDestinationUnderConstructionError", "4500":"acceptContractNotAuthorizedError", "4501":"acceptContractConflictError", "4502":"fulfillContractDeliveryError", "4503":"contractDeadlineError", "4504":"contractFulfilledError", "4505":"contractNotAcceptedError", "4506":"contractNotAuthorizedError", "4508":"shipDeliverTermsError", "4509":"shipDeliverFulfilledError", "4510":"shipDeliverInvalidLocationError", "4511":"existingContractError", "4600":"marketTradeInsufficientCreditsError", "4601":"marketTradeNoPurchaseError", "4602":"marketTradeNotSoldError", "4603":"marketNotFoundError", "4604":"marketTradeUnitLimitError", "4700":"waypointNoFactionError", "4800":"constructionMaterialNotRequired", "4801":"constructionMaterialFulfilled", "4802":"shipConstructionInvalidLocationError" }, bpmn_error_code: get or else(get value(error_code_by_name, error_code), error_code), error_data: {error_code: error_code, error_message: error_message, error_name: bpmn_error_code}, bpmnError: bpmnError(bpmn_error_code, error_message, error_data) }.bpmnError else null" />
<zeebe:header key="retryBackoff" value="PT1S" />
</zeebe:taskHeaders>
<zeebe:properties>
<zeebe:property name="custom_error_handling" value="by_error_name" />
</zeebe:properties>
</bpmn:extensionElements>
<bpmn:incoming>Flow_15zoeyh</bpmn:incoming>
<bpmn:outgoing>Flow_0ji2dvi</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:serviceTask id="Activity_00bqf00" name="List ships" zeebe:modelerTemplate="com.camunda.SpaceTradersApi" zeebe:modelerTemplateVersion="5" zeebe:modelerTemplateIcon="data:image/png;base64,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">
<bpmn:extensionElements>
<zeebe:taskDefinition type="io.camunda:http-json:1" retries="10" />
<zeebe:ioMapping>
<zeebe:input source="placeholder" target="objects" />
<zeebe:input source="1" target="objects.getMyShips_page" />
<zeebe:input source="10" target="objects.getMyShips_limit" />
<zeebe:input source="bearer" target="authentication.type" />
<zeebe:input source="=token" target="authentication.token" />
<zeebe:input source="get" target="method" />
<zeebe:input source="="https://api.spacetraders.io/v2/my/ships"" target="url" />
<zeebe:input source="={ "page": objects.getMyShips_page, "limit": objects.getMyShips_limit }" target="queryParameters" />
</zeebe:ioMapping>
<zeebe:taskHeaders>
<zeebe:header key="category" value="fleet" />
<zeebe:header key="operation" value="getMyShips" />
<zeebe:header key="resultExpression" value="={ "ships": response.body.data, "meta": response.body.meta }" />
<zeebe:header key="errorExpression" value="=if matches(error.code, "4\d\d") then { error_code: substring after(extract(error.message,"\"code\":\d{4}")[1], ":"), error_message: substring(extract(error.message, "\"message\":\"(\w|\d|\s|\.|\-)+")[1], 12), error_code_by_name: { "4000":"cooldownConflictError", "4001":"waypointNoAccessError", "4100":"tokenEmptyError", "4101":"tokenMissingSubjectError", "4102":"tokenInvalidSubjectError", "4103":"missingTokenRequestError", "4104":"invalidTokenRequestError", "4105":"invalidTokenSubjectError", "4106":"accountNotExistsError", "4107":"agentNotExistsError", "4108":"accountHasNoAgentError", "4109":"registerAgentExistsError", "4110":"registerAgentSymbolReservedError", "4111":"registerAgentConflictSymbolError", "4200":"navigateInTransitError", "4201":"navigateInvalidDestinationError", "4202":"navigateOutsideSystemError", "4203":"navigateInsufficientFuelError", "4204":"navigateSameDestinationError", "4205":"shipExtractInvalidWaypointError", "4206":"shipExtractPermissionError", "4207":"shipJumpNoSystemError", "4208":"shipJumpSameSystemError", "4210":"shipJumpMissingModuleError", "4211":"shipJumpNoValidWaypointError", "4212":"shipJumpMissingAntimatterError", "4214":"shipInTransitError", "4215":"shipMissingSensorArraysError", "4216":"purchaseShipCreditsError", "4217":"shipCargoExceedsLimitError", "4218":"shipCargoMissingError", "4219":"shipCargoUnitCountError", "4220":"shipSurveyVerificationError", "4221":"shipSurveyExpirationError", "4222":"shipSurveyWaypointTypeError", "4223":"shipSurveyOrbitError", "4224":"shipSurveyExhaustedError", "4225":"shipRefuelDockedError", "4226":"shipRefuelInvalidWaypointError", "4227":"shipMissingMountsError", "4228":"shipCargoFullError", "4229":"shipJumpFromGateToGateError", "4230":"waypointChartedError", "4231":"shipTransferShipNotFound", "4232":"shipTransferAgentConflict", "4233":"shipTransferSameShipConflict", "4234":"shipTransferLocationConflict", "4235":"warpInsideSystemError", "4236":"shipNotInOrbitError", "4237":"shipInvalidRefineryGoodError", "4238":"shipInvalidRefineryTypeError", "4239":"shipMissingRefineryError", "4240":"shipMissingSurveyorError", "4241":"shipMissingWarpDriveError", "4242":"shipMissingMineralProcessorError", "4243":"shipMissingMiningLasersError", "4244":"shipNotDockedError", "4245":"purchaseShipNotPresentError", "4246":"shipMountNoShipyardError", "4247":"shipMissingMountError", "4248":"shipMountInsufficientCreditsError", "4249":"shipMissingPowerError", "4250":"shipMissingSlotsError", "4251":"shipMissingMountsError", "4252":"shipMissingCrewError", "4253":"shipExtractDestabilizedError", "4254":"shipJumpInvalidOriginError", "4255":"shipJumpInvalidWaypointError", "4256":"shipJumpOriginUnderConstructionError", "4257":"shipMissingGasProcessorError", "4258":"shipMissingGasSiphonsError", "4259":"shipSiphonInvalidWaypointError", "4260":"shipSiphonPermissionError", "4261":"waypointNoYieldError", "4262":"shipJumpDestinationUnderConstructionError", "4500":"acceptContractNotAuthorizedError", "4501":"acceptContractConflictError", "4502":"fulfillContractDeliveryError", "4503":"contractDeadlineError", "4504":"contractFulfilledError", "4505":"contractNotAcceptedError", "4506":"contractNotAuthorizedError", "4508":"shipDeliverTermsError", "4509":"shipDeliverFulfilledError", "4510":"shipDeliverInvalidLocationError", "4511":"existingContractError", "4600":"marketTradeInsufficientCreditsError", "4601":"marketTradeNoPurchaseError", "4602":"marketTradeNotSoldError", "4603":"marketNotFoundError", "4604":"marketTradeUnitLimitError", "4700":"waypointNoFactionError", "4800":"constructionMaterialNotRequired", "4801":"constructionMaterialFulfilled", "4802":"shipConstructionInvalidLocationError" }, bpmn_error_code: get or else(get value(error_code_by_name, error_code), error_code), error_data: {error_code: error_code, error_message: error_message, error_name: bpmn_error_code}, bpmnError: bpmnError(bpmn_error_code, error_message, error_data) }.bpmnError else null" />
<zeebe:header key="retryBackoff" value="PT1S" />
</zeebe:taskHeaders>
<zeebe:properties>
<zeebe:property name="custom_error_handling" value="by_error_name" />
</zeebe:properties>
</bpmn:extensionElements>
<bpmn:incoming>Flow_17jrfyz</bpmn:incoming>
<bpmn:outgoing>Flow_1s2ar3d</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:serviceTask id="Activity_07ddhuo" name="List ship waypoints" zeebe:modelerTemplate="com.camunda.SpaceTradersApi" zeebe:modelerTemplateVersion="5" zeebe:modelerTemplateIcon="data:image/png;base64,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">
<bpmn:extensionElements>
<zeebe:taskDefinition type="io.camunda:http-json:1" retries="10" />
<zeebe:ioMapping>
<zeebe:input source="placeholder" target="objects" />
<zeebe:input source="=ship.nav.systemSymbol" target="objects.getWaypoint_systemSymbol" />
<zeebe:input source="=ship.nav.waypointSymbol" target="objects.getWaypoint_waypointSymbol" />
<zeebe:input source="bearer" target="authentication.type" />
<zeebe:input source="= token" target="authentication.token" />
<zeebe:input source="get" target="method" />
<zeebe:input source="="https://api.spacetraders.io/v2/systems/" + string(objects.getWaypoint_systemSymbol) + "/waypoints/" + string(objects.getWaypoint_waypointSymbol) + """ target="url" />
<zeebe:input source="={ }" target="queryParameters" />
</zeebe:ioMapping>
<zeebe:taskHeaders>
<zeebe:header key="category" value="systems" />
<zeebe:header key="operation" value="getWaypoint" />
<zeebe:header key="resultExpression" value="={"waypoint": response.body.data}" />
<zeebe:header key="errorExpression" value="=if matches(error.code, "4\d\d") then { error_code: substring after(extract(error.message,"\"code\":\d{4}")[1], ":"), error_message: substring(extract(error.message, "\"message\":\"(\w|\d|\s|\.|\-)+")[1], 12), error_code_by_name: { "4000":"cooldownConflictError", "4001":"waypointNoAccessError", "4100":"tokenEmptyError", "4101":"tokenMissingSubjectError", "4102":"tokenInvalidSubjectError", "4103":"missingTokenRequestError", "4104":"invalidTokenRequestError", "4105":"invalidTokenSubjectError", "4106":"accountNotExistsError", "4107":"agentNotExistsError", "4108":"accountHasNoAgentError", "4109":"registerAgentExistsError", "4110":"registerAgentSymbolReservedError", "4111":"registerAgentConflictSymbolError", "4200":"navigateInTransitError", "4201":"navigateInvalidDestinationError", "4202":"navigateOutsideSystemError", "4203":"navigateInsufficientFuelError", "4204":"navigateSameDestinationError", "4205":"shipExtractInvalidWaypointError", "4206":"shipExtractPermissionError", "4207":"shipJumpNoSystemError", "4208":"shipJumpSameSystemError", "4210":"shipJumpMissingModuleError", "4211":"shipJumpNoValidWaypointError", "4212":"shipJumpMissingAntimatterError", "4214":"shipInTransitError", "4215":"shipMissingSensorArraysError", "4216":"purchaseShipCreditsError", "4217":"shipCargoExceedsLimitError", "4218":"shipCargoMissingError", "4219":"shipCargoUnitCountError", "4220":"shipSurveyVerificationError", "4221":"shipSurveyExpirationError", "4222":"shipSurveyWaypointTypeError", "4223":"shipSurveyOrbitError", "4224":"shipSurveyExhaustedError", "4225":"shipRefuelDockedError", "4226":"shipRefuelInvalidWaypointError", "4227":"shipMissingMountsError", "4228":"shipCargoFullError", "4229":"shipJumpFromGateToGateError", "4230":"waypointChartedError", "4231":"shipTransferShipNotFound", "4232":"shipTransferAgentConflict", "4233":"shipTransferSameShipConflict", "4234":"shipTransferLocationConflict", "4235":"warpInsideSystemError", "4236":"shipNotInOrbitError", "4237":"shipInvalidRefineryGoodError", "4238":"shipInvalidRefineryTypeError", "4239":"shipMissingRefineryError", "4240":"shipMissingSurveyorError", "4241":"shipMissingWarpDriveError", "4242":"shipMissingMineralProcessorError", "4243":"shipMissingMiningLasersError", "4244":"shipNotDockedError", "4245":"purchaseShipNotPresentError", "4246":"shipMountNoShipyardError", "4247":"shipMissingMountError", "4248":"shipMountInsufficientCreditsError", "4249":"shipMissingPowerError", "4250":"shipMissingSlotsError", "4251":"shipMissingMountsError", "4252":"shipMissingCrewError", "4253":"shipExtractDestabilizedError", "4254":"shipJumpInvalidOriginError", "4255":"shipJumpInvalidWaypointError", "4256":"shipJumpOriginUnderConstructionError", "4257":"shipMissingGasProcessorError", "4258":"shipMissingGasSiphonsError", "4259":"shipSiphonInvalidWaypointError", "4260":"shipSiphonPermissionError", "4261":"waypointNoYieldError", "4262":"shipJumpDestinationUnderConstructionError", "4500":"acceptContractNotAuthorizedError", "4501":"acceptContractConflictError", "4502":"fulfillContractDeliveryError", "4503":"contractDeadlineError", "4504":"contractFulfilledError", "4505":"contractNotAcceptedError", "4506":"contractNotAuthorizedError", "4508":"shipDeliverTermsError", "4509":"shipDeliverFulfilledError", "4510":"shipDeliverInvalidLocationError", "4511":"existingContractError", "4600":"marketTradeInsufficientCreditsError", "4601":"marketTradeNoPurchaseError", "4602":"marketTradeNotSoldError", "4603":"marketNotFoundError", "4604":"marketTradeUnitLimitError", "4700":"waypointNoFactionError", "4800":"constructionMaterialNotRequired", "4801":"constructionMaterialFulfilled", "4802":"shipConstructionInvalidLocationError" }, bpmn_error_code: get or else(get value(error_code_by_name, error_code), error_code), error_data: {error_code: error_code, error_message: error_message, error_name: bpmn_error_code}, bpmnError: bpmnError(bpmn_error_code, error_message, error_data) }.bpmnError else null" />
<zeebe:header key="retryBackoff" value="PT1S" />
</zeebe:taskHeaders>
<zeebe:properties>
<zeebe:property name="custom_error_handling" value="by_error_name" />
</zeebe:properties>
</bpmn:extensionElements>
<bpmn:incoming>Flow_1s2ar3d</bpmn:incoming>
<bpmn:outgoing>Flow_0o49pe1</bpmn:outgoing>
<bpmn:multiInstanceLoopCharacteristics isSequential="true">
<bpmn:extensionElements>
<zeebe:loopCharacteristics inputCollection="=ships" inputElement="ship" outputCollection="ship_waypoints" outputElement="=waypoint" />
</bpmn:extensionElements>
</bpmn:multiInstanceLoopCharacteristics>
</bpmn:serviceTask>
<bpmn:serviceTask id="Activity_0k6jizm" name="List available ships" zeebe:modelerTemplate="com.camunda.SpaceTradersApi" zeebe:modelerTemplateVersion="5" zeebe:modelerTemplateIcon="data:image/png;base64,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">
<bpmn:extensionElements>
<zeebe:taskDefinition type="io.camunda:http-json:1" retries="10" />
<zeebe:ioMapping>
<zeebe:input source="placeholder" target="objects" />
<zeebe:input source="=shipyard.systemSymbol" target="objects.getShipyard_systemSymbol" />
<zeebe:input source="=shipyard.symbol" target="objects.getShipyard_waypointSymbol" />
<zeebe:input source="bearer" target="authentication.type" />
<zeebe:input source="= token" target="authentication.token" />
<zeebe:input source="get" target="method" />
<zeebe:input source="="https://api.spacetraders.io/v2/systems/" + string(objects.getShipyard_systemSymbol) + "/waypoints/" + string(objects.getShipyard_waypointSymbol) + "/shipyard"" target="url" />
<zeebe:input source="={ }" target="queryParameters" />
</zeebe:ioMapping>
<zeebe:taskHeaders>
<zeebe:header key="category" value="systems" />
<zeebe:header key="operation" value="getShipyard" />
<zeebe:header key="resultExpression" value="={ "available_ships": for ship_type in response.body.data.shipTypes.type return { "ship_type": ship_type, "shipyard": response.body.data.symbol, "ship": if response.body.data.ships != null then response.body.data.ships[type = ship_type][1] else null } }" />
<zeebe:header key="errorExpression" value="=if matches(error.code, "4\d\d") then { error_code: substring after(extract(error.message,"\"code\":\d{4}")[1], ":"), error_message: substring(extract(error.message, "\"message\":\"(\w|\d|\s|\.|\-)+")[1], 12), error_code_by_name: { "4000":"cooldownConflictError", "4001":"waypointNoAccessError", "4100":"tokenEmptyError", "4101":"tokenMissingSubjectError", "4102":"tokenInvalidSubjectError", "4103":"missingTokenRequestError", "4104":"invalidTokenRequestError", "4105":"invalidTokenSubjectError", "4106":"accountNotExistsError", "4107":"agentNotExistsError", "4108":"accountHasNoAgentError", "4109":"registerAgentExistsError", "4110":"registerAgentSymbolReservedError", "4111":"registerAgentConflictSymbolError", "4200":"navigateInTransitError", "4201":"navigateInvalidDestinationError", "4202":"navigateOutsideSystemError", "4203":"navigateInsufficientFuelError", "4204":"navigateSameDestinationError", "4205":"shipExtractInvalidWaypointError", "4206":"shipExtractPermissionError", "4207":"shipJumpNoSystemError", "4208":"shipJumpSameSystemError", "4210":"shipJumpMissingModuleError", "4211":"shipJumpNoValidWaypointError", "4212":"shipJumpMissingAntimatterError", "4214":"shipInTransitError", "4215":"shipMissingSensorArraysError", "4216":"purchaseShipCreditsError", "4217":"shipCargoExceedsLimitError", "4218":"shipCargoMissingError", "4219":"shipCargoUnitCountError", "4220":"shipSurveyVerificationError", "4221":"shipSurveyExpirationError", "4222":"shipSurveyWaypointTypeError", "4223":"shipSurveyOrbitError", "4224":"shipSurveyExhaustedError", "4225":"shipRefuelDockedError", "4226":"shipRefuelInvalidWaypointError", "4227":"shipMissingMountsError", "4228":"shipCargoFullError", "4229":"shipJumpFromGateToGateError", "4230":"waypointChartedError", "4231":"shipTransferShipNotFound", "4232":"shipTransferAgentConflict", "4233":"shipTransferSameShipConflict", "4234":"shipTransferLocationConflict", "4235":"warpInsideSystemError", "4236":"shipNotInOrbitError", "4237":"shipInvalidRefineryGoodError", "4238":"shipInvalidRefineryTypeError", "4239":"shipMissingRefineryError", "4240":"shipMissingSurveyorError", "4241":"shipMissingWarpDriveError", "4242":"shipMissingMineralProcessorError", "4243":"shipMissingMiningLasersError", "4244":"shipNotDockedError", "4245":"purchaseShipNotPresentError", "4246":"shipMountNoShipyardError", "4247":"shipMissingMountError", "4248":"shipMountInsufficientCreditsError", "4249":"shipMissingPowerError", "4250":"shipMissingSlotsError", "4251":"shipMissingMountsError", "4252":"shipMissingCrewError", "4253":"shipExtractDestabilizedError", "4254":"shipJumpInvalidOriginError", "4255":"shipJumpInvalidWaypointError", "4256":"shipJumpOriginUnderConstructionError", "4257":"shipMissingGasProcessorError", "4258":"shipMissingGasSiphonsError", "4259":"shipSiphonInvalidWaypointError", "4260":"shipSiphonPermissionError", "4261":"waypointNoYieldError", "4262":"shipJumpDestinationUnderConstructionError", "4500":"acceptContractNotAuthorizedError", "4501":"acceptContractConflictError", "4502":"fulfillContractDeliveryError", "4503":"contractDeadlineError", "4504":"contractFulfilledError", "4505":"contractNotAcceptedError", "4506":"contractNotAuthorizedError", "4508":"shipDeliverTermsError", "4509":"shipDeliverFulfilledError", "4510":"shipDeliverInvalidLocationError", "4511":"existingContractError", "4600":"marketTradeInsufficientCreditsError", "4601":"marketTradeNoPurchaseError", "4602":"marketTradeNotSoldError", "4603":"marketNotFoundError", "4604":"marketTradeUnitLimitError", "4700":"waypointNoFactionError", "4800":"constructionMaterialNotRequired", "4801":"constructionMaterialFulfilled", "4802":"shipConstructionInvalidLocationError" }, bpmn_error_code: get or else(get value(error_code_by_name, error_code), error_code), error_data: {error_code: error_code, error_message: error_message, error_name: bpmn_error_code}, bpmnError: bpmnError(bpmn_error_code, error_message, error_data) }.bpmnError else null" />
<zeebe:header key="retryBackoff" value="PT1S" />
</zeebe:taskHeaders>
<zeebe:properties>
<zeebe:property name="custom_error_handling" value="by_error_name" />
</zeebe:properties>
</bpmn:extensionElements>
<bpmn:incoming>Flow_1poktqu</bpmn:incoming>
<bpmn:outgoing>Flow_1mu2zm2</bpmn:outgoing>
<bpmn:multiInstanceLoopCharacteristics isSequential="true">
<bpmn:extensionElements>
<zeebe:loopCharacteristics inputCollection="=shipyards" inputElement="shipyard" outputCollection="available_ship_list" outputElement="=available_ships" />
</bpmn:extensionElements>
</bpmn:multiInstanceLoopCharacteristics>
</bpmn:serviceTask>
<bpmn:serviceTask id="Activity_12hofmi" name="Purchase ship" zeebe:modelerTemplate="com.camunda.SpaceTradersApi" zeebe:modelerTemplateVersion="5" zeebe:modelerTemplateIcon="data:image/png;base64,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">
<bpmn:extensionElements>
<zeebe:taskDefinition type="io.camunda:http-json:1" retries="10" />
<zeebe:ioMapping>
<zeebe:input source="placeholder" target="objects" />
<zeebe:input source="=selected_ship" target="objects.purchaseShip_purchaseShipRequest.shipType" />
<zeebe:input source="=flatten(available_ship_list)[ship_type = selected_ship][1].shipyard" target="objects.purchaseShip_purchaseShipRequest.waypointSymbol" />
<zeebe:input source="bearer" target="authentication.type" />
<zeebe:input source="=token" target="authentication.token" />
<zeebe:input source="post" target="method" />
<zeebe:input source="="https://api.spacetraders.io/v2/my/ships"" target="url" />
<zeebe:input source="={ }" target="queryParameters" />
<zeebe:input source="= objects.purchaseShip_purchaseShipRequest" target="body" />
</zeebe:ioMapping>
<zeebe:taskHeaders>
<zeebe:header key="category" value="fleet" />
<zeebe:header key="operation" value="purchaseShip" />
<zeebe:header key="resultExpression" value="={ "agent": response.body.data.agent, "ship": response.body.data.ship, "transaction": response.body.data.transaction }" />
<zeebe:header key="errorExpression" value="=if matches(error.code, "4\d\d") then { error_code: substring after(extract(error.message,"\"code\":\d{4}")[1], ":"), error_message: substring(extract(error.message, "\"message\":\"(\w|\d|\s|\.|\-)+")[1], 12), error_code_by_name: { "4000":"cooldownConflictError", "4001":"waypointNoAccessError", "4100":"tokenEmptyError", "4101":"tokenMissingSubjectError", "4102":"tokenInvalidSubjectError", "4103":"missingTokenRequestError", "4104":"invalidTokenRequestError", "4105":"invalidTokenSubjectError", "4106":"accountNotExistsError", "4107":"agentNotExistsError", "4108":"accountHasNoAgentError", "4109":"registerAgentExistsError", "4110":"registerAgentSymbolReservedError", "4111":"registerAgentConflictSymbolError", "4200":"navigateInTransitError", "4201":"navigateInvalidDestinationError", "4202":"navigateOutsideSystemError", "4203":"navigateInsufficientFuelError", "4204":"navigateSameDestinationError", "4205":"shipExtractInvalidWaypointError", "4206":"shipExtractPermissionError", "4207":"shipJumpNoSystemError", "4208":"shipJumpSameSystemError", "4210":"shipJumpMissingModuleError", "4211":"shipJumpNoValidWaypointError", "4212":"shipJumpMissingAntimatterError", "4214":"shipInTransitError", "4215":"shipMissingSensorArraysError", "4216":"purchaseShipCreditsError", "4217":"shipCargoExceedsLimitError", "4218":"shipCargoMissingError", "4219":"shipCargoUnitCountError", "4220":"shipSurveyVerificationError", "4221":"shipSurveyExpirationError", "4222":"shipSurveyWaypointTypeError", "4223":"shipSurveyOrbitError", "4224":"shipSurveyExhaustedError", "4225":"shipRefuelDockedError", "4226":"shipRefuelInvalidWaypointError", "4227":"shipMissingMountsError", "4228":"shipCargoFullError", "4229":"shipJumpFromGateToGateError", "4230":"waypointChartedError", "4231":"shipTransferShipNotFound", "4232":"shipTransferAgentConflict", "4233":"shipTransferSameShipConflict", "4234":"shipTransferLocationConflict", "4235":"warpInsideSystemError", "4236":"shipNotInOrbitError", "4237":"shipInvalidRefineryGoodError", "4238":"shipInvalidRefineryTypeError", "4239":"shipMissingRefineryError", "4240":"shipMissingSurveyorError", "4241":"shipMissingWarpDriveError", "4242":"shipMissingMineralProcessorError", "4243":"shipMissingMiningLasersError", "4244":"shipNotDockedError", "4245":"purchaseShipNotPresentError", "4246":"shipMountNoShipyardError", "4247":"shipMissingMountError", "4248":"shipMountInsufficientCreditsError", "4249":"shipMissingPowerError", "4250":"shipMissingSlotsError", "4251":"shipMissingMountsError", "4252":"shipMissingCrewError", "4253":"shipExtractDestabilizedError", "4254":"shipJumpInvalidOriginError", "4255":"shipJumpInvalidWaypointError", "4256":"shipJumpOriginUnderConstructionError", "4257":"shipMissingGasProcessorError", "4258":"shipMissingGasSiphonsError", "4259":"shipSiphonInvalidWaypointError", "4260":"shipSiphonPermissionError", "4261":"waypointNoYieldError", "4262":"shipJumpDestinationUnderConstructionError", "4500":"acceptContractNotAuthorizedError", "4501":"acceptContractConflictError", "4502":"fulfillContractDeliveryError", "4503":"contractDeadlineError", "4504":"contractFulfilledError", "4505":"contractNotAcceptedError", "4506":"contractNotAuthorizedError", "4508":"shipDeliverTermsError", "4509":"shipDeliverFulfilledError", "4510":"shipDeliverInvalidLocationError", "4511":"existingContractError", "4600":"marketTradeInsufficientCreditsError", "4601":"marketTradeNoPurchaseError", "4602":"marketTradeNotSoldError", "4603":"marketNotFoundError", "4604":"marketTradeUnitLimitError", "4700":"waypointNoFactionError", "4800":"constructionMaterialNotRequired", "4801":"constructionMaterialFulfilled", "4802":"shipConstructionInvalidLocationError" }, bpmn_error_code: get or else(get value(error_code_by_name, error_code), error_code), error_data: {error_code: error_code, error_message: error_message, error_name: bpmn_error_code}, bpmnError: bpmnError(bpmn_error_code, error_message, error_data) }.bpmnError else null" />
<zeebe:header key="retryBackoff" value="PT1S" />
</zeebe:taskHeaders>
<zeebe:properties>
<zeebe:property name="custom_error_handling" value="by_error_name" />
</zeebe:properties>
</bpmn:extensionElements>
<bpmn:incoming>Flow_19l8jfg</bpmn:incoming>
<bpmn:outgoing>Flow_10mbx4n</bpmn:outgoing>
<bpmn:multiInstanceLoopCharacteristics isSequential="true">
<bpmn:extensionElements>
<zeebe:loopCharacteristics inputCollection="=for x in 1..ship_amount return x" outputCollection="purchased_ships" outputElement="=ship" />
</bpmn:extensionElements>
</bpmn:multiInstanceLoopCharacteristics>
</bpmn:serviceTask>
<bpmn:sequenceFlow id="Flow_1vvaa7w" name="Navigate a ship" sourceRef="Gateway_072vi0y" targetRef="Gateway_1yxwlor">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=action = "navigate-ship"</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:serviceTask id="Activity_11abg7d" name="Navigate ship" zeebe:modelerTemplate="com.camunda.SpaceTradersApi" zeebe:modelerTemplateVersion="5" zeebe:modelerTemplateIcon="data:image/png;base64,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">
<bpmn:extensionElements>
<zeebe:taskDefinition type="io.camunda:http-json:1" retries="10" />
<zeebe:ioMapping>
<zeebe:input source="placeholder" target="objects" />
<zeebe:input source="=selected_ship" target="objects.navigateShip_shipSymbol" />
<zeebe:input source="=target_waypoint" target="objects.navigateShip_navigateShipRequest.waypointSymbol" />
<zeebe:input source="bearer" target="authentication.type" />
<zeebe:input source="=token" target="authentication.token" />
<zeebe:input source="post" target="method" />
<zeebe:input source="="https://api.spacetraders.io/v2/my/ships/" + string(objects.navigateShip_shipSymbol) + "/navigate"" target="url" />
<zeebe:input source="={ }" target="queryParameters" />
<zeebe:input source="= objects.navigateShip_navigateShipRequest" target="body" />
</zeebe:ioMapping>
<zeebe:taskHeaders>
<zeebe:header key="category" value="fleet" />
<zeebe:header key="operation" value="navigateShip" />
<zeebe:header key="resultExpression" value="={ "fuel": response.body.data.fuel, "nav": response.body.data.nav, "arrival_time": nav.route.arrival }" />
<zeebe:header key="errorExpression" value="=if matches(error.code, "4\d\d") then { error_code: substring after(extract(error.message,"\"code\":\d{4}")[1], ":"), error_message: substring(extract(error.message, "\"message\":\"(\w|\d|\s|\.|\-)+")[1], 12), error_code_by_name: { "4000":"cooldownConflictError", "4001":"waypointNoAccessError", "4100":"tokenEmptyError", "4101":"tokenMissingSubjectError", "4102":"tokenInvalidSubjectError", "4103":"missingTokenRequestError", "4104":"invalidTokenRequestError", "4105":"invalidTokenSubjectError", "4106":"accountNotExistsError", "4107":"agentNotExistsError", "4108":"accountHasNoAgentError", "4109":"registerAgentExistsError", "4110":"registerAgentSymbolReservedError", "4111":"registerAgentConflictSymbolError", "4200":"navigateInTransitError", "4201":"navigateInvalidDestinationError", "4202":"navigateOutsideSystemError", "4203":"navigateInsufficientFuelError", "4204":"navigateSameDestinationError", "4205":"shipExtractInvalidWaypointError", "4206":"shipExtractPermissionError", "4207":"shipJumpNoSystemError", "4208":"shipJumpSameSystemError", "4210":"shipJumpMissingModuleError", "4211":"shipJumpNoValidWaypointError", "4212":"shipJumpMissingAntimatterError", "4214":"shipInTransitError", "4215":"shipMissingSensorArraysError", "4216":"purchaseShipCreditsError", "4217":"shipCargoExceedsLimitError", "4218":"shipCargoMissingError", "4219":"shipCargoUnitCountError", "4220":"shipSurveyVerificationError", "4221":"shipSurveyExpirationError", "4222":"shipSurveyWaypointTypeError", "4223":"shipSurveyOrbitError", "4224":"shipSurveyExhaustedError", "4225":"shipRefuelDockedError", "4226":"shipRefuelInvalidWaypointError", "4227":"shipMissingMountsError", "4228":"shipCargoFullError", "4229":"shipJumpFromGateToGateError", "4230":"waypointChartedError", "4231":"shipTransferShipNotFound", "4232":"shipTransferAgentConflict", "4233":"shipTransferSameShipConflict", "4234":"shipTransferLocationConflict", "4235":"warpInsideSystemError", "4236":"shipNotInOrbitError", "4237":"shipInvalidRefineryGoodError", "4238":"shipInvalidRefineryTypeError", "4239":"shipMissingRefineryError", "4240":"shipMissingSurveyorError", "4241":"shipMissingWarpDriveError", "4242":"shipMissingMineralProcessorError", "4243":"shipMissingMiningLasersError", "4244":"shipNotDockedError", "4245":"purchaseShipNotPresentError", "4246":"shipMountNoShipyardError", "4247":"shipMissingMountError", "4248":"shipMountInsufficientCreditsError", "4249":"shipMissingPowerError", "4250":"shipMissingSlotsError", "4251":"shipMissingMountsError", "4252":"shipMissingCrewError", "4253":"shipExtractDestabilizedError", "4254":"shipJumpInvalidOriginError", "4255":"shipJumpInvalidWaypointError", "4256":"shipJumpOriginUnderConstructionError", "4257":"shipMissingGasProcessorError", "4258":"shipMissingGasSiphonsError", "4259":"shipSiphonInvalidWaypointError", "4260":"shipSiphonPermissionError", "4261":"waypointNoYieldError", "4262":"shipJumpDestinationUnderConstructionError", "4500":"acceptContractNotAuthorizedError", "4501":"acceptContractConflictError", "4502":"fulfillContractDeliveryError", "4503":"contractDeadlineError", "4504":"contractFulfilledError", "4505":"contractNotAcceptedError", "4506":"contractNotAuthorizedError", "4508":"shipDeliverTermsError", "4509":"shipDeliverFulfilledError", "4510":"shipDeliverInvalidLocationError", "4511":"existingContractError", "4600":"marketTradeInsufficientCreditsError", "4601":"marketTradeNoPurchaseError", "4602":"marketTradeNotSoldError", "4603":"marketNotFoundError", "4604":"marketTradeUnitLimitError", "4700":"waypointNoFactionError", "4800":"constructionMaterialNotRequired", "4801":"constructionMaterialFulfilled", "4802":"shipConstructionInvalidLocationError" }, bpmn_error_code: get or else(get value(error_code_by_name, error_code), error_code), error_data: {error_code: error_code, error_message: error_message, error_name: bpmn_error_code}, bpmnError: bpmnError(bpmn_error_code, error_message, error_data) }.bpmnError else null" />
<zeebe:header key="retryBackoff" value="PT1S" />
</zeebe:taskHeaders>
<zeebe:properties>
<zeebe:property name="custom_error_handling" value="by_error_name" />
</zeebe:properties>
</bpmn:extensionElements>
<bpmn:incoming>Flow_1yrnobg</bpmn:incoming>
<bpmn:outgoing>Flow_0qlkjjz</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:boundaryEvent id="Event_046ikhu" name="Ship not in orbit" attachedToRef="Activity_11abg7d">
<bpmn:outgoing>Flow_1rbrzk1</bpmn:outgoing>
<bpmn:errorEventDefinition id="ErrorEventDefinition_1wu54jo" errorRef="Error_0sh41ww" />
</bpmn:boundaryEvent>
<bpmn:sequenceFlow id="Flow_1rbrzk1" sourceRef="Event_046ikhu" targetRef="Activity_0h7elkt" />
<bpmn:serviceTask id="Activity_0h7elkt" name="Orbit ship" zeebe:modelerTemplate="com.camunda.SpaceTradersApi" zeebe:modelerTemplateVersion="5" zeebe:modelerTemplateIcon="data:image/png;base64,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">
<bpmn:extensionElements>
<zeebe:taskDefinition type="io.camunda:http-json:1" retries="10" />
<zeebe:ioMapping>
<zeebe:input source="placeholder" target="objects" />
<zeebe:input source="=selected_ship" target="objects.orbitShip_shipSymbol" />
<zeebe:input source="bearer" target="authentication.type" />
<zeebe:input source="=token" target="authentication.token" />
<zeebe:input source="post" target="method" />
<zeebe:input source="="https://api.spacetraders.io/v2/my/ships/" + string(objects.orbitShip_shipSymbol) + "/orbit"" target="url" />
<zeebe:input source="={ }" target="queryParameters" />
</zeebe:ioMapping>
<zeebe:taskHeaders>
<zeebe:header key="category" value="fleet" />
<zeebe:header key="operation" value="orbitShip" />
<zeebe:header key="resultExpression" value="={ "nav": response.body.data.nav }" />
<zeebe:header key="errorExpression" value="=if matches(error.code, "4\d\d") then { error_code: substring after(extract(error.message,"\"code\":\d{4}")[1], ":"), error_message: substring(extract(error.message, "\"message\":\"(\w|\d|\s|\.|\-)+")[1], 12), error_code_by_name: { "4000":"cooldownConflictError", "4001":"waypointNoAccessError", "4100":"tokenEmptyError", "4101":"tokenMissingSubjectError", "4102":"tokenInvalidSubjectError", "4103":"missingTokenRequestError", "4104":"invalidTokenRequestError", "4105":"invalidTokenSubjectError", "4106":"accountNotExistsError", "4107":"agentNotExistsError", "4108":"accountHasNoAgentError", "4109":"registerAgentExistsError", "4110":"registerAgentSymbolReservedError", "4111":"registerAgentConflictSymbolError", "4200":"navigateInTransitError", "4201":"navigateInvalidDestinationError", "4202":"navigateOutsideSystemError", "4203":"navigateInsufficientFuelError", "4204":"navigateSameDestinationError", "4205":"shipExtractInvalidWaypointError", "4206":"shipExtractPermissionError", "4207":"shipJumpNoSystemError", "4208":"shipJumpSameSystemError", "4210":"shipJumpMissingModuleError", "4211":"shipJumpNoValidWaypointError", "4212":"shipJumpMissingAntimatterError", "4214":"shipInTransitError", "4215":"shipMissingSensorArraysError", "4216":"purchaseShipCreditsError", "4217":"shipCargoExceedsLimitError", "4218":"shipCargoMissingError", "4219":"shipCargoUnitCountError", "4220":"shipSurveyVerificationError", "4221":"shipSurveyExpirationError", "4222":"shipSurveyWaypointTypeError", "4223":"shipSurveyOrbitError", "4224":"shipSurveyExhaustedError", "4225":"shipRefuelDockedError", "4226":"shipRefuelInvalidWaypointError", "4227":"shipMissingMountsError", "4228":"shipCargoFullError", "4229":"shipJumpFromGateToGateError", "4230":"waypointChartedError", "4231":"shipTransferShipNotFound", "4232":"shipTransferAgentConflict", "4233":"shipTransferSameShipConflict", "4234":"shipTransferLocationConflict", "4235":"warpInsideSystemError", "4236":"shipNotInOrbitError", "4237":"shipInvalidRefineryGoodError", "4238":"shipInvalidRefineryTypeError", "4239":"shipMissingRefineryError", "4240":"shipMissingSurveyorError", "4241":"shipMissingWarpDriveError", "4242":"shipMissingMineralProcessorError", "4243":"shipMissingMiningLasersError", "4244":"shipNotDockedError", "4245":"purchaseShipNotPresentError", "4246":"shipMountNoShipyardError", "4247":"shipMissingMountError", "4248":"shipMountInsufficientCreditsError", "4249":"shipMissingPowerError", "4250":"shipMissingSlotsError", "4251":"shipMissingMountsError", "4252":"shipMissingCrewError", "4253":"shipExtractDestabilizedError", "4254":"shipJumpInvalidOriginError", "4255":"shipJumpInvalidWaypointError", "4256":"shipJumpOriginUnderConstructionError", "4257":"shipMissingGasProcessorError", "4258":"shipMissingGasSiphonsError", "4259":"shipSiphonInvalidWaypointError", "4260":"shipSiphonPermissionError", "4261":"waypointNoYieldError", "4262":"shipJumpDestinationUnderConstructionError", "4500":"acceptContractNotAuthorizedError", "4501":"acceptContractConflictError", "4502":"fulfillContractDeliveryError", "4503":"contractDeadlineError", "4504":"contractFulfilledError", "4505":"contractNotAcceptedError", "4506":"contractNotAuthorizedError", "4508":"shipDeliverTermsError", "4509":"shipDeliverFulfilledError", "4510":"shipDeliverInvalidLocationError", "4511":"existingContractError", "4600":"marketTradeInsufficientCreditsError", "4601":"marketTradeNoPurchaseError", "4602":"marketTradeNotSoldError", "4603":"marketNotFoundError", "4604":"marketTradeUnitLimitError", "4700":"waypointNoFactionError", "4800":"constructionMaterialNotRequired", "4801":"constructionMaterialFulfilled", "4802":"shipConstructionInvalidLocationError" }, bpmn_error_code: get or else(get value(error_code_by_name, error_code), error_code), error_data: {error_code: error_code, error_message: error_message, error_name: bpmn_error_code}, bpmnError: bpmnError(bpmn_error_code, error_message, error_data) }.bpmnError else null" />
<zeebe:header key="retryBackoff" value="PT1S" />
</zeebe:taskHeaders>
<zeebe:properties>
<zeebe:property name="custom_error_handling" value="by_error_name" />
</zeebe:properties>
</bpmn:extensionElements>
<bpmn:incoming>Flow_1rbrzk1</bpmn:incoming>
<bpmn:outgoing>Flow_1c0sgv5</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:exclusiveGateway id="Gateway_1yxwlor">
<bpmn:incoming>Flow_1vvaa7w</bpmn:incoming>
<bpmn:incoming>Flow_1c0sgv5</bpmn:incoming>
<bpmn:outgoing>Flow_1yrnobg</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:sequenceFlow id="Flow_1yrnobg" sourceRef="Gateway_1yxwlor" targetRef="Activity_11abg7d" />
<bpmn:sequenceFlow id="Flow_1c0sgv5" sourceRef="Activity_0h7elkt" targetRef="Gateway_1yxwlor" />
<bpmn:boundaryEvent id="Event_1dpkdzw" name="Arrival time" attachedToRef="Activity_13ew35e">
<bpmn:outgoing>Flow_1m54axz</bpmn:outgoing>
<bpmn:timerEventDefinition id="TimerEventDefinition_054211v">
<bpmn:timeDate xsi:type="bpmn:tFormalExpression">=arrival_time</bpmn:timeDate>
</bpmn:timerEventDefinition>
</bpmn:boundaryEvent>
<bpmn:intermediateThrowEvent id="Event_161m1bj" name="To control center">
<bpmn:incoming>Flow_169adpq</bpmn:incoming>
<bpmn:linkEventDefinition id="LinkEventDefinition_0mnb321" name="to-control-center" />
</bpmn:intermediateThrowEvent>
<bpmn:userTask id="Activity_13ew35e" name="Show arrival time">
<bpmn:extensionElements>
<zeebe:formDefinition formId="space-traders-navigation-result" />
</bpmn:extensionElements>
<bpmn:incoming>Flow_0emfgpz</bpmn:incoming>
<bpmn:outgoing>Flow_1ilf3z5</bpmn:outgoing>
</bpmn:userTask>
<bpmn:sequenceFlow id="Flow_0qlkjjz" sourceRef="Activity_11abg7d" targetRef="Gateway_18yl765" />
<bpmn:parallelGateway id="Gateway_18yl765">
<bpmn:incoming>Flow_0qlkjjz</bpmn:incoming>
<bpmn:outgoing>Flow_169adpq</bpmn:outgoing>
<bpmn:outgoing>Flow_0emfgpz</bpmn:outgoing>
</bpmn:parallelGateway>
<bpmn:sequenceFlow id="Flow_169adpq" sourceRef="Gateway_18yl765" targetRef="Event_161m1bj" />
<bpmn:sequenceFlow id="Flow_0emfgpz" sourceRef="Gateway_18yl765" targetRef="Activity_13ew35e" />
<bpmn:sequenceFlow id="Flow_0o49pe1" sourceRef="Activity_07ddhuo" targetRef="Gateway_00osnha" />
<bpmn:parallelGateway id="Gateway_00osnha">
<bpmn:incoming>Flow_0o49pe1</bpmn:incoming>
<bpmn:outgoing>Flow_1cgbtgr</bpmn:outgoing>
<bpmn:outgoing>Flow_0v38my7</bpmn:outgoing>
</bpmn:parallelGateway>
<bpmn:sequenceFlow id="Flow_1cgbtgr" sourceRef="Gateway_00osnha" targetRef="Event_1890vku" />
<bpmn:sequenceFlow id="Flow_0v38my7" sourceRef="Gateway_00osnha" targetRef="Activity_01xfyud" />
<bpmn:endEvent id="Event_1j5ilgt">
<bpmn:incoming>Flow_1m54axz</bpmn:incoming>
<bpmn:incoming>Flow_1ilf3z5</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_1m54axz" sourceRef="Event_1dpkdzw" targetRef="Event_1j5ilgt" />
<bpmn:sequenceFlow id="Flow_1ilf3z5" sourceRef="Activity_13ew35e" targetRef="Event_1j5ilgt" />
<bpmn:endEvent id="Event_181xdqy" name="Exit">
<bpmn:incoming>Flow_0z5ll9l</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_0z5ll9l" sourceRef="Gateway_072vi0y" targetRef="Event_181xdqy">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=action = "exit"</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:exclusiveGateway id="Gateway_1l3kdyx">
<bpmn:incoming>Flow_00fpv0m</bpmn:incoming>
<bpmn:incoming>Flow_0apyc4r</bpmn:incoming>
<bpmn:outgoing>Flow_152sgym</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:sequenceFlow id="Flow_00fpv0m" name="Extract resources" sourceRef="Gateway_072vi0y" targetRef="Gateway_1l3kdyx">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=action = "extract-resources"</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_152sgym" sourceRef="Gateway_1l3kdyx" targetRef="Activity_0a4nkv2" />
<bpmn:serviceTask id="Activity_0a4nkv2" name="Extract resources" zeebe:modelerTemplate="com.camunda.SpaceTradersApi" zeebe:modelerTemplateVersion="5" zeebe:modelerTemplateIcon="data:image/png;base64,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">
<bpmn:extensionElements>
<zeebe:taskDefinition type="io.camunda:http-json:1" retries="10" />
<zeebe:ioMapping>
<zeebe:input source="placeholder" target="objects" />
<zeebe:input source="=selected_ship" target="objects.extractResources_shipSymbol" />
<zeebe:input source="=null" target="objects.extractResources_extractResourcesRequest.survey" />
<zeebe:input source="bearer" target="authentication.type" />
<zeebe:input source="=token" target="authentication.token" />
<zeebe:input source="post" target="method" />
<zeebe:input source="="https://api.spacetraders.io/v2/my/ships/" + string(objects.extractResources_shipSymbol) + "/extract"" target="url" />
<zeebe:input source="={ }" target="queryParameters" />
<zeebe:input source="= objects.extractResources_extractResourcesRequest" target="body" />
</zeebe:ioMapping>
<zeebe:taskHeaders>
<zeebe:header key="category" value="fleet" />
<zeebe:header key="operation" value="extractResources" />
<zeebe:header key="resultExpression" value="={ "cooldown": response.body.data.cooldown, "extraction": response.body.data.extraction, "cargo": response.body.data.cargo }" />
<zeebe:header key="errorExpression" value="=if matches(error.code, "4\d\d") then { error_code: substring after(extract(error.message,"\"code\":\d{4}")[1], ":"), error_message: substring(extract(error.message, "\"message\":\"(\w|\d|\s|\.|\-)+")[1], 12), error_code_by_name: { "4000":"cooldownConflictError", "4001":"waypointNoAccessError", "4100":"tokenEmptyError", "4101":"tokenMissingSubjectError", "4102":"tokenInvalidSubjectError", "4103":"missingTokenRequestError", "4104":"invalidTokenRequestError", "4105":"invalidTokenSubjectError", "4106":"accountNotExistsError", "4107":"agentNotExistsError", "4108":"accountHasNoAgentError", "4109":"registerAgentExistsError", "4110":"registerAgentSymbolReservedError", "4111":"registerAgentConflictSymbolError", "4200":"navigateInTransitError", "4201":"navigateInvalidDestinationError", "4202":"navigateOutsideSystemError", "4203":"navigateInsufficientFuelError", "4204":"navigateSameDestinationError", "4205":"shipExtractInvalidWaypointError", "4206":"shipExtractPermissionError", "4207":"shipJumpNoSystemError", "4208":"shipJumpSameSystemError", "4210":"shipJumpMissingModuleError", "4211":"shipJumpNoValidWaypointError", "4212":"shipJumpMissingAntimatterError", "4214":"shipInTransitError", "4215":"shipMissingSensorArraysError", "4216":"purchaseShipCreditsError", "4217":"shipCargoExceedsLimitError", "4218":"shipCargoMissingError", "4219":"shipCargoUnitCountError", "4220":"shipSurveyVerificationError", "4221":"shipSurveyExpirationError", "4222":"shipSurveyWaypointTypeError", "4223":"shipSurveyOrbitError", "4224":"shipSurveyExhaustedError", "4225":"shipRefuelDockedError", "4226":"shipRefuelInvalidWaypointError", "4227":"shipMissingMountsError", "4228":"shipCargoFullError", "4229":"shipJumpFromGateToGateError", "4230":"waypointChartedError", "4231":"shipTransferShipNotFound", "4232":"shipTransferAgentConflict", "4233":"shipTransferSameShipConflict", "4234":"shipTransferLocationConflict", "4235":"warpInsideSystemError", "4236":"shipNotInOrbitError", "4237":"shipInvalidRefineryGoodError", "4238":"shipInvalidRefineryTypeError", "4239":"shipMissingRefineryError", "4240":"shipMissingSurveyorError", "4241":"shipMissingWarpDriveError", "4242":"shipMissingMineralProcessorError", "4243":"shipMissingMiningLasersError", "4244":"shipNotDockedError", "4245":"purchaseShipNotPresentError", "4246":"shipMountNoShipyardError", "4247":"shipMissingMountError", "4248":"shipMountInsufficientCreditsError", "4249":"shipMissingPowerError", "4250":"shipMissingSlotsError", "4251":"shipMissingMountsError", "4252":"shipMissingCrewError", "4253":"shipExtractDestabilizedError", "4254":"shipJumpInvalidOriginError", "4255":"shipJumpInvalidWaypointError", "4256":"shipJumpOriginUnderConstructionError", "4257":"shipMissingGasProcessorError", "4258":"shipMissingGasSiphonsError", "4259":"shipSiphonInvalidWaypointError", "4260":"shipSiphonPermissionError", "4261":"waypointNoYieldError", "4262":"shipJumpDestinationUnderConstructionError", "4500":"acceptContractNotAuthorizedError", "4501":"acceptContractConflictError", "4502":"fulfillContractDeliveryError", "4503":"contractDeadlineError", "4504":"contractFulfilledError", "4505":"contractNotAcceptedError", "4506":"contractNotAuthorizedError", "4508":"shipDeliverTermsError", "4509":"shipDeliverFulfilledError", "4510":"shipDeliverInvalidLocationError", "4511":"existingContractError", "4600":"marketTradeInsufficientCreditsError", "4601":"marketTradeNoPurchaseError", "4602":"marketTradeNotSoldError", "4603":"marketNotFoundError", "4604":"marketTradeUnitLimitError", "4700":"waypointNoFactionError", "4800":"constructionMaterialNotRequired", "4801":"constructionMaterialFulfilled", "4802":"shipConstructionInvalidLocationError" }, bpmn_error_code: get or else(get value(error_code_by_name, error_code), error_code), error_data: {error_code: error_code, error_message: error_message, error_name: bpmn_error_code}, bpmnError: bpmnError(bpmn_error_code, error_message, error_data) }.bpmnError else null" />
<zeebe:header key="retryBackoff" value="PT1S" />
</zeebe:taskHeaders>
<zeebe:properties>
<zeebe:property name="custom_error_handling" value="by_error_name" />
</zeebe:properties>
</bpmn:extensionElements>
<bpmn:incoming>Flow_152sgym</bpmn:incoming>
<bpmn:outgoing>Flow_014iwx1</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:boundaryEvent id="Event_1910jxb" name="Ship not in orbit" attachedToRef="Activity_0a4nkv2">
<bpmn:outgoing>Flow_1lze2ja</bpmn:outgoing>
<bpmn:errorEventDefinition id="ErrorEventDefinition_1dkvvbd" errorRef="Error_0sh41ww" />
</bpmn:boundaryEvent>
<bpmn:serviceTask id="Activity_0v8zw3j" name="Orbit ship" zeebe:modelerTemplate="com.camunda.SpaceTradersApi" zeebe:modelerTemplateVersion="5" zeebe:modelerTemplateIcon="data:image/png;base64,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">
<bpmn:extensionElements>
<zeebe:taskDefinition type="io.camunda:http-json:1" retries="10" />
<zeebe:ioMapping>
<zeebe:input source="placeholder" target="objects" />
<zeebe:input source="=selected_ship" target="objects.orbitShip_shipSymbol" />
<zeebe:input source="bearer" target="authentication.type" />
<zeebe:input source="=token" target="authentication.token" />
<zeebe:input source="post" target="method" />
<zeebe:input source="="https://api.spacetraders.io/v2/my/ships/" + string(objects.orbitShip_shipSymbol) + "/orbit"" target="url" />
<zeebe:input source="={ }" target="queryParameters" />
</zeebe:ioMapping>
<zeebe:taskHeaders>
<zeebe:header key="category" value="fleet" />
<zeebe:header key="operation" value="orbitShip" />
<zeebe:header key="resultExpression" value="={ "nav": response.body.data.nav }" />
<zeebe:header key="errorExpression" value="=if matches(error.code, "4\d\d") then { error_code: substring after(extract(error.message,"\"code\":\d{4}")[1], ":"), error_message: substring(extract(error.message, "\"message\":\"(\w|\d|\s|\.|\-)+")[1], 12), error_code_by_name: { "4000":"cooldownConflictError", "4001":"waypointNoAccessError", "4100":"tokenEmptyError", "4101":"tokenMissingSubjectError", "4102":"tokenInvalidSubjectError", "4103":"missingTokenRequestError", "4104":"invalidTokenRequestError", "4105":"invalidTokenSubjectError", "4106":"accountNotExistsError", "4107":"agentNotExistsError", "4108":"accountHasNoAgentError", "4109":"registerAgentExistsError", "4110":"registerAgentSymbolReservedError", "4111":"registerAgentConflictSymbolError", "4200":"navigateInTransitError", "4201":"navigateInvalidDestinationError", "4202":"navigateOutsideSystemError", "4203":"navigateInsufficientFuelError", "4204":"navigateSameDestinationError", "4205":"shipExtractInvalidWaypointError", "4206":"shipExtractPermissionError", "4207":"shipJumpNoSystemError", "4208":"shipJumpSameSystemError", "4210":"shipJumpMissingModuleError", "4211":"shipJumpNoValidWaypointError", "4212":"shipJumpMissingAntimatterError", "4214":"shipInTransitError", "4215":"shipMissingSensorArraysError", "4216":"purchaseShipCreditsError", "4217":"shipCargoExceedsLimitError", "4218":"shipCargoMissingError", "4219":"shipCargoUnitCountError", "4220":"shipSurveyVerificationError", "4221":"shipSurveyExpirationError", "4222":"shipSurveyWaypointTypeError", "4223":"shipSurveyOrbitError", "4224":"shipSurveyExhaustedError", "4225":"shipRefuelDockedError", "4226":"shipRefuelInvalidWaypointError", "4227":"shipMissingMountsError", "4228":"shipCargoFullError", "4229":"shipJumpFromGateToGateError", "4230":"waypointChartedError", "4231":"shipTransferShipNotFound", "4232":"shipTransferAgentConflict", "4233":"shipTransferSameShipConflict", "4234":"shipTransferLocationConflict", "4235":"warpInsideSystemError", "4236":"shipNotInOrbitError", "4237":"shipInvalidRefineryGoodError", "4238":"shipInvalidRefineryTypeError", "4239":"shipMissingRefineryError", "4240":"shipMissingSurveyorError", "4241":"shipMissingWarpDriveError", "4242":"shipMissingMineralProcessorError", "4243":"shipMissingMiningLasersError", "4244":"shipNotDockedError", "4245":"purchaseShipNotPresentError", "4246":"shipMountNoShipyardError", "4247":"shipMissingMountError", "4248":"shipMountInsufficientCreditsError", "4249":"shipMissingPowerError", "4250":"shipMissingSlotsError", "4251":"shipMissingMountsError", "4252":"shipMissingCrewError", "4253":"shipExtractDestabilizedError", "4254":"shipJumpInvalidOriginError", "4255":"shipJumpInvalidWaypointError", "4256":"shipJumpOriginUnderConstructionError", "4257":"shipMissingGasProcessorError", "4258":"shipMissingGasSiphonsError", "4259":"shipSiphonInvalidWaypointError", "4260":"shipSiphonPermissionError", "4261":"waypointNoYieldError", "4262":"shipJumpDestinationUnderConstructionError", "4500":"acceptContractNotAuthorizedError", "4501":"acceptContractConflictError", "4502":"fulfillContractDeliveryError", "4503":"contractDeadlineError", "4504":"contractFulfilledError", "4505":"contractNotAcceptedError", "4506":"contractNotAuthorizedError", "4508":"shipDeliverTermsError", "4509":"shipDeliverFulfilledError", "4510":"shipDeliverInvalidLocationError", "4511":"existingContractError", "4600":"marketTradeInsufficientCreditsError", "4601":"marketTradeNoPurchaseError", "4602":"marketTradeNotSoldError", "4603":"marketNotFoundError", "4604":"marketTradeUnitLimitError", "4700":"waypointNoFactionError", "4800":"constructionMaterialNotRequired", "4801":"constructionMaterialFulfilled", "4802":"shipConstructionInvalidLocationError" }, bpmn_error_code: get or else(get value(error_code_by_name, error_code), error_code), error_data: {error_code: error_code, error_message: error_message, error_name: bpmn_error_code}, bpmnError: bpmnError(bpmn_error_code, error_message, error_data) }.bpmnError else null" />
<zeebe:header key="retryBackoff" value="PT1S" />
</zeebe:taskHeaders>
<zeebe:properties>
<zeebe:property name="custom_error_handling" value="by_error_name" />
</zeebe:properties>
</bpmn:extensionElements>
<bpmn:incoming>Flow_1lze2ja</bpmn:incoming>
<bpmn:outgoing>Flow_0apyc4r</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:sequenceFlow id="Flow_1lze2ja" sourceRef="Event_1910jxb" targetRef="Activity_0v8zw3j" />
<bpmn:sequenceFlow id="Flow_0apyc4r" sourceRef="Activity_0v8zw3j" targetRef="Gateway_1l3kdyx" />
<bpmn:sequenceFlow id="Flow_014iwx1" sourceRef="Activity_0a4nkv2" targetRef="Gateway_1lw3ffo" />
<bpmn:parallelGateway id="Gateway_1lw3ffo">
<bpmn:incoming>Flow_014iwx1</bpmn:incoming>
<bpmn:outgoing>Flow_19ffbxd</bpmn:outgoing>
<bpmn:outgoing>Flow_0ojfxem</bpmn:outgoing>
</bpmn:parallelGateway>
<bpmn:intermediateThrowEvent id="Event_12s9vyr" name="To control center">
<bpmn:incoming>Flow_19ffbxd</bpmn:incoming>
<bpmn:linkEventDefinition id="LinkEventDefinition_0l3qste" name="to-control-center" />
</bpmn:intermediateThrowEvent>
<bpmn:sequenceFlow id="Flow_19ffbxd" sourceRef="Gateway_1lw3ffo" targetRef="Event_12s9vyr" />
<bpmn:sequenceFlow id="Flow_0ojfxem" sourceRef="Gateway_1lw3ffo" targetRef="Activity_0dk6cuk" />
<bpmn:userTask id="Activity_0dk6cuk" name="Show extraction result">
<bpmn:extensionElements>
<zeebe:formDefinition formId="space-traders-extraction-result" />
</bpmn:extensionElements>
<bpmn:incoming>Flow_0ojfxem</bpmn:incoming>
<bpmn:outgoing>Flow_0l0nrgj</bpmn:outgoing>
</bpmn:userTask>
<bpmn:boundaryEvent id="Event_0hfmljb" name="Cooldown" attachedToRef="Activity_0dk6cuk">
<bpmn:outgoing>Flow_0bvmlba</bpmn:outgoing>
<bpmn:timerEventDefinition id="TimerEventDefinition_1p49pkm">
<bpmn:timeDate xsi:type="bpmn:tFormalExpression">=cooldown.expiration</bpmn:timeDate>
</bpmn:timerEventDefinition>
</bpmn:boundaryEvent>
<bpmn:endEvent id="Event_1urpi15">
<bpmn:incoming>Flow_0l0nrgj</bpmn:incoming>
<bpmn:incoming>Flow_0bvmlba</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_0l0nrgj" sourceRef="Activity_0dk6cuk" targetRef="Event_1urpi15" />
<bpmn:sequenceFlow id="Flow_0bvmlba" sourceRef="Event_0hfmljb" targetRef="Event_1urpi15" />
<bpmn:sequenceFlow id="Flow_0cwrbc4" name="Sell goods" sourceRef="Gateway_072vi0y" targetRef="Activity_0zlhnmf">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=action = "sell-goods"</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:serviceTask id="Activity_0zlhnmf" name="Get ship cargo" zeebe:modelerTemplate="com.camunda.SpaceTradersApi" zeebe:modelerTemplateVersion="5" zeebe:modelerTemplateIcon="data:image/png;base64,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">
<bpmn:extensionElements>
<zeebe:taskDefinition type="io.camunda:http-json:1" retries="10" />
<zeebe:ioMapping>
<zeebe:input source="placeholder" target="objects" />
<zeebe:input source="=selected_ship" target="objects.getMyShip_shipSymbol" />
<zeebe:input source="bearer" target="authentication.type" />
<zeebe:input source="=token" target="authentication.token" />
<zeebe:input source="get" target="method" />
<zeebe:input source="="https://api.spacetraders.io/v2/my/ships/" + string(objects.getMyShip_shipSymbol) + """ target="url" />
<zeebe:input source="={ }" target="queryParameters" />
</zeebe:ioMapping>
<zeebe:taskHeaders>
<zeebe:header key="category" value="fleet" />
<zeebe:header key="operation" value="getMyShip" />
<zeebe:header key="resultExpression" value="={ "ship": response.body.data, "ship_cargo": ship.cargo, "ship_system": ship.nav.systemSymbol, "ship_waypoint": ship.nav.waypointSymbol }" />
<zeebe:header key="errorExpression" value="=if matches(error.code, "4\d\d") then { error_code: substring after(extract(error.message,"\"code\":\d{4}")[1], ":"), error_message: substring(extract(error.message, "\"message\":\"(\w|\d|\s|\.|\-)+")[1], 12), error_code_by_name: { "4000":"cooldownConflictError", "4001":"waypointNoAccessError", "4100":"tokenEmptyError", "4101":"tokenMissingSubjectError", "4102":"tokenInvalidSubjectError", "4103":"missingTokenRequestError", "4104":"invalidTokenRequestError", "4105":"invalidTokenSubjectError", "4106":"accountNotExistsError", "4107":"agentNotExistsError", "4108":"accountHasNoAgentError", "4109":"registerAgentExistsError", "4110":"registerAgentSymbolReservedError", "4111":"registerAgentConflictSymbolError", "4200":"navigateInTransitError", "4201":"navigateInvalidDestinationError", "4202":"navigateOutsideSystemError", "4203":"navigateInsufficientFuelError", "4204":"navigateSameDestinationError", "4205":"shipExtractInvalidWaypointError", "4206":"shipExtractPermissionError", "4207":"shipJumpNoSystemError", "4208":"shipJumpSameSystemError", "4210":"shipJumpMissingModuleError", "4211":"shipJumpNoValidWaypointError", "4212":"shipJumpMissingAntimatterError", "4214":"shipInTransitError", "4215":"shipMissingSensorArraysError", "4216":"purchaseShipCreditsError", "4217":"shipCargoExceedsLimitError", "4218":"shipCargoMissingError", "4219":"shipCargoUnitCountError", "4220":"shipSurveyVerificationError", "4221":"shipSurveyExpirationError", "4222":"shipSurveyWaypointTypeError", "4223":"shipSurveyOrbitError", "4224":"shipSurveyExhaustedError", "4225":"shipRefuelDockedError", "4226":"shipRefuelInvalidWaypointError", "4227":"shipMissingMountsError", "4228":"shipCargoFullError", "4229":"shipJumpFromGateToGateError", "4230":"waypointChartedError", "4231":"shipTransferShipNotFound", "4232":"shipTransferAgentConflict", "4233":"shipTransferSameShipConflict", "4234":"shipTransferLocationConflict", "4235":"warpInsideSystemError", "4236":"shipNotInOrbitError", "4237":"shipInvalidRefineryGoodError", "4238":"shipInvalidRefineryTypeError", "4239":"shipMissingRefineryError", "4240":"shipMissingSurveyorError", "4241":"shipMissingWarpDriveError", "4242":"shipMissingMineralProcessorError", "4243":"shipMissingMiningLasersError", "4244":"shipNotDockedError", "4245":"purchaseShipNotPresentError", "4246":"shipMountNoShipyardError", "4247":"shipMissingMountError", "4248":"shipMountInsufficientCreditsError", "4249":"shipMissingPowerError", "4250":"shipMissingSlotsError", "4251":"shipMissingMountsError", "4252":"shipMissingCrewError", "4253":"shipExtractDestabilizedError", "4254":"shipJumpInvalidOriginError", "4255":"shipJumpInvalidWaypointError", "4256":"shipJumpOriginUnderConstructionError", "4257":"shipMissingGasProcessorError", "4258":"shipMissingGasSiphonsError", "4259":"shipSiphonInvalidWaypointError", "4260":"shipSiphonPermissionError", "4261":"waypointNoYieldError", "4262":"shipJumpDestinationUnderConstructionError", "4500":"acceptContractNotAuthorizedError", "4501":"acceptContractConflictError", "4502":"fulfillContractDeliveryError", "4503":"contractDeadlineError", "4504":"contractFulfilledError", "4505":"contractNotAcceptedError", "4506":"contractNotAuthorizedError", "4508":"shipDeliverTermsError", "4509":"shipDeliverFulfilledError", "4510":"shipDeliverInvalidLocationError", "4511":"existingContractError", "4600":"marketTradeInsufficientCreditsError", "4601":"marketTradeNoPurchaseError", "4602":"marketTradeNotSoldError", "4603":"marketNotFoundError", "4604":"marketTradeUnitLimitError", "4700":"waypointNoFactionError", "4800":"constructionMaterialNotRequired", "4801":"constructionMaterialFulfilled", "4802":"shipConstructionInvalidLocationError" }, bpmn_error_code: get or else(get value(error_code_by_name, error_code), error_code), error_data: {error_code: error_code, error_message: error_message, error_name: bpmn_error_code}, bpmnError: bpmnError(bpmn_error_code, error_message, error_data) }.bpmnError else null" />
<zeebe:header key="retryBackoff" value="PT1S" />
</zeebe:taskHeaders>
<zeebe:properties>
<zeebe:property name="custom_error_handling" value="by_error_name" />
</zeebe:properties>
</bpmn:extensionElements>
<bpmn:incoming>Flow_0cwrbc4</bpmn:incoming>
<bpmn:outgoing>Flow_13gr9e9</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:sequenceFlow id="Flow_13gr9e9" sourceRef="Activity_0zlhnmf" targetRef="Activity_0wqckz7" />
<bpmn:serviceTask id="Activity_0wqckz7" name="Get market data" zeebe:modelerTemplate="com.camunda.SpaceTradersApi" zeebe:modelerTemplateVersion="5" zeebe:modelerTemplateIcon="data:image/png;base64,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">
<bpmn:extensionElements>
<zeebe:taskDefinition type="io.camunda:http-json:1" retries="10" />
<zeebe:ioMapping>
<zeebe:input source="placeholder" target="objects" />
<zeebe:input source="=ship_system" target="objects.getMarket_systemSymbol" />
<zeebe:input source="=ship_waypoint" target="objects.getMarket_waypointSymbol" />
<zeebe:input source="bearer" target="authentication.type" />
<zeebe:input source="= token" target="authentication.token" />
<zeebe:input source="get" target="method" />
<zeebe:input source="="https://api.spacetraders.io/v2/systems/" + string(objects.getMarket_systemSymbol) + "/waypoints/" + string(objects.getMarket_waypointSymbol) + "/market"" target="url" />
<zeebe:input source="={ }" target="queryParameters" />
</zeebe:ioMapping>
<zeebe:taskHeaders>
<zeebe:header key="category" value="systems" />
<zeebe:header key="operation" value="getMarket" />
<zeebe:header key="resultExpression" value="={ "market": response.body.data, "market_trade_goods": market.tradeGoods }" />
<zeebe:header key="errorExpression" value="=if matches(error.code, "4\d\d") then { error_code: substring after(extract(error.message,"\"code\":\d{4}")[1], ":"), error_message: substring(extract(error.message, "\"message\":\"(\w|\d|\s|\.|\-)+")[1], 12), error_code_by_name: { "4000":"cooldownConflictError", "4001":"waypointNoAccessError", "4100":"tokenEmptyError", "4101":"tokenMissingSubjectError", "4102":"tokenInvalidSubjectError", "4103":"missingTokenRequestError", "4104":"invalidTokenRequestError", "4105":"invalidTokenSubjectError", "4106":"accountNotExistsError", "4107":"agentNotExistsError", "4108":"accountHasNoAgentError", "4109":"registerAgentExistsError", "4110":"registerAgentSymbolReservedError", "4111":"registerAgentConflictSymbolError", "4200":"navigateInTransitError", "4201":"navigateInvalidDestinationError", "4202":"navigateOutsideSystemError", "4203":"navigateInsufficientFuelError", "4204":"navigateSameDestinationError", "4205":"shipExtractInvalidWaypointError", "4206":"shipExtractPermissionError", "4207":"shipJumpNoSystemError", "4208":"shipJumpSameSystemError", "4210":"shipJumpMissingModuleError", "4211":"shipJumpNoValidWaypointError", "4212":"shipJumpMissingAntimatterError", "4214":"shipInTransitError", "4215":"shipMissingSensorArraysError", "4216":"purchaseShipCreditsError", "4217":"shipCargoExceedsLimitError", "4218":"shipCargoMissingError", "4219":"shipCargoUnitCountError", "4220":"shipSurveyVerificationError", "4221":"shipSurveyExpirationError", "4222":"shipSurveyWaypointTypeError", "4223":"shipSurveyOrbitError", "4224":"shipSurveyExhaustedError", "4225":"shipRefuelDockedError", "4226":"shipRefuelInvalidWaypointError", "4227":"shipMissingMountsError", "4228":"shipCargoFullError", "4229":"shipJumpFromGateToGateError", "4230":"waypointChartedError", "4231":"shipTransferShipNotFound", "4232":"shipTransferAgentConflict", "4233":"shipTransferSameShipConflict", "4234":"shipTransferLocationConflict", "4235":"warpInsideSystemError", "4236":"shipNotInOrbitError", "4237":"shipInvalidRefineryGoodError", "4238":"shipInvalidRefineryTypeError", "4239":"shipMissingRefineryError", "4240":"shipMissingSurveyorError", "4241":"shipMissingWarpDriveError", "4242":"shipMissingMineralProcessorError", "4243":"shipMissingMiningLasersError", "4244":"shipNotDockedError", "4245":"purchaseShipNotPresentError", "4246":"shipMountNoShipyardError", "4247":"shipMissingMountError", "4248":"shipMountInsufficientCreditsError", "4249":"shipMissingPowerError", "4250":"shipMissingSlotsError", "4251":"shipMissingMountsError", "4252":"shipMissingCrewError", "4253":"shipExtractDestabilizedError", "4254":"shipJumpInvalidOriginError", "4255":"shipJumpInvalidWaypointError", "4256":"shipJumpOriginUnderConstructionError", "4257":"shipMissingGasProcessorError", "4258":"shipMissingGasSiphonsError", "4259":"shipSiphonInvalidWaypointError", "4260":"shipSiphonPermissionError", "4261":"waypointNoYieldError", "4262":"shipJumpDestinationUnderConstructionError", "4500":"acceptContractNotAuthorizedError", "4501":"acceptContractConflictError", "4502":"fulfillContractDeliveryError", "4503":"contractDeadlineError", "4504":"contractFulfilledError", "4505":"contractNotAcceptedError", "4506":"contractNotAuthorizedError", "4508":"shipDeliverTermsError", "4509":"shipDeliverFulfilledError", "4510":"shipDeliverInvalidLocationError", "4511":"existingContractError", "4600":"marketTradeInsufficientCreditsError", "4601":"marketTradeNoPurchaseError", "4602":"marketTradeNotSoldError", "4603":"marketNotFoundError", "4604":"marketTradeUnitLimitError", "4700":"waypointNoFactionError", "4800":"constructionMaterialNotRequired", "4801":"constructionMaterialFulfilled", "4802":"shipConstructionInvalidLocationError" }, bpmn_error_code: get or else(get value(error_code_by_name, error_code), error_code), error_data: {error_code: error_code, error_message: error_message, error_name: bpmn_error_code}, bpmnError: bpmnError(bpmn_error_code, error_message, error_data) }.bpmnError else null" />
<zeebe:header key="retryBackoff" value="PT1S" />
</zeebe:taskHeaders>
<zeebe:properties>
<zeebe:property name="custom_error_handling" value="by_error_name" />
</zeebe:properties>
</bpmn:extensionElements>
<bpmn:incoming>Flow_13gr9e9</bpmn:incoming>
<bpmn:outgoing>Flow_0gk2j8p</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:sequenceFlow id="Flow_0gk2j8p" sourceRef="Activity_0wqckz7" targetRef="Activity_16b2py6" />
<bpmn:userTask id="Activity_16b2py6" name="Select goods">
<bpmn:extensionElements>
<zeebe:formDefinition formId="space-traders-select-trade-good" />
<zeebe:ioMapping>
<zeebe:input source="=for cargo_good in ship_cargo.inventory[list contains(market_trade_goods.symbol, symbol)] return { symbol: cargo_good.symbol, units: cargo_good.units, sell_price: market_trade_goods[symbol = cargo_good.symbol][1].sellPrice }" target="goods_to_sell" />
<zeebe:input source="=for trade_good in market_trade_goods[not(list contains(ship_cargo.inventory.symbol, symbol))] return { symbol: trade_good.symbol, sell_price: trade_good.sellPrice }" target="trade_goods" />
<zeebe:input source="=for cargo_good in ship_cargo.inventory[not(list contains(market_trade_goods.symbol, symbol))] return { symbol: cargo_good.symbol, units: cargo_good.units }" target="cargo_goods" />
<zeebe:input source="=0" target="trade_units" />
<zeebe:input source="=null" target="selected_trade_good" />
<zeebe:output source="=trade_units" target="trade_units" />
<zeebe:output source="=selected_trade_good" target="selected_trade_good" />
</zeebe:ioMapping>
</bpmn:extensionElements>
<bpmn:incoming>Flow_0gk2j8p</bpmn:incoming>
<bpmn:outgoing>Flow_0q2e6g2</bpmn:outgoing>
</bpmn:userTask>
<bpmn:sequenceFlow id="Flow_0q2e6g2" sourceRef="Activity_16b2py6" targetRef="Gateway_0qi9uxc" />
<bpmn:serviceTask id="Activity_0hcbf11" name="Sell goods" zeebe:modelerTemplate="com.camunda.SpaceTradersApi" zeebe:modelerTemplateVersion="5" zeebe:modelerTemplateIcon="data:image/png;base64,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">
<bpmn:extensionElements>
<zeebe:taskDefinition type="io.camunda:http-json:1" retries="10" />
<zeebe:ioMapping>
<zeebe:input source="placeholder" target="objects" />
<zeebe:input source="=selected_ship" target="objects.sellCargo_shipSymbol" />
<zeebe:input source="=selected_trade_good" target="objects.sellCargo_sellCargoRequest.symbol" />
<zeebe:input source="=trade_units" target="objects.sellCargo_sellCargoRequest.units" />
<zeebe:input source="bearer" target="authentication.type" />
<zeebe:input source="=token" target="authentication.token" />
<zeebe:input source="post" target="method" />
<zeebe:input source="="https://api.spacetraders.io/v2/my/ships/" + string(objects.sellCargo_shipSymbol) + "/sell"" target="url" />
<zeebe:input source="={ }" target="queryParameters" />
<zeebe:input source="= objects.sellCargo_sellCargoRequest" target="body" />
</zeebe:ioMapping>
<zeebe:taskHeaders>
<zeebe:header key="category" value="fleet" />
<zeebe:header key="operation" value="sellCargo" />
<zeebe:header key="resultExpression" value="={ "agent": response.body.data.agent, "cargo": response.body.data.cargo, "transaction": response.body.data.transaction }" />
<zeebe:header key="errorExpression" value="=if matches(error.code, "4\d\d") then { error_code: substring after(extract(error.message,"\"code\":\d{4}")[1], ":"), error_message: substring(extract(error.message, "\"message\":\"(\w|\d|\s|\.|\-)+")[1], 12), error_code_by_name: { "4000":"cooldownConflictError", "4001":"waypointNoAccessError", "4100":"tokenEmptyError", "4101":"tokenMissingSubjectError", "4102":"tokenInvalidSubjectError", "4103":"missingTokenRequestError", "4104":"invalidTokenRequestError", "4105":"invalidTokenSubjectError", "4106":"accountNotExistsError", "4107":"agentNotExistsError", "4108":"accountHasNoAgentError", "4109":"registerAgentExistsError", "4110":"registerAgentSymbolReservedError", "4111":"registerAgentConflictSymbolError", "4200":"navigateInTransitError", "4201":"navigateInvalidDestinationError", "4202":"navigateOutsideSystemError", "4203":"navigateInsufficientFuelError", "4204":"navigateSameDestinationError", "4205":"shipExtractInvalidWaypointError", "4206":"shipExtractPermissionError", "4207":"shipJumpNoSystemError", "4208":"shipJumpSameSystemError", "4210":"shipJumpMissingModuleError", "4211":"shipJumpNoValidWaypointError", "4212":"shipJumpMissingAntimatterError", "4214":"shipInTransitError", "4215":"shipMissingSensorArraysError", "4216":"purchaseShipCreditsError", "4217":"shipCargoExceedsLimitError", "4218":"shipCargoMissingError", "4219":"shipCargoUnitCountError", "4220":"shipSurveyVerificationError", "4221":"shipSurveyExpirationError", "4222":"shipSurveyWaypointTypeError", "4223":"shipSurveyOrbitError", "4224":"shipSurveyExhaustedError", "4225":"shipRefuelDockedError", "4226":"shipRefuelInvalidWaypointError", "4227":"shipMissingMountsError", "4228":"shipCargoFullError", "4229":"shipJumpFromGateToGateError", "4230":"waypointChartedError", "4231":"shipTransferShipNotFound", "4232":"shipTransferAgentConflict", "4233":"shipTransferSameShipConflict", "4234":"shipTransferLocationConflict", "4235":"warpInsideSystemError", "4236":"shipNotInOrbitError", "4237":"shipInvalidRefineryGoodError", "4238":"shipInvalidRefineryTypeError", "4239":"shipMissingRefineryError", "4240":"shipMissingSurveyorError", "4241":"shipMissingWarpDriveError", "4242":"shipMissingMineralProcessorError", "4243":"shipMissingMiningLasersError", "4244":"shipNotDockedError", "4245":"purchaseShipNotPresentError", "4246":"shipMountNoShipyardError", "4247":"shipMissingMountError", "4248":"shipMountInsufficientCreditsError", "4249":"shipMissingPowerError", "4250":"shipMissingSlotsError", "4251":"shipMissingMountsError", "4252":"shipMissingCrewError", "4253":"shipExtractDestabilizedError", "4254":"shipJumpInvalidOriginError", "4255":"shipJumpInvalidWaypointError", "4256":"shipJumpOriginUnderConstructionError", "4257":"shipMissingGasProcessorError", "4258":"shipMissingGasSiphonsError", "4259":"shipSiphonInvalidWaypointError", "4260":"shipSiphonPermissionError", "4261":"waypointNoYieldError", "4262":"shipJumpDestinationUnderConstructionError", "4500":"acceptContractNotAuthorizedError", "4501":"acceptContractConflictError", "4502":"fulfillContractDeliveryError", "4503":"contractDeadlineError", "4504":"contractFulfilledError", "4505":"contractNotAcceptedError", "4506":"contractNotAuthorizedError", "4508":"shipDeliverTermsError", "4509":"shipDeliverFulfilledError", "4510":"shipDeliverInvalidLocationError", "4511":"existingContractError", "4600":"marketTradeInsufficientCreditsError", "4601":"marketTradeNoPurchaseError", "4602":"marketTradeNotSoldError", "4603":"marketNotFoundError", "4604":"marketTradeUnitLimitError", "4700":"waypointNoFactionError", "4800":"constructionMaterialNotRequired", "4801":"constructionMaterialFulfilled", "4802":"shipConstructionInvalidLocationError" }, bpmn_error_code: get or else(get value(error_code_by_name, error_code), error_code), error_data: {error_code: error_code, error_message: error_message, error_name: bpmn_error_code}, bpmnError: bpmnError(bpmn_error_code, error_message, error_data) }.bpmnError else null" />
<zeebe:header key="retryBackoff" value="PT1S" />
</zeebe:taskHeaders>
<zeebe:properties>
<zeebe:property name="custom_error_handling" value="by_error_name" />
</zeebe:properties>
</bpmn:extensionElements>
<bpmn:incoming>Flow_1f4qxb1</bpmn:incoming>
<bpmn:outgoing>Flow_0tm6zx1</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:sequenceFlow id="Flow_0tm6zx1" sourceRef="Activity_0hcbf11" targetRef="Gateway_1v7izx6" />
<bpmn:intermediateThrowEvent id="Event_0i1tjvo" name="To control center">
<bpmn:incoming>Flow_0ijajv3</bpmn:incoming>
<bpmn:linkEventDefinition id="LinkEventDefinition_1m6uulj" name="to-control-center" />
</bpmn:intermediateThrowEvent>
<bpmn:sequenceFlow id="Flow_0ijajv3" sourceRef="Gateway_1v7izx6" targetRef="Event_0i1tjvo" />
<bpmn:exclusiveGateway id="Gateway_0qi9uxc" name="Sell a good?" default="Flow_03duxem">
<bpmn:incoming>Flow_0q2e6g2</bpmn:incoming>