@uipath/maestro-tool 1.202.2 → 1.203.0-preview.180

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/README.md +8 -0
  2. package/dist/THIRD-PARTY-NOTICES.md +83 -290
  3. package/dist/{authoring-818595dq.js → authoring-at68vr5g.js} +7 -5
  4. package/dist/{authoring-6r3wx3fa.js → authoring-sh284a0x.js} +3 -3
  5. package/dist/{authoring-61hqf5em.js → authoring-szfy0rh1.js} +5 -5
  6. package/dist/{binding-service-643e69bb.js → binding-service-8a05gy4k.js} +37 -29
  7. package/dist/{bpmn-action-type-validator-kx36sqhe.js → bpmn-action-type-validator-8kvyvvcf.js} +2 -2
  8. package/dist/bpmn-binding-resolver-5scq28mc.js +145 -0
  9. package/dist/{bpmn-branch-y1m9f10n.js → bpmn-branch-t12a7jvf.js} +50 -44
  10. package/dist/bpmn-format-service-ay6jd9he.js +69 -0
  11. package/dist/{bpmn-refresh-service-ew545y06.js → bpmn-refresh-service-ak1ctkwg.js} +4 -4
  12. package/dist/{bpmn-update-metadata-service-jhahhjab.js → bpmn-update-metadata-service-hqe4edze.js} +6 -5
  13. package/dist/{bpmn-validate-service-6z2dj8ac.js → bpmn-validate-service-48sfy3a2.js} +3 -3
  14. package/dist/{case-api-4mstfkzf.js → case-api-e3fmq685.js} +6 -6
  15. package/dist/case-bindings-service-nswc6v0v.js +240 -0
  16. package/dist/case-debug-studio-web-service-58gtqznh.js +135 -0
  17. package/dist/case-format-service-6s5e1ckk.js +84 -0
  18. package/dist/{case-pack-service-v7wtb0qt.js → case-pack-service-sg435he1.js} +62 -11
  19. package/dist/{case-validate-service-bnpaf0zt.js → case-validate-service-7s69shsa.js} +1424 -42
  20. package/dist/{connector-enrichment-service-scrqnke3.js → connector-enrichment-service-9rqr3esj.js} +27 -26
  21. package/dist/{connector-lookup-service-hnk08t3m.js → connector-lookup-service-pencasp9.js} +5 -5
  22. package/dist/{connector-service-581bhxaj.js → connector-service-k4cgcv2b.js} +224 -56
  23. package/dist/{connector-task-spec-y2tcthz5.js → connector-task-spec-13ex0x0m.js} +27 -26
  24. package/dist/{conversion-FQTRFHRX-03xh3xbp.js → conversion-FQTRFHRX-0y9br7gw.js} +6 -5
  25. package/dist/de-FGHEJRCI-gn4cf5gh.js +2697 -0
  26. package/dist/de-MUJPA4EB-dpg7t2rw.js +173 -0
  27. package/dist/{debug-conversation-trigger-nj04k7s2.js → debug-conversation-trigger-wgzjaasj.js} +17 -14
  28. package/dist/{debug-http-client-c4teyma3.js → debug-http-client-7dvbwp96.js} +2 -2
  29. package/dist/{debug-service-m5jdyz3q.js → debug-service-8cwxhgww.js} +3 -3
  30. package/dist/{edge-service-vv2yfsn4.js → edge-service-szpsaezp.js} +17 -14
  31. package/dist/{index-yqfqxh2r.js → embedded-file-reader-0sjt4nkj.js} +96 -16641
  32. package/dist/{en-TBNO2WUV-rfe87pgh.js → en-BWGKA5OE-1qkvb9rn.js} +2 -2
  33. package/dist/en-FBPVNKFN-dqt573xn.js +138 -0
  34. package/dist/en-TBNO2WUV-9nan43e5.js +1936 -0
  35. package/dist/{enrichment-service-a65qt7y1.js → enrichment-service-7n1tf75p.js} +4 -4
  36. package/dist/es-7SE7HX2X-8yh1aj2y.js +173 -0
  37. package/dist/es-KR3ZSNMP-0cszm2n3.js +2697 -0
  38. package/dist/es-MX-2MYFZU7X-3rek4r73.js +173 -0
  39. package/dist/es-MX-XXZJGC4R-b4fbwe9d.js +2697 -0
  40. package/dist/first-party-service-srxaftkn.js +27 -0
  41. package/dist/{flow-api-vqvvs0q2.js → flow-api-4vkpbmt3.js} +7 -7
  42. package/dist/{flow-debug-service-vd7bdyhg.js → flow-debug-service-9tad5ckh.js} +66 -41
  43. package/dist/{flow-eval-node-target-mve3v55h.js → flow-eval-node-target-g222rh2e.js} +22 -15
  44. package/dist/flow-eval-run-api-hashjgq1.js +13 -0
  45. package/dist/{flow-eval-run-service-rt9kg4wx.js → flow-eval-run-service-btghb02r.js} +109 -224
  46. package/dist/{flow-eval-service-ededh59n.js → flow-eval-service-ma5psrsd.js} +346 -302
  47. package/dist/{flow-init-service-4ve9tr0t.js → flow-init-service-662zhfd3.js} +22 -18
  48. package/dist/{flow-io-2dd3sx38.js → flow-io-3cqz0svg.js} +16 -13
  49. package/dist/{flow-migrate-service-nbe6et60.js → flow-migrate-service-ehx7nmsr.js} +18 -14
  50. package/dist/{flow-pack-service-b2n877d8.js → flow-pack-service-a3w3489r.js} +43 -35
  51. package/dist/flow-validate-service-02e21w4d.js +3555 -0
  52. package/dist/fr-MDFKNZ4C-h4a122k9.js +173 -0
  53. package/dist/fr-Y6NPVODW-q5ef3htr.js +2697 -0
  54. package/dist/{governance-fetcher-at165287.js → governance-fetcher-7vxmap1e.js} +5 -4
  55. package/dist/{headless-85f2cys0.js → headless-627q5my5.js} +42909 -1756
  56. package/dist/{hitl-service-xn1bt80z.js → hitl-service-fn94tk6z.js} +16 -13
  57. package/dist/{index-hfsfzg4k.js → index-3arytfxn.js} +6 -4
  58. package/dist/{index-d1yqqk6q.js → index-55cym5j7.js} +6 -4
  59. package/dist/{index-0j6xww0f.js → index-9f94yk28.js} +3 -3
  60. package/dist/{index-1kgxzh8x.js → index-fz4ttsde.js} +14 -2
  61. package/dist/index-gvwc29bb.js +16742 -0
  62. package/dist/{index-mkgrn150.js → index-j1azsfr5.js} +36 -33
  63. package/dist/index-kmp9fmhb.js +25 -0
  64. package/dist/{index-938ee96p.js → index-rtg24r4x.js} +1 -1
  65. package/dist/index-tzccx5ym.js +2961 -0
  66. package/dist/{index-acd6bpqc.js → index-ymsd3pyx.js} +12 -15
  67. package/dist/index.js +3 -3
  68. package/dist/{input-reader-1wda1a2v.js → input-reader-7pzkcw6t.js} +1 -1
  69. package/dist/{input-reader-svafwk7x.js → input-reader-j8rvde4z.js} +1 -1
  70. package/dist/ja-Q5PXKJ2V-tzf2rvz2.js +2697 -0
  71. package/dist/ja-UTQEAP34-8e0q6swp.js +173 -0
  72. package/dist/known-types-8dhhqk35.js +19 -0
  73. package/dist/ko-AXCHW2OK-askct7f6.js +173 -0
  74. package/dist/ko-AYBDSRZG-am0h0m2r.js +2697 -0
  75. package/dist/{maestro-automate-entry-gwntzkvj.js → maestro-automate-entry-jehpbg37.js} +2 -2
  76. package/dist/{maestro-debug-service-dvh7qbx8.js → maestro-debug-service-xhtszkrc.js} +10 -10
  77. package/dist/{maestro-pack-service-fam5zdm3.js → maestro-pack-service-fkkc5g3v.js} +12 -6
  78. package/dist/{node-ks3095fb.js → node-p4bde6qy.js} +2344 -376
  79. package/dist/node-service-frvz67y3.js +83 -0
  80. package/dist/{node-sync-service-zwvm30qg.js → node-sync-service-wa2t7c65.js} +14 -14
  81. package/dist/{packager-tool-me5q0naa.js → packager-tool-095jzn8v.js} +16 -6
  82. package/dist/{packager-tool-y5f2qhfe.js → packager-tool-19030vpg.js} +32 -2
  83. package/dist/{packager-tool-gtqkcj4x.js → packager-tool-2c1rbj85.js} +310 -13
  84. package/dist/packager-tool-2q1mffef.js +261 -0
  85. package/dist/{flow-validate-service-0hxf5080.js → packager-tool-2xrng5ff.js} +1956 -3065
  86. package/dist/{packager-tool-8dgxmjzx.js → packager-tool-30ky51ca.js} +6 -3
  87. package/dist/{packager-tool-d5mjdpbf.js → packager-tool-4r35ye9r.js} +5 -4
  88. package/dist/packager-tool-53w8skv5.js +262 -0
  89. package/dist/{packager-tool-db4jm1rz.js → packager-tool-56gcg9de.js} +1 -1
  90. package/dist/{packager-tool-29eg86w6.js → packager-tool-6rsegsby.js} +6 -7
  91. package/dist/packager-tool-7msx23gd.js +13 -0
  92. package/dist/packager-tool-7q6z6npd.js +1937 -0
  93. package/dist/packager-tool-8qp60s20.js +12 -0
  94. package/dist/{packager-tool-s1r7krkp.js → packager-tool-9pccpz3r.js} +1 -1
  95. package/dist/{packager-tool-m351tkkr.js → packager-tool-c95fhhys.js} +30 -8
  96. package/dist/{packager-tool-kg5sxneg.js → packager-tool-cmzzh4f8.js} +72 -73
  97. package/dist/{packager-tool-ffvmys2r.js → packager-tool-cr0z8cbj.js} +5 -5
  98. package/dist/{packager-tool-8fkt71n4.js → packager-tool-cs1ec1da.js} +4 -3
  99. package/dist/{packager-tool-xatnrtwp.js → packager-tool-d2813z49.js} +9 -9
  100. package/dist/packager-tool-d88rqwk8.js +135 -0
  101. package/dist/{packager-tool-pm3qh1hy.js → packager-tool-dh5nppv4.js} +1 -1
  102. package/dist/packager-tool-dqxz5v18.js +486 -0
  103. package/dist/{packager-tool-r87gxwqa.js → packager-tool-e87tzg4y.js} +2 -2
  104. package/dist/{packager-tool-w9fd7vzs.js → packager-tool-f33sg3vr.js} +9 -9
  105. package/dist/{packager-tool-cj2ka9jr.js → packager-tool-fer9mdsq.js} +2 -2
  106. package/dist/{packager-tool-70eh7rpg.js → packager-tool-fm67whdy.js} +23 -5
  107. package/dist/packager-tool-fq7wtkd3.js +21012 -0
  108. package/dist/packager-tool-fvm2dddf.js +6297 -0
  109. package/dist/packager-tool-gdtpsdn7.js +342 -0
  110. package/dist/{packager-tool-ejyeka5x.js → packager-tool-gpwec9sp.js} +2 -2
  111. package/dist/{packager-tool-pap09zfh.js → packager-tool-h8x54cvx.js} +1 -1
  112. package/dist/{packager-tool-9vh3df76.js → packager-tool-hdmhxdch.js} +7 -7
  113. package/dist/packager-tool-hnyecbk6.js +88 -0
  114. package/dist/{packager-tool-mtbak8t4.js → packager-tool-j00gcgbs.js} +2 -2
  115. package/dist/packager-tool-j78fwwhq.js +16 -0
  116. package/dist/packager-tool-jysvpt8p.js +11 -0
  117. package/dist/{packager-tool-jfv7t0c8.js → packager-tool-kb554twx.js} +94 -94
  118. package/dist/{packager-tool-k4x5yn3p.js → packager-tool-khm7zsm8.js} +4 -1
  119. package/dist/packager-tool-kj0qc4f4.js +269 -0
  120. package/dist/{packager-tool-12636p2y.js → packager-tool-mcjjj1hk.js} +4 -4
  121. package/dist/{packager-tool-bftjhmqz.js → packager-tool-mfrdmqmt.js} +124 -2
  122. package/dist/{packager-tool-qgh5yaeh.js → packager-tool-mj89jhvb.js} +1 -1
  123. package/dist/{packager-tool-ve35117x.js → packager-tool-mjz4hma1.js} +5791 -176
  124. package/dist/packager-tool-paq9c70w.js +1332 -0
  125. package/dist/{packager-tool-d8v984ah.js → packager-tool-q2gwvnf5.js} +15 -56
  126. package/dist/{packager-tool-nmznynbj.js → packager-tool-qff6ang6.js} +1 -1
  127. package/dist/{packager-tool-j79gbsee.js → packager-tool-rg5pkkf0.js} +6 -6
  128. package/dist/{packager-tool-7309ymg1.js → packager-tool-s1466723.js} +10 -13
  129. package/dist/{packager-tool-54b4v7wp.js → packager-tool-te6rrpsz.js} +205 -195
  130. package/dist/packager-tool-vcjq9xkc.js +1895 -0
  131. package/dist/{packager-tool-w20r6n9v.js → packager-tool-vck7ct1e.js} +2877 -2221
  132. package/dist/{packager-tool-e8td7b01.js → packager-tool-vdc8r21p.js} +10328 -16610
  133. package/dist/{packager-tool-nxw5yzs7.js → packager-tool-vqcnvaae.js} +1 -1
  134. package/dist/{packager-tool-7rz102fw.js → packager-tool-wd01egnx.js} +1 -1
  135. package/dist/{packager-tool-gxqd24n0.js → packager-tool-wger1vt9.js} +7 -7
  136. package/dist/{packager-tool-a6yfnjgx.js → packager-tool-wynrdnqj.js} +1 -1
  137. package/dist/packager-tool-x0eamrk4.js +104577 -0
  138. package/dist/packager-tool-x92czn5x.js +208 -0
  139. package/dist/{packager-tool-am67sn1c.js → packager-tool-xtkgeccn.js} +1 -1
  140. package/dist/packager-tool-y59jhapb.js +10369 -0
  141. package/dist/{packager-tool-317z6dc1.js → packager-tool-ydg78w9z.js} +23 -23
  142. package/dist/{packager-tool-rr8hveb9.js → packager-tool-ygrrb1zh.js} +1 -1
  143. package/dist/{packager-tool-f0kd5kq4.js → packager-tool-yrsrzz1a.js} +127 -12
  144. package/dist/{packager-tool-d9dpx9wn.js → packager-tool-z185rq2a.js} +1 -1
  145. package/dist/{packager-tool-79gws1zn.js → packager-tool-z6nkdv48.js} +270 -24
  146. package/dist/{packager-tool-802qm7jy.js → packager-tool-zzxt99e4.js} +3 -3
  147. package/dist/packager-tool.js +75 -218
  148. package/dist/{project-artifacts-9z7atbk7.js → project-artifacts-h5cydk2n.js} +1 -1
  149. package/dist/{project-validator-0rkrfmj0.js → project-validator-ek97s27p.js} +1 -1
  150. package/dist/pt-3DIO5QWG-59b3f4bc.js +173 -0
  151. package/dist/pt-BR-TKHNHMET-dn6zxk1d.js +2697 -0
  152. package/dist/pt-BR-Y6K6XHXK-mp3hwhw1.js +173 -0
  153. package/dist/pt-ROXU257Y-yd80gx6s.js +2697 -0
  154. package/dist/{resourcesSyncService-3pajvveg.js → resourcesSyncService-7s92g1hm.js} +28 -27
  155. package/dist/ro-AVAWPKOO-42m6am1w.js +2697 -0
  156. package/dist/ro-BWR3ONRR-vzx3hy8a.js +173 -0
  157. package/dist/ru-GSCT4ARZ-jrxwev63.js +10 -0
  158. package/dist/ru-WBLQ5B2U-s4em88p0.js +10 -0
  159. package/dist/sdd-lookup-7h7j2h6v.js +48 -0
  160. package/dist/{serialization-BXU6AKAN-dk0sqx89.js → serialization-BXU6AKAN-0ghhrsja.js} +6 -5
  161. package/dist/{shared-utils-twgpb9ax.js → shared-utils-6z7gnnc8.js} +1 -1
  162. package/dist/{strict-case-rules-zxnq80zm.js → strict-case-rules-byym8cvc.js} +141 -109
  163. package/dist/strict-sdd-audit-v156c9e3.js +2520 -0
  164. package/dist/tidy-service-zyy7wxc0.js +39 -0
  165. package/dist/{tool-pxfafj3m.js → tool-dejjyv8m.js} +213 -51
  166. package/dist/{tool-td30zmyt.js → tool-v0r5qzcc.js} +106 -146
  167. package/dist/tool.js +3 -3
  168. package/dist/tr-5IIHSFW5-hw4cewew.js +173 -0
  169. package/dist/tr-JMIP7ZSL-fb67ft9w.js +2696 -0
  170. package/dist/{trigger-enrichment-service-t3wcd12r.js → trigger-enrichment-service-ak1nrz5t.js} +30 -29
  171. package/dist/{variable-service-2q705dsx.js → variable-service-t9gsp8xs.js} +16 -13
  172. package/dist/{wait-for-flow-job-sx0ht8sb.js → wait-for-flow-job-1s8ka07s.js} +7 -7
  173. package/dist/{xml-949787yf.js → xml-3rzcgm9z.js} +1359 -659
  174. package/dist/zh-CN-IFFXSEJS-tke4mzty.js +2697 -0
  175. package/dist/zh-CN-R2KU4U5L-tc1hat59.js +173 -0
  176. package/dist/zh-TW-GNKMELBF-j674515r.js +173 -0
  177. package/dist/zh-TW-IYBNYAMG-wcan0qpb.js +2697 -0
  178. package/package.json +3 -2
  179. package/dist/bpmn-format-service-r67afbny.js +0 -477
  180. package/dist/case-debug-studio-web-service-kj1797m8.js +0 -336
  181. package/dist/known-types-eq32py2n.js +0 -20
  182. package/dist/node-service-teagjd9n.js +0 -75
  183. package/dist/packager-tool-15bstxb6.js +0 -4192
  184. package/dist/packager-tool-1zpm7wts.js +0 -7217
  185. package/dist/packager-tool-7tjxtpfp.js +0 -106
  186. package/dist/packager-tool-ckhyvcn5.js +0 -58
  187. package/dist/packager-tool-dz506qqq.js +0 -2120
  188. package/dist/packager-tool-hpc2j0zw.js +0 -27
  189. package/dist/packager-tool-jjpc0yka.js +0 -304
  190. package/dist/packager-tool-xtv236p7.js +0 -73
  191. package/dist/strict-sdd-audit-zc0n5vj6.js +0 -1024
  192. package/dist/tidy-service-hc9gex0v.js +0 -36
  193. /package/dist/{localization-xecwjpe2.js → localization-y790z9vm.js} +0 -0
@@ -1,4192 +0,0 @@
1
- // ../maestro-sdk/dist/bpmn-validation/project-validator.js
2
- var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
3
- function isGuid(value) {
4
- return GUID_REGEX.test(value);
5
- }
6
- var GUID_REGEX;
7
- var init_guid = __esm(() => {
8
- GUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
9
- });
10
- var bpmn_spec_default = {
11
- version: "1.0.0",
12
- source: "PO.Frontend registry generator (2026-04-14) + CLI notes",
13
- extractedFrom: {
14
- designSchemaUtils: "src/services/serialization/design-schema/design-schema-utils.ts",
15
- bpmnModdle: "src/services/serialization/bpmn-moddle.ts",
16
- fpsFormPropertiesUtils: "src/components/canvases/shared/panels/properties/fps/FPSFormPropertiesUtils.ts",
17
- constants: "src/constants.ts",
18
- designSchemaJsonDir: "src/services/serialization/design-schema/*.design-schema.json"
19
- },
20
- extensionTypes: {
21
- "uipath:Activity": {
22
- extensionType: "uipath:Activity",
23
- label: "Canvas activity",
24
- bpmnElement: "bpmn:ServiceTask",
25
- placements: {
26
- serviceTask: {
27
- type: "bpmn:ServiceTask"
28
- },
29
- task: {
30
- type: "bpmn:Task"
31
- },
32
- boundaryEvent: {
33
- type: "bpmn:BoundaryEvent"
34
- }
35
- },
36
- extensionTag: "uipath:activity",
37
- contextFields: [],
38
- inputPattern: "none",
39
- outputSource: null,
40
- outputType: null,
41
- bindingPattern: "none",
42
- requiresDiscovery: false,
43
- isDynamic: true,
44
- xmlTemplate: null,
45
- outputNotes: "Studio Web canvas can emit custom output-only activity payloads for placeholder tasks and error boundary metadata."
46
- },
47
- "Actions.HITL": {
48
- extensionType: "Actions.HITL",
49
- label: "Create action app task",
50
- bpmnElement: "bpmn:UserTask",
51
- placements: {
52
- activity: {
53
- type: "bpmn:UserTask"
54
- }
55
- },
56
- extensionTag: "uipath:activity",
57
- contextFields: [
58
- {
59
- name: "appId",
60
- type: "string",
61
- required: false,
62
- hidden: true,
63
- isPrimaryKey: true,
64
- binding: false,
65
- defaultValue: null
66
- },
67
- {
68
- name: "appVersion",
69
- type: "number",
70
- required: false,
71
- hidden: true,
72
- isPrimaryKey: false,
73
- binding: false,
74
- defaultValue: null
75
- },
76
- {
77
- name: "actions",
78
- type: "string",
79
- required: false,
80
- hidden: true,
81
- isPrimaryKey: false,
82
- binding: false,
83
- defaultValue: null
84
- },
85
- {
86
- name: "key",
87
- type: "string",
88
- required: false,
89
- hidden: true,
90
- isPrimaryKey: false,
91
- binding: false,
92
- defaultValue: null
93
- },
94
- {
95
- name: "taskTitle",
96
- type: "string",
97
- required: false,
98
- hidden: false,
99
- isPrimaryKey: false,
100
- binding: false,
101
- defaultValue: null
102
- }
103
- ],
104
- inputPattern: "mergedBody",
105
- inputName: "HitlTaskArguments",
106
- inputTarget: "bodyField",
107
- outputSource: null,
108
- outputType: "Actions.HITL",
109
- outputName: "Process response",
110
- useRelativeSource: true,
111
- bindingPattern: "none",
112
- requiresDiscovery: true,
113
- isDynamic: true,
114
- xmlTemplate: `<bpmn:UserTask id="{id}" name="{name}">
115
- <bpmn:extensionElements>
116
- <uipath:activity version="v1">
117
- <uipath:type value="Actions.HITL" version="v1" />
118
- <uipath:context>
119
- <uipath:input name="appId" value="{appId}" />
120
- <uipath:input name="appVersion" value="{appVersion}" />
121
- <uipath:input name="actions" value="{actions}" />
122
- <uipath:input name="key" value="{key}" />
123
- <uipath:input name="taskTitle" value="{taskTitle}" />
124
- </uipath:context>
125
- <uipath:input name="HitlTaskArguments" type="json" target="bodyField"><![CDATA[{}]]></uipath:input>
126
- <uipath:output name="Process response" type="Actions.HITL" var="{varId}" />
127
- </uipath:activity>
128
- </bpmn:extensionElements>
129
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
130
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
131
- </bpmn:UserTask>`,
132
- discoveryNotes: "Uses getSupportedHumanTasks(search, systemName) to list available action app tasks",
133
- contextFieldNotes: "Note: 'folderKey' field in design schema has name='key' (the actual XML context input name)"
134
- },
135
- "Orchestrator.StartJob": {
136
- extensionType: "Orchestrator.StartJob",
137
- label: "Start and wait for RPA workflow",
138
- bpmnElement: "bpmn:ServiceTask",
139
- placements: {
140
- activity: {
141
- type: "bpmn:ServiceTask"
142
- }
143
- },
144
- extensionTag: "uipath:activity",
145
- contextFields: [
146
- {
147
- name: "releaseKey",
148
- displayName: "Process",
149
- type: "string",
150
- required: false,
151
- hidden: true,
152
- isPrimaryKey: false,
153
- binding: false,
154
- defaultValue: null,
155
- bindingInfo: {
156
- resource: "process",
157
- resourceKeyPattern: "${metadata.key}",
158
- propertyAttribute: "Key"
159
- }
160
- },
161
- {
162
- name: "folderId",
163
- type: "string",
164
- required: false,
165
- hidden: true,
166
- isPrimaryKey: false,
167
- binding: false,
168
- defaultValue: null
169
- },
170
- {
171
- name: "folderPath",
172
- type: "string",
173
- required: false,
174
- hidden: true,
175
- isPrimaryKey: false,
176
- binding: false,
177
- defaultValue: null
178
- },
179
- {
180
- name: "name",
181
- type: "string",
182
- required: false,
183
- hidden: true,
184
- isPrimaryKey: false,
185
- binding: false,
186
- defaultValue: null
187
- }
188
- ],
189
- inputPattern: "mergedBody",
190
- inputName: "JobArguments",
191
- inputTarget: "bodyField",
192
- outputSource: null,
193
- outputType: "Orchestrator.RunJob",
194
- outputName: "Process response",
195
- useRelativeSource: true,
196
- bindingPattern: "process",
197
- bindingInfo: {
198
- resource: "process",
199
- resourceKeyPattern: "${metadata.key}",
200
- propertyAttribute: "Key",
201
- contextField: "releaseKey"
202
- },
203
- requiresDiscovery: true,
204
- isDynamic: true,
205
- xmlTemplate: `<bpmn:ServiceTask id="{id}" name="{name}">
206
- <bpmn:extensionElements>
207
- <uipath:activity version="v1">
208
- <uipath:type value="Orchestrator.StartJob" version="v1" />
209
- <uipath:context>
210
- <uipath:input name="releaseKey" value="{releaseKey}" />
211
- <uipath:input name="folderId" value="{folderId}" />
212
- <uipath:input name="folderPath" value="{folderPath}" />
213
- <uipath:input name="name" value="{name}" />
214
- </uipath:context>
215
- <uipath:input name="JobArguments" type="json" target="bodyField"><![CDATA[{}]]></uipath:input>
216
- <uipath:output name="Process response" type="Orchestrator.RunJob" var="{varId}" />
217
- </uipath:activity>
218
- </bpmn:extensionElements>
219
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
220
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
221
- </bpmn:ServiceTask>`,
222
- discoveryNotes: "Uses getSupportedOrchestratorTasks('process', search) to list available processes"
223
- },
224
- "Orchestrator.StartAgentJob": {
225
- extensionType: "Orchestrator.StartAgentJob",
226
- label: "Start and wait for agent",
227
- bpmnElement: "bpmn:ServiceTask",
228
- placements: {
229
- activity: {
230
- type: "bpmn:ServiceTask"
231
- }
232
- },
233
- extensionTag: "uipath:activity",
234
- contextFields: [
235
- {
236
- name: "name",
237
- displayName: "Agent",
238
- type: "string",
239
- required: true,
240
- hidden: true,
241
- isPrimaryKey: false,
242
- binding: true,
243
- defaultValue: null,
244
- bindingInfo: {
245
- resource: "process",
246
- resourceKeyPattern: "${metadata.key}",
247
- propertyAttribute: "name"
248
- }
249
- },
250
- {
251
- name: "folderPath",
252
- type: "string",
253
- required: true,
254
- hidden: true,
255
- isPrimaryKey: false,
256
- binding: true,
257
- defaultValue: null,
258
- bindingInfo: {
259
- resource: "process",
260
- resourceKeyPattern: "${metadata.key}",
261
- propertyAttribute: "folderPath"
262
- }
263
- }
264
- ],
265
- inputPattern: "mergedBody",
266
- inputName: "JobArguments",
267
- inputTarget: "bodyField",
268
- outputSource: null,
269
- outputType: "Orchestrator.RunJob",
270
- outputName: "Process response",
271
- useRelativeSource: true,
272
- bindingPattern: "process",
273
- bindingInfo: {
274
- resource: "process",
275
- resourceKeyPattern: "${metadata.key}",
276
- propertyAttribute: "name",
277
- contextField: "name"
278
- },
279
- requiresDiscovery: true,
280
- isDynamic: true,
281
- xmlTemplate: `<bpmn:ServiceTask id="{id}" name="{name}">
282
- <uipath:activity type="Orchestrator.StartAgentJob" version="v1">
283
- <uipath:context>
284
- <uipath:input name="name" value="=bindings.{nameBindingId}" />
285
- <uipath:input name="folderPath" value="=bindings.{folderPathBindingId}" />
286
- </uipath:context>
287
- <uipath:input name="JobArguments" type="json" target="bodyField"><![CDATA[{}]]></uipath:input>
288
- <uipath:output name="Process response" type="Orchestrator.RunJob" var="{varId}" />
289
- </uipath:activity>
290
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
291
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
292
- </bpmn:ServiceTask>`,
293
- discoveryNotes: "Uses getSupportedOrchestratorTasks('agent', search) to list available agents"
294
- },
295
- "Orchestrator.BusinessRules": {
296
- extensionType: "Orchestrator.BusinessRules",
297
- label: "Execute business rule [Preview]",
298
- bpmnElement: "bpmn:BusinessRuleTask",
299
- placements: {
300
- activity: {
301
- type: "bpmn:BusinessRuleTask"
302
- }
303
- },
304
- extensionTag: "uipath:activity",
305
- contextFields: [
306
- {
307
- name: "releaseKey",
308
- displayName: "Process",
309
- type: "string",
310
- required: false,
311
- hidden: true,
312
- isPrimaryKey: false,
313
- binding: false,
314
- defaultValue: null,
315
- bindingInfo: {
316
- resource: "process",
317
- resourceKeyPattern: "${metadata.key}",
318
- propertyAttribute: "Key"
319
- }
320
- },
321
- {
322
- name: "folderId",
323
- type: "string",
324
- required: false,
325
- hidden: true,
326
- isPrimaryKey: false,
327
- binding: false,
328
- defaultValue: null
329
- },
330
- {
331
- name: "folderPath",
332
- type: "string",
333
- required: false,
334
- hidden: true,
335
- isPrimaryKey: false,
336
- binding: false,
337
- defaultValue: null
338
- },
339
- {
340
- name: "name",
341
- type: "string",
342
- required: false,
343
- hidden: true,
344
- isPrimaryKey: false,
345
- binding: false,
346
- defaultValue: null
347
- }
348
- ],
349
- inputPattern: "mergedBody",
350
- inputName: "JobArguments",
351
- inputTarget: "bodyField",
352
- outputSource: null,
353
- outputType: "Orchestrator.BusinessRules",
354
- outputName: "Execute business rule [Preview]",
355
- useRelativeSource: true,
356
- bindingPattern: "businessRule",
357
- bindingInfo: {
358
- resource: "process",
359
- resourceKeyPattern: "${metadata.key}",
360
- propertyAttribute: "Key",
361
- contextField: "releaseKey"
362
- },
363
- requiresDiscovery: true,
364
- isDynamic: true,
365
- xmlTemplate: `<bpmn:BusinessRuleTask id="{id}" name="{name}">
366
- <bpmn:extensionElements>
367
- <uipath:activity version="v1">
368
- <uipath:type value="Orchestrator.BusinessRules" version="v1" />
369
- <uipath:context>
370
- <uipath:input name="releaseKey" value="{releaseKey}" />
371
- <uipath:input name="folderId" value="{folderId}" />
372
- <uipath:input name="folderPath" value="{folderPath}" />
373
- <uipath:input name="name" value="{name}" />
374
- </uipath:context>
375
- <uipath:input name="JobArguments" type="json" target="bodyField"><![CDATA[{}]]></uipath:input>
376
- <uipath:output name="Execute business rule [Preview]" type="Orchestrator.BusinessRules" var="{varId}" />
377
- </uipath:activity>
378
- </bpmn:extensionElements>
379
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
380
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
381
- </bpmn:BusinessRuleTask>`,
382
- discoveryNotes: "Uses getOrchestratorBusinessRules() to list available business rules"
383
- },
384
- "Intsvc.ActivityExecution": {
385
- extensionType: "Intsvc.ActivityExecution",
386
- label: "Execute connector activity",
387
- bpmnElement: "bpmn:SendTask",
388
- placements: {
389
- activity: {
390
- type: "bpmn:SendTask"
391
- },
392
- intermediateEvent: {
393
- type: "bpmn:IntermediateThrowEvent",
394
- eventDefinition: {
395
- type: "bpmn:MessageEventDefinition"
396
- }
397
- },
398
- endEvent: {
399
- type: "bpmn:EndEvent",
400
- eventDefinition: {
401
- type: "bpmn:MessageEventDefinition"
402
- }
403
- }
404
- },
405
- extensionTag: "uipath:activity",
406
- contextFields: [
407
- {
408
- name: "activityConfigurationVersion",
409
- displayName: "Activity configuration version",
410
- type: "string",
411
- required: false,
412
- hidden: true,
413
- isPrimaryKey: false,
414
- binding: false,
415
- defaultValue: "v1",
416
- enum: [
417
- "v1"
418
- ],
419
- description: "Marks the Integration Service activity format used by this template"
420
- },
421
- {
422
- name: "connectorKey",
423
- displayName: "Connector key",
424
- type: "string",
425
- required: true,
426
- hidden: true,
427
- isPrimaryKey: false,
428
- binding: false,
429
- defaultValue: null
430
- },
431
- {
432
- name: "connection",
433
- displayName: "Connection",
434
- type: "string",
435
- required: false,
436
- hidden: true,
437
- isPrimaryKey: false,
438
- binding: true,
439
- defaultValue: null,
440
- bindingInfo: {
441
- resource: "Connection",
442
- resourceKeyPattern: "${resourceKey}",
443
- propertyAttribute: "ConnectionId"
444
- }
445
- },
446
- {
447
- name: "folderKey",
448
- displayName: "Folder key",
449
- type: "string",
450
- required: false,
451
- hidden: true,
452
- isPrimaryKey: false,
453
- binding: true,
454
- defaultValue: null,
455
- bindingInfo: {
456
- resource: "Connection",
457
- resourceKeyPattern: "${resourceKey}",
458
- propertyAttribute: "folderKey"
459
- }
460
- },
461
- {
462
- name: "operation",
463
- displayName: "Operation",
464
- type: "string",
465
- required: true,
466
- hidden: true,
467
- isPrimaryKey: true,
468
- binding: false,
469
- defaultValue: null,
470
- description: "Activity catalog Name used as the runtime operation"
471
- },
472
- {
473
- name: "objectName",
474
- displayName: "Object name",
475
- type: "string",
476
- required: true,
477
- hidden: true,
478
- isPrimaryKey: false,
479
- binding: false,
480
- defaultValue: null,
481
- description: "Activity catalog ObjectName"
482
- },
483
- {
484
- name: "method",
485
- displayName: "Method",
486
- type: "string",
487
- required: true,
488
- hidden: true,
489
- isPrimaryKey: false,
490
- binding: false,
491
- defaultValue: null,
492
- description: "Activity catalog MethodName"
493
- },
494
- {
495
- name: "path",
496
- displayName: "Path",
497
- type: "string",
498
- required: true,
499
- hidden: true,
500
- isPrimaryKey: false,
501
- binding: false,
502
- defaultValue: null,
503
- description: "Request path returned by resource metadata"
504
- },
505
- {
506
- name: "metadata",
507
- displayName: "Metadata",
508
- type: "json",
509
- required: false,
510
- hidden: true,
511
- isPrimaryKey: false,
512
- binding: false,
513
- defaultValue: {},
514
- description: "Optional activity metadata"
515
- }
516
- ],
517
- inputFields: [],
518
- inputPattern: "separateInputs",
519
- inputName: "body",
520
- inputTarget: "body",
521
- outputSource: "=response",
522
- outputType: "jsonSchema",
523
- outputName: "response",
524
- useRelativeSource: false,
525
- bindingPattern: "connection",
526
- requiresDiscovery: true,
527
- isDynamic: true,
528
- xmlTemplate: `<bpmn:sendTask id="{id}" name="{name}">
529
- <bpmn:extensionElements>
530
- <uipath:activity version="v1">
531
- <uipath:type value="Intsvc.ActivityExecution" version="v1" />
532
- <uipath:context>
533
- <uipath:input name="connectorKey" type="string" value="{connectorKey}" />
534
- <uipath:input name="connection" type="string" value="=bindings.{connectionBindingId}" />
535
- <uipath:input name="folderKey" type="string" value="=bindings.{folderBindingId}" />
536
- <uipath:input name="operation" type="string" value="{operation}" />
537
- <uipath:input name="objectName" type="string" value="{objectName}" />
538
- <uipath:input name="method" type="string" value="{method}" />
539
- <uipath:input name="path" type="string" value="{path}" />
540
- <uipath:input name="activityConfigurationVersion" type="string" value="v1" />
541
- <uipath:input name="metadata" type="json"><![CDATA[{}]]></uipath:input>
542
- </uipath:context>
543
- <uipath:output name="response" type="jsonSchema" source="=response" var="{varId}" />
544
- </uipath:activity>
545
- </bpmn:extensionElements>
546
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
547
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
548
- </bpmn:sendTask>`,
549
- discoveryNotes: "Use `uip is activities list <connector-key> --output json` to select an activity. Set operation from Name, then describe ObjectName to get its current path, parameters, and fields.",
550
- inputNotes: "Add each request field from the selected operation as its own uipath:input. Keep the field's type and target: path, query, body, or file.",
551
- contextFieldNotes: "connection points to a root binding for a Connection resource. When folder scoping is required, folderKey points to a second binding for the same resourceKey. Use propertyAttribute ConnectionId for connection and folderKey for folderKey. Omit folderKey when the selected activity has no folder scoping, and omit both fields only when it does not use a connection.",
552
- extensionTagNotes: "In isExecution array, NOT in isEvents array, so uses uipath:activity"
553
- },
554
- "Intsvc.HttpExecution": {
555
- extensionType: "Intsvc.HttpExecution",
556
- label: "Execute HTTP request (Legacy)",
557
- bpmnElement: "bpmn:SendTask",
558
- placements: {
559
- activity: {
560
- type: "bpmn:SendTask"
561
- }
562
- },
563
- extensionTag: "uipath:activity",
564
- contextFields: [
565
- {
566
- name: "mode",
567
- displayName: "Mode",
568
- type: "string",
569
- required: true,
570
- hidden: true,
571
- isPrimaryKey: false,
572
- binding: false,
573
- defaultValue: "manual"
574
- },
575
- {
576
- name: "method",
577
- displayName: "HTTP Method",
578
- type: "string",
579
- required: true,
580
- hidden: false,
581
- isPrimaryKey: false,
582
- binding: false,
583
- defaultValue: "GET"
584
- },
585
- {
586
- name: "url",
587
- displayName: "URL",
588
- type: "string",
589
- required: true,
590
- hidden: false,
591
- isPrimaryKey: false,
592
- binding: true,
593
- defaultValue: ""
594
- },
595
- {
596
- name: "headers",
597
- displayName: "Headers",
598
- type: "json",
599
- required: false,
600
- hidden: false,
601
- isPrimaryKey: false,
602
- binding: true,
603
- defaultValue: "{}"
604
- },
605
- {
606
- name: "parameters",
607
- displayName: "Query Parameters",
608
- type: "json",
609
- required: false,
610
- hidden: false,
611
- isPrimaryKey: false,
612
- binding: true,
613
- defaultValue: "{}"
614
- },
615
- {
616
- name: "body",
617
- displayName: "Request Body",
618
- type: "json",
619
- required: false,
620
- hidden: false,
621
- isPrimaryKey: false,
622
- binding: true,
623
- defaultValue: "null"
624
- }
625
- ],
626
- inputPattern: "none",
627
- outputSource: "=response",
628
- outputType: "jsonSchema",
629
- outputName: "response",
630
- useRelativeSource: false,
631
- bindingPattern: "none",
632
- requiresDiscovery: false,
633
- isDynamic: false,
634
- xmlTemplate: `<bpmn:SendTask id="{id}" name="{name}">
635
- <bpmn:extensionElements>
636
- <uipath:activity version="v1">
637
- <uipath:type value="Intsvc.HttpExecution" version="v1" />
638
- <uipath:context>
639
- <uipath:input name="mode" value="manual" />
640
- <uipath:input name="method" value="GET" />
641
- <uipath:input name="url" value="=bindings.{bindingId}" />
642
- <uipath:input name="headers" value="=bindings.{bindingId}" />
643
- <uipath:input name="parameters" value="=bindings.{bindingId}" />
644
- <uipath:input name="body" value="=bindings.{bindingId}" />
645
- </uipath:context>
646
- <uipath:output name="response" type="jsonSchema" source="=response" var="{varId}" />
647
- </uipath:activity>
648
- </bpmn:extensionElements>
649
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
650
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
651
- </bpmn:SendTask>`,
652
- inputNotes: "No jsonBody in design schema input section; all configuration is in context fields"
653
- },
654
- "Intsvc.UnifiedHttpRequest": {
655
- extensionType: "Intsvc.UnifiedHttpRequest",
656
- label: "Execute HTTP request",
657
- bpmnElement: "bpmn:SendTask",
658
- placements: {
659
- activity: {
660
- type: "bpmn:SendTask"
661
- }
662
- },
663
- extensionTag: "uipath:activity",
664
- contextFields: [
665
- {
666
- name: "mode",
667
- displayName: "Mode",
668
- type: "string",
669
- required: true,
670
- hidden: true,
671
- isPrimaryKey: false,
672
- binding: false,
673
- defaultValue: "manual"
674
- },
675
- {
676
- name: "method",
677
- displayName: "HTTP Method",
678
- type: "string",
679
- required: true,
680
- hidden: false,
681
- isPrimaryKey: false,
682
- binding: false,
683
- defaultValue: "GET"
684
- },
685
- {
686
- name: "url",
687
- displayName: "URL",
688
- type: "string",
689
- required: true,
690
- hidden: false,
691
- isPrimaryKey: false,
692
- binding: true,
693
- defaultValue: ""
694
- },
695
- {
696
- name: "headers",
697
- displayName: "Headers",
698
- type: "json",
699
- required: false,
700
- hidden: false,
701
- isPrimaryKey: false,
702
- binding: true,
703
- defaultValue: "{}"
704
- },
705
- {
706
- name: "parameters",
707
- displayName: "Query Parameters",
708
- type: "json",
709
- required: false,
710
- hidden: false,
711
- isPrimaryKey: false,
712
- binding: true,
713
- defaultValue: "{}"
714
- },
715
- {
716
- name: "body",
717
- displayName: "Request Body",
718
- type: "json",
719
- required: false,
720
- hidden: false,
721
- isPrimaryKey: false,
722
- binding: true,
723
- defaultValue: "null"
724
- }
725
- ],
726
- inputPattern: "separateInputs",
727
- outputSource: "=response",
728
- outputType: "jsonSchema",
729
- outputName: "response",
730
- useRelativeSource: false,
731
- bindingPattern: "none",
732
- requiresDiscovery: false,
733
- isDynamic: false,
734
- designSchemaSharedWith: "Intsvc.HttpExecution",
735
- xmlTemplate: `<bpmn:SendTask id="{id}" name="{name}">
736
- <bpmn:extensionElements>
737
- <uipath:activity version="v1">
738
- <uipath:type value="Intsvc.UnifiedHttpRequest" version="v1" />
739
- <uipath:context>
740
- <uipath:input name="mode" value="manual" />
741
- <uipath:input name="method" value="GET" />
742
- <uipath:input name="url" value="=bindings.{bindingId}" />
743
- <uipath:input name="headers" value="=bindings.{bindingId}" />
744
- <uipath:input name="parameters" value="=bindings.{bindingId}" />
745
- <uipath:input name="body" value="=bindings.{bindingId}" />
746
- </uipath:context>
747
- <uipath:output name="response" type="jsonSchema" source="=response" var="{varId}" />
748
- </uipath:activity>
749
- </bpmn:extensionElements>
750
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
751
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
752
- </bpmn:SendTask>`,
753
- inputNotes: "In the isExecution array. Despite the design schema having no jsonBody, inputs are managed by the IS connector framework and serialized as separate <uipath:input> elements. The design schema context fields (mode, method, url, headers, parameters, body) are used for the HttpRequestV2Properties panel.",
754
- contextFieldNotes: "Context fields above come from the legacy design schema (shared with Intsvc.HttpExecution). In the FPS ImplementationSection, this type is routed through IntsvcActivityProperties (IS connector framework), NOT HttpRequestProperties. The IS connector auto-initializes with HTTP_ACTIVITY_CONFIG and manages context dynamically. When used via the uipath.http-request shortcut node, it uses HttpRequestV2Properties which manages these context fields directly.",
755
- extensionTagNotes: "In isExecution array, uses uipath:activity. Shares design schema with Intsvc.HttpExecution but uses IS connector framework at runtime."
756
- },
757
- "Intsvc.WaitForEvent": {
758
- extensionType: "Intsvc.WaitForEvent",
759
- label: "Wait for connector event",
760
- bpmnElement: "bpmn:ReceiveTask",
761
- placements: {
762
- activity: {
763
- type: "bpmn:ReceiveTask"
764
- },
765
- intermediateEvent: {
766
- type: "bpmn:IntermediateCatchEvent",
767
- eventDefinition: {
768
- type: "bpmn:MessageEventDefinition"
769
- }
770
- },
771
- boundaryEvent: {
772
- type: "bpmn:BoundaryEvent",
773
- eventDefinition: {
774
- type: "bpmn:MessageEventDefinition"
775
- }
776
- }
777
- },
778
- extensionTag: "uipath:event",
779
- contextFields: [],
780
- inputPattern: "separateInputs",
781
- outputSource: ".",
782
- outputType: "custom",
783
- outputName: "result",
784
- useRelativeSource: false,
785
- bindingPattern: "connection",
786
- requiresDiscovery: true,
787
- isDynamic: false,
788
- xmlTemplate: `<bpmn:ReceiveTask id="{id}" name="{name}">
789
- <bpmn:extensionElements>
790
- <uipath:event version="v1">
791
- <uipath:type value="Intsvc.WaitForEvent" version="v1" />
792
- <uipath:context>
793
- <uipath:input name="connectorKey" type="string" value="{connectorKey}" />
794
- <uipath:input name="connectionId" type="string" value="=bindings.{connectionBindingId}" />
795
- <uipath:input name="folderId" type="string" value="{folderId}" />
796
- <uipath:input name="folderPath" type="string" value="{folderPath}" />
797
- <uipath:input name="folderKey" type="string" value="{folderKey}" />
798
- <uipath:input name="operation" type="string" value="{operation}" />
799
- <uipath:input name="objectName" type="string" value="{objectName}" />
800
- </uipath:context>
801
- <uipath:output name="result" type="custom" source="." var="{varId}" />
802
- </uipath:event>
803
- </bpmn:extensionElements>
804
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
805
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
806
- </bpmn:ReceiveTask>`,
807
- discoveryNotes: "Uses getConnectorConnections(connectorKey) to list available connections",
808
- inputNotes: "isSplitInputs=false; inputs are defined in input.fields (not jsonBody). Sent as separate <uipath:input> elements.",
809
- contextFieldNotes: "Context fields are empty in design schema; all field definitions are in inputFields below",
810
- extensionTagNotes: "In isEvents array, uses uipath:event",
811
- inputFields: [
812
- {
813
- name: "connectionId",
814
- displayName: "Connection ID",
815
- type: "string",
816
- required: true,
817
- hidden: false,
818
- isPrimaryKey: false,
819
- binding: true,
820
- defaultValue: null,
821
- description: "Connection ID for the IS connector (bindable)",
822
- bindingInfo: {
823
- resource: "Connection",
824
- resourceKeyPattern: "${resourceKey}",
825
- propertyAttribute: "ConnectionId"
826
- }
827
- },
828
- {
829
- name: "connectorKey",
830
- displayName: "Connector key",
831
- type: "string",
832
- required: true,
833
- hidden: false,
834
- isPrimaryKey: false,
835
- binding: false,
836
- defaultValue: null,
837
- description: "Integration Service connector identifier"
838
- },
839
- {
840
- name: "folderId",
841
- displayName: "Folder ID",
842
- type: "string",
843
- required: true,
844
- hidden: false,
845
- isPrimaryKey: false,
846
- binding: false,
847
- defaultValue: null,
848
- description: "Folder ID for the connector connection"
849
- },
850
- {
851
- name: "folderPath",
852
- displayName: "Folder path",
853
- type: "string",
854
- required: true,
855
- hidden: false,
856
- isPrimaryKey: false,
857
- binding: false,
858
- defaultValue: null,
859
- description: "Folder path for the connector connection"
860
- },
861
- {
862
- name: "folderKey",
863
- displayName: "Folder key",
864
- type: "string",
865
- required: true,
866
- hidden: false,
867
- isPrimaryKey: false,
868
- binding: false,
869
- defaultValue: null,
870
- description: "Folder key for the connector connection"
871
- },
872
- {
873
- name: "operation",
874
- displayName: "Operation",
875
- type: "string",
876
- required: true,
877
- hidden: true,
878
- isPrimaryKey: true,
879
- binding: false,
880
- defaultValue: null,
881
- description: "Connector event operation to wait for"
882
- },
883
- {
884
- name: "objectName",
885
- displayName: "Object name",
886
- type: "string",
887
- required: true,
888
- hidden: true,
889
- isPrimaryKey: false,
890
- binding: false,
891
- defaultValue: null,
892
- description: "Object name associated with the event trigger"
893
- },
894
- {
895
- name: "filter",
896
- displayName: "Filter",
897
- type: "object",
898
- required: false,
899
- hidden: false,
900
- isPrimaryKey: false,
901
- binding: false,
902
- defaultValue: {},
903
- description: "Filter criteria for the event"
904
- },
905
- {
906
- name: "parameters",
907
- displayName: "Parameters",
908
- type: "object",
909
- required: false,
910
- hidden: false,
911
- isPrimaryKey: false,
912
- binding: false,
913
- defaultValue: {},
914
- description: "Additional parameters for the event"
915
- }
916
- ]
917
- },
918
- "Intsvc.EventTrigger": {
919
- extensionType: "Intsvc.EventTrigger",
920
- label: "Wait for connector event (trigger)",
921
- bpmnElement: "bpmn:StartEvent",
922
- placements: {
923
- startEvent: {
924
- type: "bpmn:StartEvent",
925
- eventDefinition: {
926
- type: "bpmn:MessageEventDefinition"
927
- }
928
- }
929
- },
930
- extensionTag: "uipath:event",
931
- contextFields: [],
932
- inputPattern: "separateInputs",
933
- outputSource: ".",
934
- outputType: "custom",
935
- outputName: "result",
936
- useRelativeSource: false,
937
- bindingPattern: "connection",
938
- requiresDiscovery: true,
939
- isDynamic: false,
940
- xmlTemplate: `<bpmn:StartEvent id="{id}" name="{name}">
941
- <bpmn:extensionElements>
942
- <uipath:event version="v1">
943
- <uipath:type value="Intsvc.EventTrigger" version="v1" />
944
- <uipath:context>
945
- <uipath:input name="connectorKey" type="string" value="{connectorKey}" />
946
- <uipath:input name="connectionId" type="string" value="=bindings.{connectionBindingId}" />
947
- <uipath:input name="folderId" type="string" value="{folderId}" />
948
- <uipath:input name="folderPath" type="string" value="{folderPath}" />
949
- <uipath:input name="folderKey" type="string" value="{folderKey}" />
950
- <uipath:input name="operation" type="string" value="{operation}" />
951
- <uipath:input name="objectName" type="string" value="{objectName}" />
952
- </uipath:context>
953
- <uipath:output name="result" type="custom" source="." var="{varId}" />
954
- </uipath:event>
955
- </bpmn:extensionElements>
956
- <bpmn:messageEventDefinition />
957
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
958
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
959
- </bpmn:StartEvent>`,
960
- discoveryNotes: "Uses getConnectorConnections(connectorKey) to list available connections",
961
- inputNotes: "isSplitInputs=false; inputs defined in input.fields. Sent as separate <uipath:input> elements.",
962
- contextFieldNotes: "Context fields are empty in design schema; all field definitions are in inputFields below",
963
- extensionTagNotes: "In isEvents array, uses uipath:event",
964
- inputFields: [
965
- {
966
- name: "connectionId",
967
- displayName: "Connection ID",
968
- type: "string",
969
- required: true,
970
- hidden: false,
971
- isPrimaryKey: false,
972
- binding: true,
973
- defaultValue: null,
974
- description: "Connection ID for the IS connector (bindable)",
975
- bindingInfo: {
976
- resource: "Connection",
977
- resourceKeyPattern: "${resourceKey}",
978
- propertyAttribute: "ConnectionId"
979
- }
980
- },
981
- {
982
- name: "connectorKey",
983
- displayName: "Connector key",
984
- type: "string",
985
- required: true,
986
- hidden: false,
987
- isPrimaryKey: false,
988
- binding: false,
989
- defaultValue: null,
990
- description: "Integration Service connector identifier"
991
- },
992
- {
993
- name: "folderId",
994
- displayName: "Folder ID",
995
- type: "string",
996
- required: true,
997
- hidden: false,
998
- isPrimaryKey: false,
999
- binding: false,
1000
- defaultValue: null,
1001
- description: "Folder ID for the connector connection"
1002
- },
1003
- {
1004
- name: "folderPath",
1005
- displayName: "Folder path",
1006
- type: "string",
1007
- required: true,
1008
- hidden: false,
1009
- isPrimaryKey: false,
1010
- binding: false,
1011
- defaultValue: null,
1012
- description: "Folder path for the connector connection"
1013
- },
1014
- {
1015
- name: "folderKey",
1016
- displayName: "Folder key",
1017
- type: "string",
1018
- required: true,
1019
- hidden: false,
1020
- isPrimaryKey: false,
1021
- binding: false,
1022
- defaultValue: null,
1023
- description: "Folder key for the connector connection"
1024
- },
1025
- {
1026
- name: "operation",
1027
- displayName: "Operation",
1028
- type: "string",
1029
- required: true,
1030
- hidden: true,
1031
- isPrimaryKey: true,
1032
- binding: false,
1033
- defaultValue: null,
1034
- description: "Connector event operation to trigger on"
1035
- },
1036
- {
1037
- name: "objectName",
1038
- displayName: "Object name",
1039
- type: "string",
1040
- required: true,
1041
- hidden: true,
1042
- isPrimaryKey: false,
1043
- binding: false,
1044
- defaultValue: null,
1045
- description: "Object name associated with the event trigger"
1046
- },
1047
- {
1048
- name: "filter",
1049
- displayName: "Filter",
1050
- type: "object",
1051
- required: false,
1052
- hidden: false,
1053
- isPrimaryKey: false,
1054
- binding: false,
1055
- defaultValue: {},
1056
- description: "Filter criteria for the event trigger"
1057
- },
1058
- {
1059
- name: "parameters",
1060
- displayName: "Parameters",
1061
- type: "object",
1062
- required: false,
1063
- hidden: false,
1064
- isPrimaryKey: false,
1065
- binding: false,
1066
- defaultValue: {},
1067
- description: "Additional parameters for the event trigger"
1068
- }
1069
- ]
1070
- },
1071
- "Intsvc.AsyncExecution": {
1072
- extensionType: "Intsvc.AsyncExecution",
1073
- label: "Start and wait for external agent",
1074
- bpmnElement: "bpmn:ServiceTask",
1075
- placements: {
1076
- activity: {
1077
- type: "bpmn:ServiceTask"
1078
- }
1079
- },
1080
- extensionTag: "uipath:activity",
1081
- contextFields: [
1082
- {
1083
- name: "activity",
1084
- displayName: "Activity",
1085
- type: "string",
1086
- required: true,
1087
- hidden: false,
1088
- isPrimaryKey: true,
1089
- binding: false,
1090
- defaultValue: null
1091
- },
1092
- {
1093
- name: "connectorKey",
1094
- displayName: "Connector key",
1095
- type: "string",
1096
- required: false,
1097
- hidden: true,
1098
- isPrimaryKey: false,
1099
- binding: false,
1100
- defaultValue: null
1101
- },
1102
- {
1103
- name: "connection",
1104
- displayName: "Connection",
1105
- type: "string",
1106
- required: false,
1107
- hidden: true,
1108
- isPrimaryKey: false,
1109
- binding: true,
1110
- defaultValue: null
1111
- },
1112
- {
1113
- name: "folderKey",
1114
- displayName: "Folder key",
1115
- type: "string",
1116
- required: false,
1117
- hidden: true,
1118
- isPrimaryKey: false,
1119
- binding: false,
1120
- defaultValue: null
1121
- },
1122
- {
1123
- name: "method",
1124
- displayName: "Method",
1125
- type: "string",
1126
- required: false,
1127
- hidden: true,
1128
- isPrimaryKey: false,
1129
- binding: false,
1130
- defaultValue: null
1131
- },
1132
- {
1133
- name: "path",
1134
- displayName: "Path",
1135
- type: "string",
1136
- required: false,
1137
- hidden: true,
1138
- isPrimaryKey: false,
1139
- binding: false,
1140
- defaultValue: null
1141
- }
1142
- ],
1143
- inputPattern: "separateInputs",
1144
- inputName: "body",
1145
- inputTarget: "body",
1146
- outputSource: ".",
1147
- outputType: "custom",
1148
- outputName: "response",
1149
- useRelativeSource: false,
1150
- bindingPattern: "connection",
1151
- requiresDiscovery: true,
1152
- isDynamic: true,
1153
- xmlTemplate: `<bpmn:ServiceTask id="{id}" name="{name}">
1154
- <bpmn:extensionElements>
1155
- <uipath:activity version="v1">
1156
- <uipath:type value="Intsvc.AsyncExecution" version="v1" />
1157
- <uipath:context>
1158
- <uipath:input name="activity" value="{activity}" />
1159
- <uipath:input name="connectorKey" value="{connectorKey}" />
1160
- <uipath:input name="connection" value="=bindings.{bindingId}" />
1161
- <uipath:input name="folderKey" value="{folderKey}" />
1162
- <uipath:input name="method" value="{method}" />
1163
- <uipath:input name="path" value="{path}" />
1164
- </uipath:context>
1165
- <uipath:input name="body" type="json" target="body"><![CDATA[{}]]></uipath:input>
1166
- <uipath:output name="response" type="custom" source="." var="{varId}" />
1167
- </uipath:activity>
1168
- </bpmn:extensionElements>
1169
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
1170
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
1171
- </bpmn:ServiceTask>`,
1172
- discoveryNotes: "Uses getConnectorConnections(connectorKey) to list available connections",
1173
- inputNotes: "isSplitInputs=false in design schema; inputs are sent as separate <uipath:input> elements",
1174
- extensionTagNotes: "In isExecution array, uses uipath:activity"
1175
- },
1176
- "Intsvc.SyncAgentExecution": {
1177
- extensionType: "Intsvc.SyncAgentExecution",
1178
- label: "Start and wait for external agent",
1179
- bpmnElement: "bpmn:ServiceTask",
1180
- placements: {
1181
- activity: {
1182
- type: "bpmn:ServiceTask"
1183
- }
1184
- },
1185
- extensionTag: "uipath:activity",
1186
- contextFields: [
1187
- {
1188
- name: "activity",
1189
- displayName: "Activity",
1190
- type: "string",
1191
- required: true,
1192
- hidden: false,
1193
- isPrimaryKey: true,
1194
- binding: false,
1195
- defaultValue: null
1196
- },
1197
- {
1198
- name: "connectorKey",
1199
- displayName: "Connector key",
1200
- type: "string",
1201
- required: false,
1202
- hidden: true,
1203
- isPrimaryKey: false,
1204
- binding: false,
1205
- defaultValue: null
1206
- },
1207
- {
1208
- name: "connection",
1209
- displayName: "Connection",
1210
- type: "string",
1211
- required: false,
1212
- hidden: true,
1213
- isPrimaryKey: false,
1214
- binding: true,
1215
- defaultValue: null
1216
- },
1217
- {
1218
- name: "folderKey",
1219
- displayName: "Folder key",
1220
- type: "string",
1221
- required: false,
1222
- hidden: true,
1223
- isPrimaryKey: false,
1224
- binding: false,
1225
- defaultValue: null
1226
- },
1227
- {
1228
- name: "method",
1229
- displayName: "Method",
1230
- type: "string",
1231
- required: false,
1232
- hidden: true,
1233
- isPrimaryKey: false,
1234
- binding: false,
1235
- defaultValue: null
1236
- },
1237
- {
1238
- name: "path",
1239
- displayName: "Path",
1240
- type: "string",
1241
- required: false,
1242
- hidden: true,
1243
- isPrimaryKey: false,
1244
- binding: false,
1245
- defaultValue: null
1246
- }
1247
- ],
1248
- inputPattern: "separateInputs",
1249
- inputName: "body",
1250
- inputTarget: "body",
1251
- outputSource: ".",
1252
- outputType: "custom",
1253
- outputName: "response",
1254
- useRelativeSource: false,
1255
- bindingPattern: "connection",
1256
- requiresDiscovery: true,
1257
- isDynamic: true,
1258
- designSchemaSharedWith: "Intsvc.AsyncExecution",
1259
- xmlTemplate: `<bpmn:ServiceTask id="{id}" name="{name}">
1260
- <bpmn:extensionElements>
1261
- <uipath:activity version="v1">
1262
- <uipath:type value="Intsvc.SyncAgentExecution" version="v1" />
1263
- <uipath:context>
1264
- <uipath:input name="activity" value="{activity}" />
1265
- <uipath:input name="connectorKey" value="{connectorKey}" />
1266
- <uipath:input name="connection" value="=bindings.{bindingId}" />
1267
- <uipath:input name="folderKey" value="{folderKey}" />
1268
- <uipath:input name="method" value="{method}" />
1269
- <uipath:input name="path" value="{path}" />
1270
- </uipath:context>
1271
- <uipath:input name="body" type="json" target="body"><![CDATA[{}]]></uipath:input>
1272
- <uipath:output name="response" type="custom" source="." var="{varId}" />
1273
- </uipath:activity>
1274
- </bpmn:extensionElements>
1275
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
1276
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
1277
- </bpmn:ServiceTask>`,
1278
- discoveryNotes: "Uses getConnectorConnections(connectorKey) to list available connections",
1279
- extensionTagNotes: "In isExecution array, uses uipath:activity"
1280
- },
1281
- "Intsvc.AsyncAgentExecution": {
1282
- extensionType: "Intsvc.AsyncAgentExecution",
1283
- label: "Start and wait for external agent",
1284
- bpmnElement: "bpmn:ServiceTask",
1285
- placements: {
1286
- activity: {
1287
- type: "bpmn:ServiceTask"
1288
- }
1289
- },
1290
- extensionTag: "uipath:activity",
1291
- contextFields: [
1292
- {
1293
- name: "activity",
1294
- displayName: "Activity",
1295
- type: "string",
1296
- required: true,
1297
- hidden: false,
1298
- isPrimaryKey: true,
1299
- binding: false,
1300
- defaultValue: null
1301
- },
1302
- {
1303
- name: "connectorKey",
1304
- displayName: "Connector key",
1305
- type: "string",
1306
- required: false,
1307
- hidden: true,
1308
- isPrimaryKey: false,
1309
- binding: false,
1310
- defaultValue: null
1311
- },
1312
- {
1313
- name: "connection",
1314
- displayName: "Connection",
1315
- type: "string",
1316
- required: false,
1317
- hidden: true,
1318
- isPrimaryKey: false,
1319
- binding: true,
1320
- defaultValue: null
1321
- },
1322
- {
1323
- name: "folderKey",
1324
- displayName: "Folder key",
1325
- type: "string",
1326
- required: false,
1327
- hidden: true,
1328
- isPrimaryKey: false,
1329
- binding: false,
1330
- defaultValue: null
1331
- },
1332
- {
1333
- name: "method",
1334
- displayName: "Method",
1335
- type: "string",
1336
- required: false,
1337
- hidden: true,
1338
- isPrimaryKey: false,
1339
- binding: false,
1340
- defaultValue: null
1341
- },
1342
- {
1343
- name: "path",
1344
- displayName: "Path",
1345
- type: "string",
1346
- required: false,
1347
- hidden: true,
1348
- isPrimaryKey: false,
1349
- binding: false,
1350
- defaultValue: null
1351
- }
1352
- ],
1353
- inputPattern: "separateInputs",
1354
- inputName: "body",
1355
- inputTarget: "body",
1356
- outputSource: ".",
1357
- outputType: "custom",
1358
- outputName: "response",
1359
- useRelativeSource: false,
1360
- bindingPattern: "connection",
1361
- requiresDiscovery: true,
1362
- isDynamic: true,
1363
- designSchemaSharedWith: "Intsvc.AsyncExecution",
1364
- xmlTemplate: `<bpmn:ServiceTask id="{id}" name="{name}">
1365
- <bpmn:extensionElements>
1366
- <uipath:activity version="v1">
1367
- <uipath:type value="Intsvc.AsyncAgentExecution" version="v1" />
1368
- <uipath:context>
1369
- <uipath:input name="activity" value="{activity}" />
1370
- <uipath:input name="connectorKey" value="{connectorKey}" />
1371
- <uipath:input name="connection" value="=bindings.{bindingId}" />
1372
- <uipath:input name="folderKey" value="{folderKey}" />
1373
- <uipath:input name="method" value="{method}" />
1374
- <uipath:input name="path" value="{path}" />
1375
- </uipath:context>
1376
- <uipath:input name="body" type="json" target="body"><![CDATA[{}]]></uipath:input>
1377
- <uipath:output name="response" type="custom" source="." var="{varId}" />
1378
- </uipath:activity>
1379
- </bpmn:extensionElements>
1380
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
1381
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
1382
- </bpmn:ServiceTask>`,
1383
- discoveryNotes: "Uses getConnectorConnections(connectorKey) to list available connections",
1384
- extensionTagNotes: "In isExecution array, uses uipath:activity"
1385
- },
1386
- "Intsvc.SyncWorkflowExecution": {
1387
- extensionType: "Intsvc.SyncWorkflowExecution",
1388
- label: "Start and wait for external workflow",
1389
- bpmnElement: "bpmn:ServiceTask",
1390
- placements: {
1391
- activity: {
1392
- type: "bpmn:ServiceTask"
1393
- }
1394
- },
1395
- extensionTag: "uipath:activity",
1396
- contextFields: [
1397
- {
1398
- name: "activity",
1399
- displayName: "Activity",
1400
- type: "string",
1401
- required: true,
1402
- hidden: false,
1403
- isPrimaryKey: true,
1404
- binding: false,
1405
- defaultValue: null
1406
- },
1407
- {
1408
- name: "connectorKey",
1409
- displayName: "Connector key",
1410
- type: "string",
1411
- required: false,
1412
- hidden: true,
1413
- isPrimaryKey: false,
1414
- binding: false,
1415
- defaultValue: null
1416
- },
1417
- {
1418
- name: "connection",
1419
- displayName: "Connection",
1420
- type: "string",
1421
- required: false,
1422
- hidden: true,
1423
- isPrimaryKey: false,
1424
- binding: true,
1425
- defaultValue: null
1426
- },
1427
- {
1428
- name: "folderKey",
1429
- displayName: "Folder key",
1430
- type: "string",
1431
- required: false,
1432
- hidden: true,
1433
- isPrimaryKey: false,
1434
- binding: false,
1435
- defaultValue: null
1436
- },
1437
- {
1438
- name: "method",
1439
- displayName: "Method",
1440
- type: "string",
1441
- required: false,
1442
- hidden: true,
1443
- isPrimaryKey: false,
1444
- binding: false,
1445
- defaultValue: null
1446
- },
1447
- {
1448
- name: "path",
1449
- displayName: "Path",
1450
- type: "string",
1451
- required: false,
1452
- hidden: true,
1453
- isPrimaryKey: false,
1454
- binding: false,
1455
- defaultValue: null
1456
- }
1457
- ],
1458
- inputPattern: "separateInputs",
1459
- inputName: "body",
1460
- inputTarget: "body",
1461
- outputSource: ".",
1462
- outputType: "custom",
1463
- outputName: "response",
1464
- useRelativeSource: false,
1465
- bindingPattern: "connection",
1466
- requiresDiscovery: true,
1467
- isDynamic: true,
1468
- designSchemaSharedWith: "Intsvc.AsyncExecution",
1469
- xmlTemplate: `<bpmn:ServiceTask id="{id}" name="{name}">
1470
- <bpmn:extensionElements>
1471
- <uipath:activity version="v1">
1472
- <uipath:type value="Intsvc.SyncWorkflowExecution" version="v1" />
1473
- <uipath:context>
1474
- <uipath:input name="activity" value="{activity}" />
1475
- <uipath:input name="connectorKey" value="{connectorKey}" />
1476
- <uipath:input name="connection" value="=bindings.{bindingId}" />
1477
- <uipath:input name="folderKey" value="{folderKey}" />
1478
- <uipath:input name="method" value="{method}" />
1479
- <uipath:input name="path" value="{path}" />
1480
- </uipath:context>
1481
- <uipath:input name="body" type="json" target="body"><![CDATA[{}]]></uipath:input>
1482
- <uipath:output name="response" type="custom" source="." var="{varId}" />
1483
- </uipath:activity>
1484
- </bpmn:extensionElements>
1485
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
1486
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
1487
- </bpmn:ServiceTask>`,
1488
- discoveryNotes: "Uses getConnectorConnections(connectorKey) to list available connections",
1489
- extensionTagNotes: "In isExecution array, uses uipath:activity"
1490
- },
1491
- "Intsvc.AsyncWorkflowExecution": {
1492
- extensionType: "Intsvc.AsyncWorkflowExecution",
1493
- label: "Start and wait for external workflow",
1494
- bpmnElement: "bpmn:ServiceTask",
1495
- placements: {
1496
- activity: {
1497
- type: "bpmn:ServiceTask"
1498
- }
1499
- },
1500
- extensionTag: "uipath:activity",
1501
- contextFields: [
1502
- {
1503
- name: "activity",
1504
- displayName: "Activity",
1505
- type: "string",
1506
- required: true,
1507
- hidden: false,
1508
- isPrimaryKey: true,
1509
- binding: false,
1510
- defaultValue: null
1511
- },
1512
- {
1513
- name: "connectorKey",
1514
- displayName: "Connector key",
1515
- type: "string",
1516
- required: false,
1517
- hidden: true,
1518
- isPrimaryKey: false,
1519
- binding: false,
1520
- defaultValue: null
1521
- },
1522
- {
1523
- name: "connection",
1524
- displayName: "Connection",
1525
- type: "string",
1526
- required: false,
1527
- hidden: true,
1528
- isPrimaryKey: false,
1529
- binding: true,
1530
- defaultValue: null
1531
- },
1532
- {
1533
- name: "folderKey",
1534
- displayName: "Folder key",
1535
- type: "string",
1536
- required: false,
1537
- hidden: true,
1538
- isPrimaryKey: false,
1539
- binding: false,
1540
- defaultValue: null
1541
- },
1542
- {
1543
- name: "method",
1544
- displayName: "Method",
1545
- type: "string",
1546
- required: false,
1547
- hidden: true,
1548
- isPrimaryKey: false,
1549
- binding: false,
1550
- defaultValue: null
1551
- },
1552
- {
1553
- name: "path",
1554
- displayName: "Path",
1555
- type: "string",
1556
- required: false,
1557
- hidden: true,
1558
- isPrimaryKey: false,
1559
- binding: false,
1560
- defaultValue: null
1561
- }
1562
- ],
1563
- inputPattern: "separateInputs",
1564
- inputName: "body",
1565
- inputTarget: "body",
1566
- outputSource: ".",
1567
- outputType: "custom",
1568
- outputName: "response",
1569
- useRelativeSource: false,
1570
- bindingPattern: "connection",
1571
- requiresDiscovery: true,
1572
- isDynamic: true,
1573
- designSchemaSharedWith: "Intsvc.AsyncExecution",
1574
- xmlTemplate: `<bpmn:ServiceTask id="{id}" name="{name}">
1575
- <bpmn:extensionElements>
1576
- <uipath:activity version="v1">
1577
- <uipath:type value="Intsvc.AsyncWorkflowExecution" version="v1" />
1578
- <uipath:context>
1579
- <uipath:input name="activity" value="{activity}" />
1580
- <uipath:input name="connectorKey" value="{connectorKey}" />
1581
- <uipath:input name="connection" value="=bindings.{bindingId}" />
1582
- <uipath:input name="folderKey" value="{folderKey}" />
1583
- <uipath:input name="method" value="{method}" />
1584
- <uipath:input name="path" value="{path}" />
1585
- </uipath:context>
1586
- <uipath:input name="body" type="json" target="body"><![CDATA[{}]]></uipath:input>
1587
- <uipath:output name="response" type="custom" source="." var="{varId}" />
1588
- </uipath:activity>
1589
- </bpmn:extensionElements>
1590
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
1591
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
1592
- </bpmn:ServiceTask>`,
1593
- discoveryNotes: "Uses getConnectorConnections(connectorKey) to list available connections",
1594
- extensionTagNotes: "In isExecution array, uses uipath:activity"
1595
- },
1596
- "Orchestrator.ExecuteApiWorkflowAsync": {
1597
- extensionType: "Orchestrator.ExecuteApiWorkflowAsync",
1598
- label: "Start and wait for API workflow [Preview]",
1599
- bpmnElement: "bpmn:ServiceTask",
1600
- placements: {
1601
- activity: {
1602
- type: "bpmn:ServiceTask"
1603
- }
1604
- },
1605
- extensionTag: "uipath:activity",
1606
- contextFields: [
1607
- {
1608
- name: "releaseKey",
1609
- displayName: "Process",
1610
- type: "string",
1611
- required: false,
1612
- hidden: true,
1613
- isPrimaryKey: false,
1614
- binding: false,
1615
- defaultValue: null,
1616
- bindingInfo: {
1617
- resource: "process",
1618
- resourceKeyPattern: "${metadata.key}",
1619
- propertyAttribute: "Key"
1620
- }
1621
- },
1622
- {
1623
- name: "folderId",
1624
- type: "string",
1625
- required: false,
1626
- hidden: true,
1627
- isPrimaryKey: false,
1628
- binding: false,
1629
- defaultValue: null
1630
- },
1631
- {
1632
- name: "folderPath",
1633
- type: "string",
1634
- required: false,
1635
- hidden: true,
1636
- isPrimaryKey: false,
1637
- binding: false,
1638
- defaultValue: null
1639
- },
1640
- {
1641
- name: "name",
1642
- type: "string",
1643
- required: false,
1644
- hidden: true,
1645
- isPrimaryKey: false,
1646
- binding: false,
1647
- defaultValue: null
1648
- }
1649
- ],
1650
- inputPattern: "mergedBody",
1651
- inputName: "JobArguments",
1652
- inputTarget: "bodyField",
1653
- outputSource: null,
1654
- outputType: "Orchestrator.RunJob",
1655
- outputName: "Process response",
1656
- useRelativeSource: true,
1657
- bindingPattern: "process",
1658
- bindingInfo: {
1659
- resource: "process",
1660
- resourceKeyPattern: "${metadata.key}",
1661
- propertyAttribute: "Key",
1662
- contextField: "releaseKey"
1663
- },
1664
- requiresDiscovery: true,
1665
- isDynamic: true,
1666
- xmlTemplate: `<bpmn:ServiceTask id="{id}" name="{name}">
1667
- <bpmn:extensionElements>
1668
- <uipath:activity version="v1">
1669
- <uipath:type value="Orchestrator.ExecuteApiWorkflowAsync" version="v1" />
1670
- <uipath:context>
1671
- <uipath:input name="releaseKey" value="{releaseKey}" />
1672
- <uipath:input name="folderId" value="{folderId}" />
1673
- <uipath:input name="folderPath" value="{folderPath}" />
1674
- <uipath:input name="name" value="{name}" />
1675
- </uipath:context>
1676
- <uipath:input name="JobArguments" type="json" target="bodyField"><![CDATA[{}]]></uipath:input>
1677
- <uipath:output name="Process response" type="Orchestrator.RunJob" var="{varId}" />
1678
- </uipath:activity>
1679
- </bpmn:extensionElements>
1680
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
1681
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
1682
- </bpmn:ServiceTask>`,
1683
- discoveryNotes: "Uses getResourceCatalogProcesses('API', search) to list available API workflows"
1684
- },
1685
- "Orchestrator.CreateQueueItem": {
1686
- extensionType: "Orchestrator.CreateQueueItem",
1687
- label: "Create queue item",
1688
- bpmnElement: "bpmn:SendTask",
1689
- placements: {
1690
- activity: {
1691
- type: "bpmn:SendTask"
1692
- }
1693
- },
1694
- extensionTag: "uipath:activity",
1695
- contextFields: [
1696
- {
1697
- name: "queueName",
1698
- displayName: "Queue name",
1699
- type: "string",
1700
- required: false,
1701
- hidden: true,
1702
- isPrimaryKey: false,
1703
- binding: false,
1704
- defaultValue: null,
1705
- bindingInfo: {
1706
- resource: "queue",
1707
- resourceKeyPattern: "${metadata.key}",
1708
- propertyAttribute: "Key"
1709
- }
1710
- },
1711
- {
1712
- name: "folderId",
1713
- type: "string",
1714
- required: false,
1715
- hidden: true,
1716
- isPrimaryKey: false,
1717
- binding: false,
1718
- defaultValue: null
1719
- },
1720
- {
1721
- name: "folderPath",
1722
- type: "string",
1723
- required: false,
1724
- hidden: true,
1725
- isPrimaryKey: false,
1726
- binding: false,
1727
- defaultValue: null
1728
- }
1729
- ],
1730
- inputPattern: "mergedBody",
1731
- inputName: "ItemData",
1732
- inputTarget: "body",
1733
- outputSource: null,
1734
- outputType: "Orchestrator.CreateQueueItem",
1735
- outputName: "response",
1736
- useRelativeSource: true,
1737
- bindingPattern: "queue",
1738
- bindingInfo: {
1739
- resource: "queue",
1740
- resourceKeyPattern: "${metadata.key}",
1741
- propertyAttribute: "Key",
1742
- contextField: "queueName"
1743
- },
1744
- requiresDiscovery: true,
1745
- isDynamic: true,
1746
- xmlTemplate: `<bpmn:SendTask id="{id}" name="{name}">
1747
- <bpmn:extensionElements>
1748
- <uipath:activity version="v1">
1749
- <uipath:type value="Orchestrator.CreateQueueItem" version="v1" />
1750
- <uipath:context>
1751
- <uipath:input name="queueName" value="{queueName}" />
1752
- <uipath:input name="folderId" value="{folderId}" />
1753
- <uipath:input name="folderPath" value="{folderPath}" />
1754
- </uipath:context>
1755
- <uipath:input name="ItemData" type="json" target="body"><![CDATA[{}]]></uipath:input>
1756
- <uipath:output name="response" type="Orchestrator.CreateQueueItem" var="{varId}" />
1757
- </uipath:activity>
1758
- </bpmn:extensionElements>
1759
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
1760
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
1761
- </bpmn:SendTask>`,
1762
- discoveryNotes: "Uses getQueueDefinitions(serviceType, search) to list available queues"
1763
- },
1764
- "Orchestrator.CreateAndWaitForQueueItem": {
1765
- extensionType: "Orchestrator.CreateAndWaitForQueueItem",
1766
- label: "Create and wait for queue item",
1767
- bpmnElement: "bpmn:ServiceTask",
1768
- placements: {
1769
- activity: {
1770
- type: "bpmn:ServiceTask"
1771
- }
1772
- },
1773
- extensionTag: "uipath:activity",
1774
- contextFields: [
1775
- {
1776
- name: "queueName",
1777
- displayName: "Queue name",
1778
- type: "string",
1779
- required: false,
1780
- hidden: true,
1781
- isPrimaryKey: false,
1782
- binding: false,
1783
- defaultValue: null,
1784
- bindingInfo: {
1785
- resource: "queue",
1786
- resourceKeyPattern: "${metadata.key}",
1787
- propertyAttribute: "Key"
1788
- }
1789
- },
1790
- {
1791
- name: "folderId",
1792
- type: "string",
1793
- required: false,
1794
- hidden: true,
1795
- isPrimaryKey: false,
1796
- binding: false,
1797
- defaultValue: null
1798
- },
1799
- {
1800
- name: "folderPath",
1801
- type: "string",
1802
- required: false,
1803
- hidden: true,
1804
- isPrimaryKey: false,
1805
- binding: false,
1806
- defaultValue: null
1807
- }
1808
- ],
1809
- inputPattern: "mergedBody",
1810
- inputName: "ItemData",
1811
- inputTarget: "body",
1812
- outputSource: null,
1813
- outputType: "Orchestrator.CreateQueueItem",
1814
- outputName: "response",
1815
- useRelativeSource: true,
1816
- bindingPattern: "queue",
1817
- bindingInfo: {
1818
- resource: "queue",
1819
- resourceKeyPattern: "${metadata.key}",
1820
- propertyAttribute: "Key",
1821
- contextField: "queueName"
1822
- },
1823
- requiresDiscovery: true,
1824
- isDynamic: true,
1825
- designSchemaSharedWith: "Orchestrator.CreateQueueItem",
1826
- xmlTemplate: `<bpmn:ServiceTask id="{id}" name="{name}">
1827
- <bpmn:extensionElements>
1828
- <uipath:activity version="v1">
1829
- <uipath:type value="Orchestrator.CreateAndWaitForQueueItem" version="v1" />
1830
- <uipath:context>
1831
- <uipath:input name="queueName" value="{queueName}" />
1832
- <uipath:input name="folderId" value="{folderId}" />
1833
- <uipath:input name="folderPath" value="{folderPath}" />
1834
- </uipath:context>
1835
- <uipath:input name="ItemData" type="json" target="body"><![CDATA[{}]]></uipath:input>
1836
- <uipath:output name="response" type="Orchestrator.CreateQueueItem" var="{varId}" />
1837
- </uipath:activity>
1838
- </bpmn:extensionElements>
1839
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
1840
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
1841
- </bpmn:ServiceTask>`,
1842
- discoveryNotes: "Uses getQueueDefinitions(serviceType, search) to list available queues"
1843
- },
1844
- "Orchestrator.StartAgenticProcess": {
1845
- extensionType: "Orchestrator.StartAgenticProcess",
1846
- label: "Start and wait for agentic process",
1847
- bpmnElement: "bpmn:CallActivity",
1848
- placements: {
1849
- activity: {
1850
- type: "bpmn:CallActivity"
1851
- }
1852
- },
1853
- extensionTag: "uipath:activity",
1854
- contextFields: [
1855
- {
1856
- name: "releaseKey",
1857
- displayName: "Process",
1858
- type: "string",
1859
- required: false,
1860
- hidden: true,
1861
- isPrimaryKey: false,
1862
- binding: false,
1863
- defaultValue: null,
1864
- bindingInfo: {
1865
- resource: "process",
1866
- resourceKeyPattern: "${metadata.key}",
1867
- propertyAttribute: "Key"
1868
- }
1869
- },
1870
- {
1871
- name: "folderId",
1872
- type: "string",
1873
- required: false,
1874
- hidden: true,
1875
- isPrimaryKey: false,
1876
- binding: false,
1877
- defaultValue: null
1878
- },
1879
- {
1880
- name: "folderPath",
1881
- type: "string",
1882
- required: false,
1883
- hidden: true,
1884
- isPrimaryKey: false,
1885
- binding: false,
1886
- defaultValue: null
1887
- },
1888
- {
1889
- name: "name",
1890
- type: "string",
1891
- required: false,
1892
- hidden: true,
1893
- isPrimaryKey: false,
1894
- binding: false,
1895
- defaultValue: null
1896
- }
1897
- ],
1898
- inputPattern: "mergedBody",
1899
- inputName: "JobArguments",
1900
- inputTarget: "bodyField",
1901
- outputSource: null,
1902
- outputType: "Orchestrator.RunJob",
1903
- outputName: "Process response",
1904
- useRelativeSource: true,
1905
- bindingPattern: "process",
1906
- bindingInfo: {
1907
- resource: "process",
1908
- resourceKeyPattern: "${metadata.key}",
1909
- propertyAttribute: "Key",
1910
- contextField: "releaseKey"
1911
- },
1912
- requiresDiscovery: true,
1913
- isDynamic: true,
1914
- xmlTemplate: `<bpmn:CallActivity id="{id}" name="{name}">
1915
- <bpmn:extensionElements>
1916
- <uipath:activity version="v1">
1917
- <uipath:type value="Orchestrator.StartAgenticProcess" version="v1" />
1918
- <uipath:context>
1919
- <uipath:input name="releaseKey" value="{releaseKey}" />
1920
- <uipath:input name="folderId" value="{folderId}" />
1921
- <uipath:input name="folderPath" value="{folderPath}" />
1922
- <uipath:input name="name" value="{name}" />
1923
- </uipath:context>
1924
- <uipath:input name="JobArguments" type="json" target="bodyField"><![CDATA[{}]]></uipath:input>
1925
- <uipath:output name="Process response" type="Orchestrator.RunJob" var="{varId}" />
1926
- </uipath:activity>
1927
- </bpmn:extensionElements>
1928
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
1929
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
1930
- </bpmn:CallActivity>`,
1931
- discoveryNotes: "Uses getSupportedOrchestratorTasks('ProcessOrchestration', search, 0, 100, true) to list available agentic processes"
1932
- },
1933
- "Orchestrator.StartAgenticProcessAsync": {
1934
- extensionType: "Orchestrator.StartAgenticProcessAsync",
1935
- label: "Start agentic process",
1936
- bpmnElement: "bpmn:CallActivity",
1937
- placements: {
1938
- activity: {
1939
- type: "bpmn:CallActivity"
1940
- }
1941
- },
1942
- extensionTag: "uipath:activity",
1943
- contextFields: [
1944
- {
1945
- name: "releaseKey",
1946
- displayName: "Process",
1947
- type: "string",
1948
- required: false,
1949
- hidden: true,
1950
- isPrimaryKey: false,
1951
- binding: false,
1952
- defaultValue: null,
1953
- bindingInfo: {
1954
- resource: "process",
1955
- resourceKeyPattern: "${metadata.key}",
1956
- propertyAttribute: "Key"
1957
- }
1958
- },
1959
- {
1960
- name: "folderId",
1961
- type: "string",
1962
- required: false,
1963
- hidden: true,
1964
- isPrimaryKey: false,
1965
- binding: false,
1966
- defaultValue: null
1967
- },
1968
- {
1969
- name: "folderPath",
1970
- type: "string",
1971
- required: false,
1972
- hidden: true,
1973
- isPrimaryKey: false,
1974
- binding: false,
1975
- defaultValue: null
1976
- },
1977
- {
1978
- name: "name",
1979
- type: "string",
1980
- required: false,
1981
- hidden: true,
1982
- isPrimaryKey: false,
1983
- binding: false,
1984
- defaultValue: null
1985
- }
1986
- ],
1987
- inputPattern: "mergedBody",
1988
- inputName: "JobArguments",
1989
- inputTarget: "bodyField",
1990
- outputSource: null,
1991
- outputType: "Orchestrator.RunJob",
1992
- outputName: "Process response",
1993
- useRelativeSource: true,
1994
- bindingPattern: "process",
1995
- bindingInfo: {
1996
- resource: "process",
1997
- resourceKeyPattern: "${metadata.key}",
1998
- propertyAttribute: "Key",
1999
- contextField: "releaseKey"
2000
- },
2001
- requiresDiscovery: true,
2002
- isDynamic: true,
2003
- xmlTemplate: `<bpmn:CallActivity id="{id}" name="{name}">
2004
- <bpmn:extensionElements>
2005
- <uipath:activity version="v1">
2006
- <uipath:type value="Orchestrator.StartAgenticProcessAsync" version="v1" />
2007
- <uipath:context>
2008
- <uipath:input name="releaseKey" value="{releaseKey}" />
2009
- <uipath:input name="folderId" value="{folderId}" />
2010
- <uipath:input name="folderPath" value="{folderPath}" />
2011
- <uipath:input name="name" value="{name}" />
2012
- </uipath:context>
2013
- <uipath:input name="JobArguments" type="json" target="bodyField"><![CDATA[{}]]></uipath:input>
2014
- <uipath:output name="Process response" type="Orchestrator.RunJob" var="{varId}" />
2015
- </uipath:activity>
2016
- </bpmn:extensionElements>
2017
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
2018
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
2019
- </bpmn:CallActivity>`,
2020
- discoveryNotes: "Uses getSupportedOrchestratorTasks('ProcessOrchestration', search, 0, 100, true) to list available agentic processes"
2021
- },
2022
- "Orchestrator.StartCaseMgmtProcess": {
2023
- extensionType: "Orchestrator.StartCaseMgmtProcess",
2024
- label: "Start and wait for case management",
2025
- bpmnElement: "bpmn:CallActivity",
2026
- placements: {
2027
- activity: {
2028
- type: "bpmn:CallActivity"
2029
- }
2030
- },
2031
- extensionTag: "uipath:activity",
2032
- contextFields: [
2033
- {
2034
- name: "releaseKey",
2035
- displayName: "Process",
2036
- type: "string",
2037
- required: false,
2038
- hidden: true,
2039
- isPrimaryKey: false,
2040
- binding: false,
2041
- defaultValue: null,
2042
- bindingInfo: {
2043
- resource: "process",
2044
- resourceKeyPattern: "${metadata.key}",
2045
- propertyAttribute: "Key"
2046
- }
2047
- },
2048
- {
2049
- name: "folderId",
2050
- type: "string",
2051
- required: false,
2052
- hidden: true,
2053
- isPrimaryKey: false,
2054
- binding: false,
2055
- defaultValue: null
2056
- },
2057
- {
2058
- name: "folderPath",
2059
- type: "string",
2060
- required: false,
2061
- hidden: true,
2062
- isPrimaryKey: false,
2063
- binding: false,
2064
- defaultValue: null
2065
- },
2066
- {
2067
- name: "name",
2068
- type: "string",
2069
- required: false,
2070
- hidden: true,
2071
- isPrimaryKey: false,
2072
- binding: false,
2073
- defaultValue: null
2074
- }
2075
- ],
2076
- inputPattern: "mergedBody",
2077
- inputName: "JobArguments",
2078
- inputTarget: "bodyField",
2079
- outputSource: null,
2080
- outputType: "Orchestrator.RunJob",
2081
- outputName: "Process response",
2082
- useRelativeSource: true,
2083
- bindingPattern: "process",
2084
- bindingInfo: {
2085
- resource: "process",
2086
- resourceKeyPattern: "${metadata.key}",
2087
- propertyAttribute: "Key",
2088
- contextField: "releaseKey"
2089
- },
2090
- requiresDiscovery: true,
2091
- isDynamic: true,
2092
- xmlTemplate: `<bpmn:CallActivity id="{id}" name="{name}">
2093
- <bpmn:extensionElements>
2094
- <uipath:activity version="v1">
2095
- <uipath:type value="Orchestrator.StartCaseMgmtProcess" version="v1" />
2096
- <uipath:context>
2097
- <uipath:input name="releaseKey" value="{releaseKey}" />
2098
- <uipath:input name="folderId" value="{folderId}" />
2099
- <uipath:input name="folderPath" value="{folderPath}" />
2100
- <uipath:input name="name" value="{name}" />
2101
- </uipath:context>
2102
- <uipath:input name="JobArguments" type="json" target="bodyField"><![CDATA[{}]]></uipath:input>
2103
- <uipath:output name="Process response" type="Orchestrator.RunJob" var="{varId}" />
2104
- </uipath:activity>
2105
- </bpmn:extensionElements>
2106
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
2107
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
2108
- </bpmn:CallActivity>`,
2109
- discoveryNotes: "Uses getSupportedOrchestratorTasks('caseManagement', search, 0, 100, true) to list available case management processes"
2110
- },
2111
- "Orchestrator.StartCaseMgmtProcessAsync": {
2112
- extensionType: "Orchestrator.StartCaseMgmtProcessAsync",
2113
- label: "Start case management",
2114
- bpmnElement: "bpmn:CallActivity",
2115
- placements: {
2116
- activity: {
2117
- type: "bpmn:CallActivity"
2118
- }
2119
- },
2120
- extensionTag: "uipath:activity",
2121
- contextFields: [
2122
- {
2123
- name: "releaseKey",
2124
- displayName: "Process",
2125
- type: "string",
2126
- required: false,
2127
- hidden: true,
2128
- isPrimaryKey: false,
2129
- binding: false,
2130
- defaultValue: null,
2131
- bindingInfo: {
2132
- resource: "process",
2133
- resourceKeyPattern: "${metadata.key}",
2134
- propertyAttribute: "Key"
2135
- }
2136
- },
2137
- {
2138
- name: "folderId",
2139
- type: "string",
2140
- required: false,
2141
- hidden: true,
2142
- isPrimaryKey: false,
2143
- binding: false,
2144
- defaultValue: null
2145
- },
2146
- {
2147
- name: "folderPath",
2148
- type: "string",
2149
- required: false,
2150
- hidden: true,
2151
- isPrimaryKey: false,
2152
- binding: false,
2153
- defaultValue: null
2154
- },
2155
- {
2156
- name: "name",
2157
- type: "string",
2158
- required: false,
2159
- hidden: true,
2160
- isPrimaryKey: false,
2161
- binding: false,
2162
- defaultValue: null
2163
- }
2164
- ],
2165
- inputPattern: "mergedBody",
2166
- inputName: "JobArguments",
2167
- inputTarget: "bodyField",
2168
- outputSource: null,
2169
- outputType: "Orchestrator.RunJob",
2170
- outputName: "Process response",
2171
- useRelativeSource: true,
2172
- bindingPattern: "process",
2173
- bindingInfo: {
2174
- resource: "process",
2175
- resourceKeyPattern: "${metadata.key}",
2176
- propertyAttribute: "Key",
2177
- contextField: "releaseKey"
2178
- },
2179
- requiresDiscovery: true,
2180
- isDynamic: true,
2181
- xmlTemplate: `<bpmn:CallActivity id="{id}" name="{name}">
2182
- <bpmn:extensionElements>
2183
- <uipath:activity version="v1">
2184
- <uipath:type value="Orchestrator.StartCaseMgmtProcessAsync" version="v1" />
2185
- <uipath:context>
2186
- <uipath:input name="releaseKey" value="{releaseKey}" />
2187
- <uipath:input name="folderId" value="{folderId}" />
2188
- <uipath:input name="folderPath" value="{folderPath}" />
2189
- <uipath:input name="name" value="{name}" />
2190
- </uipath:context>
2191
- <uipath:input name="JobArguments" type="json" target="bodyField"><![CDATA[{}]]></uipath:input>
2192
- <uipath:output name="Process response" type="Orchestrator.RunJob" var="{varId}" />
2193
- </uipath:activity>
2194
- </bpmn:extensionElements>
2195
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
2196
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
2197
- </bpmn:CallActivity>`,
2198
- discoveryNotes: "Uses getSupportedOrchestratorTasks('caseManagement', search, 0, 100, true) to list available case management processes"
2199
- },
2200
- "A2A.AgentExecution": {
2201
- extensionType: "A2A.AgentExecution",
2202
- label: "Start and wait for A2A agent",
2203
- bpmnElement: "bpmn:ServiceTask",
2204
- placements: {
2205
- activity: {
2206
- type: "bpmn:ServiceTask"
2207
- }
2208
- },
2209
- extensionTag: "uipath:activity",
2210
- contextFields: [],
2211
- inputPattern: "mergedBody",
2212
- inputName: "body",
2213
- inputTarget: "body",
2214
- outputSource: null,
2215
- outputType: "A2A.AgentExecution",
2216
- outputName: "a2aResponse",
2217
- useRelativeSource: true,
2218
- bindingPattern: "none",
2219
- requiresDiscovery: false,
2220
- isDynamic: true,
2221
- xmlTemplate: `<bpmn:ServiceTask id="{id}" name="{name}">
2222
- <bpmn:extensionElements>
2223
- <uipath:activity version="v1">
2224
- <uipath:type value="A2A.AgentExecution" version="v1" />
2225
- <uipath:input name="body" type="json" target="body"><![CDATA[{}]]></uipath:input>
2226
- <uipath:output name="a2aResponse" type="A2A.AgentExecution" var="{varId}" />
2227
- </uipath:activity>
2228
- </bpmn:extensionElements>
2229
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
2230
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
2231
- </bpmn:ServiceTask>`,
2232
- inputFieldNotes: "Auto-initialized by A2AFPSFormControl on load. Version is set to v2. Outputs include a2aResponse (jsonSchema with A2A response schema, source=result) and Error (any, source=Error).",
2233
- outputNotes: "Output schema includes: isSuccess (boolean), response (string), sessionId (string), status (string), taskId (string), artifacts (array of {index, parts, metadata}). Also includes Error output (type=any, source=Error).",
2234
- inputFields: [
2235
- {
2236
- name: "agentUrl",
2237
- displayName: "Agent URL",
2238
- type: "string",
2239
- required: true,
2240
- description: "URL of the A2A agent endpoint"
2241
- },
2242
- {
2243
- name: "skillId",
2244
- displayName: "Skill ID",
2245
- type: "string",
2246
- required: true,
2247
- description: "Identifier for the specific skill to invoke on the agent"
2248
- },
2249
- {
2250
- name: "input",
2251
- displayName: "Input",
2252
- type: "string",
2253
- required: true,
2254
- description: "Input text/message to send to the A2A agent"
2255
- },
2256
- {
2257
- name: "authToken",
2258
- displayName: "Auth Token",
2259
- type: "string",
2260
- required: true,
2261
- description: "Authentication token for the A2A agent"
2262
- },
2263
- {
2264
- name: "agentName",
2265
- displayName: "Agent Name",
2266
- type: "string",
2267
- required: true,
2268
- description: "Display name of the A2A agent"
2269
- }
2270
- ]
2271
- },
2272
- "BPMN.Variables": {
2273
- extensionType: "BPMN.Variables",
2274
- label: "BPMN Variables",
2275
- bpmnElement: "bpmn:Task",
2276
- placements: {},
2277
- extensionTag: "uipath:mapping",
2278
- contextFields: [],
2279
- inputPattern: "none",
2280
- outputSource: null,
2281
- outputType: null,
2282
- bindingPattern: "none",
2283
- requiresDiscovery: false,
2284
- isDynamic: false,
2285
- xmlTemplate: `<bpmn:Task id="{id}" name="{name}">
2286
- <bpmn:extensionElements>
2287
- <uipath:mapping version="v1">
2288
- <uipath:type value="BPMN.Variables" version="v1" />
2289
- </uipath:mapping>
2290
- </bpmn:extensionElements>
2291
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
2292
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
2293
- </bpmn:Task>`,
2294
- inputNotes: "Variable mappings use uipath:mapping with direct input/output elements, not a jsonBody pattern",
2295
- bpmnElementNotes: "Also used on bpmn:StartEvent, bpmn:EndEvent, bpmn:ScriptTask, and bpmn:SubProcess for variable mappings. On bpmn:Task with no serviceType, defaults to BPMN.Variables.",
2296
- extensionTagNotes: "Uses uipath:mapping (not uipath:activity). BPMN.Variables mappings are supported on StartEvent, EndEvent, Task, ScriptTask, and SubProcess owners."
2297
- },
2298
- "BPMN.ScriptTask": {
2299
- extensionType: "BPMN.ScriptTask",
2300
- label: "Execute script",
2301
- bpmnElement: "bpmn:ScriptTask",
2302
- placements: {},
2303
- extensionTag: "uipath:mapping",
2304
- contextFields: [],
2305
- inputPattern: "scriptArgs",
2306
- inputName: "args",
2307
- inputTarget: "bodyField",
2308
- outputSource: null,
2309
- outputType: null,
2310
- bindingPattern: "none",
2311
- requiresDiscovery: false,
2312
- isDynamic: false,
2313
- xmlTemplate: `<bpmn:ScriptTask id="{id}" name="{name}">
2314
- <bpmn:extensionElements>
2315
- <uipath:mapping version="v1">
2316
- <uipath:type value="BPMN.ScriptTask" version="v1" />
2317
- <uipath:input name="args" type="json" target="bodyField"><![CDATA[{}]]></uipath:input>
2318
- </uipath:mapping>
2319
- </bpmn:extensionElements>
2320
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
2321
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
2322
- </bpmn:ScriptTask>`,
2323
- inputNotes: "Inputs are merged into a single json input named 'args' with target 'bodyField'. An inputSchema is created from the input variables.",
2324
- extensionTagNotes: "bpmn:ScriptTask is routed through createModdleExtensionVariableMapping (same as BPMN.Variables). Inputs are merged into a single 'args' JSON body with inputSchema."
2325
- },
2326
- "Intsvc.TimerTrigger": {
2327
- extensionType: "Intsvc.TimerTrigger",
2328
- label: "Timer trigger",
2329
- bpmnElement: "bpmn:StartEvent",
2330
- placements: {},
2331
- extensionTag: "uipath:activity",
2332
- contextFields: [],
2333
- inputPattern: "none",
2334
- outputSource: ".",
2335
- outputType: "custom",
2336
- outputName: "result",
2337
- useRelativeSource: false,
2338
- bindingPattern: "none",
2339
- requiresDiscovery: false,
2340
- isDynamic: false,
2341
- xmlTemplate: `<bpmn:StartEvent id="{id}" name="{name}">
2342
- <bpmn:extensionElements>
2343
- <uipath:activity version="v1">
2344
- <uipath:type value="Intsvc.TimerTrigger" version="v1" />
2345
- <uipath:output name="result" type="custom" source="." var="{varId}" />
2346
- </uipath:activity>
2347
- </bpmn:extensionElements>
2348
- <bpmn:timerEventDefinition><bpmn:timeDuration xsi:type="bpmn:tFormalExpression">PT1H</bpmn:timeDuration></bpmn:timerEventDefinition>
2349
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
2350
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
2351
- </bpmn:StartEvent>`,
2352
- inputNotes: "No jsonBody, no input fields, no isSplitInputs in design schema",
2353
- bpmnElementNotes: "Used via timer event definition on start events; not directly in FPS_TO_NODE_MAPPING",
2354
- extensionTagNotes: "NOT in isEvents array, uses uipath:activity. However, isIntsvcTriggerDesignSchemaType returns true.",
2355
- inputFields: []
2356
- },
2357
- "Maestro.ReceiveMessageEvent": {
2358
- extensionType: "Maestro.ReceiveMessageEvent",
2359
- label: "Receive internal message",
2360
- bpmnElement: "bpmn:IntermediateCatchEvent",
2361
- placements: {
2362
- startEvent: {
2363
- type: "bpmn:StartEvent",
2364
- eventDefinition: {
2365
- type: "bpmn:MessageEventDefinition"
2366
- }
2367
- },
2368
- intermediateEvent: {
2369
- type: "bpmn:IntermediateCatchEvent",
2370
- eventDefinition: {
2371
- type: "bpmn:MessageEventDefinition"
2372
- }
2373
- },
2374
- boundaryEvent: {
2375
- type: "bpmn:BoundaryEvent",
2376
- eventDefinition: {
2377
- type: "bpmn:MessageEventDefinition"
2378
- }
2379
- }
2380
- },
2381
- extensionTag: "uipath:event",
2382
- contextFields: [
2383
- {
2384
- name: "name",
2385
- displayName: "Message name",
2386
- type: "string",
2387
- required: true,
2388
- hidden: false,
2389
- isPrimaryKey: false,
2390
- binding: false,
2391
- defaultValue: null
2392
- },
2393
- {
2394
- name: "_label",
2395
- type: "string",
2396
- required: false,
2397
- hidden: true,
2398
- isPrimaryKey: false,
2399
- binding: false,
2400
- defaultValue: null
2401
- }
2402
- ],
2403
- inputPattern: "separateInputs",
2404
- inputName: "ItemData",
2405
- inputTarget: "body",
2406
- outputSource: null,
2407
- outputType: "Maestro.ReceiveMessageEvent",
2408
- outputName: "response",
2409
- useRelativeSource: true,
2410
- bindingPattern: "none",
2411
- requiresDiscovery: false,
2412
- isDynamic: false,
2413
- xmlTemplate: `<bpmn:IntermediateCatchEvent id="{id}" name="{name}">
2414
- <bpmn:extensionElements>
2415
- <uipath:event version="v1">
2416
- <uipath:type value="Maestro.ReceiveMessageEvent" version="v1" />
2417
- <uipath:context>
2418
- <uipath:input name="name" value="{name}" />
2419
- <uipath:input name="_label" value="{_label}" />
2420
- </uipath:context>
2421
- <uipath:input name="ItemData" type="json" target="body"><![CDATA[{}]]></uipath:input>
2422
- <uipath:output name="response" type="Maestro.ReceiveMessageEvent" var="{varId}" />
2423
- </uipath:event>
2424
- </bpmn:extensionElements>
2425
- <bpmn:messageEventDefinition />
2426
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
2427
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
2428
- </bpmn:IntermediateCatchEvent>`,
2429
- inputNotes: "isSplitInputs=true in design schema but NOT in isSplitInputsEvents code array, so inputs are NOT merged into ItemData for this type. They remain separate.",
2430
- extensionTagNotes: "In isEvents array, uses uipath:event",
2431
- inputFields: [
2432
- {
2433
- name: "Reference",
2434
- displayName: "Reference",
2435
- type: "string",
2436
- required: true,
2437
- hidden: false,
2438
- isPrimaryKey: false,
2439
- binding: false,
2440
- defaultValue: null,
2441
- target: "bodyField",
2442
- description: "Correlation reference to match this receive event to its sender"
2443
- }
2444
- ]
2445
- },
2446
- "Maestro.SendMessageEvent": {
2447
- extensionType: "Maestro.SendMessageEvent",
2448
- label: "Send internal message",
2449
- bpmnElement: "bpmn:IntermediateThrowEvent",
2450
- placements: {
2451
- intermediateEvent: {
2452
- type: "bpmn:IntermediateThrowEvent",
2453
- eventDefinition: {
2454
- type: "bpmn:MessageEventDefinition"
2455
- }
2456
- },
2457
- endEvent: {
2458
- type: "bpmn:EndEvent",
2459
- eventDefinition: {
2460
- type: "bpmn:MessageEventDefinition"
2461
- }
2462
- }
2463
- },
2464
- extensionTag: "uipath:event",
2465
- contextFields: [
2466
- {
2467
- name: "name",
2468
- displayName: "Message name",
2469
- type: "string",
2470
- required: true,
2471
- hidden: false,
2472
- isPrimaryKey: false,
2473
- binding: false,
2474
- defaultValue: null
2475
- },
2476
- {
2477
- name: "_label",
2478
- type: "string",
2479
- required: false,
2480
- hidden: true,
2481
- isPrimaryKey: false,
2482
- binding: false,
2483
- defaultValue: null
2484
- },
2485
- {
2486
- name: "inputSchema",
2487
- displayName: "Input schema",
2488
- type: "jsonSchema",
2489
- required: true,
2490
- hidden: true,
2491
- isPrimaryKey: false,
2492
- binding: false,
2493
- defaultValue: null
2494
- }
2495
- ],
2496
- inputPattern: "splitInputsItemData",
2497
- inputName: "ItemData",
2498
- inputTarget: "body",
2499
- outputSource: null,
2500
- outputType: "Maestro.SendMessageEvent",
2501
- outputName: "response",
2502
- useRelativeSource: true,
2503
- bindingPattern: "none",
2504
- requiresDiscovery: false,
2505
- isDynamic: false,
2506
- xmlTemplate: `<bpmn:IntermediateThrowEvent id="{id}" name="{name}">
2507
- <bpmn:extensionElements>
2508
- <uipath:event version="v1">
2509
- <uipath:type value="Maestro.SendMessageEvent" version="v1" />
2510
- <uipath:context>
2511
- <uipath:input name="name" value="{name}" />
2512
- <uipath:input name="_label" value="{_label}" />
2513
- <uipath:input name="inputSchema" value="{inputSchema}" />
2514
- </uipath:context>
2515
- <uipath:input name="ItemData" type="json" target="body"><![CDATA[{"Reference":"","SpecificContent":{},"Error":"","TimeToLive":""}]]></uipath:input>
2516
- <uipath:output name="response" type="Maestro.SendMessageEvent" var="{varId}" />
2517
- </uipath:event>
2518
- </bpmn:extensionElements>
2519
- <bpmn:messageEventDefinition />
2520
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
2521
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
2522
- </bpmn:IntermediateThrowEvent>`,
2523
- inputNotes: "In isSplitInputsEvents array. Inputs are merged into a single ItemData JSON body at serialization time. Uses SEND_MESSAGE_EVENT_INPUT_SCHEMA as the inputSchema.",
2524
- extensionTagNotes: "In isEvents array, uses uipath:event",
2525
- inputFields: [
2526
- {
2527
- name: "Reference",
2528
- displayName: "Reference",
2529
- type: "string",
2530
- required: true,
2531
- hidden: false,
2532
- isPrimaryKey: false,
2533
- binding: false,
2534
- defaultValue: null,
2535
- target: "body",
2536
- description: "Correlation reference to match this send event to its receiver"
2537
- },
2538
- {
2539
- name: "SpecificContent",
2540
- displayName: "Item information",
2541
- type: "json",
2542
- required: false,
2543
- hidden: false,
2544
- isPrimaryKey: false,
2545
- binding: false,
2546
- defaultValue: null,
2547
- target: "body",
2548
- description: "JSON payload with the message content"
2549
- },
2550
- {
2551
- name: "TimeToLive",
2552
- displayName: "Time to live",
2553
- type: "duration",
2554
- required: false,
2555
- hidden: false,
2556
- isPrimaryKey: false,
2557
- binding: false,
2558
- defaultValue: null,
2559
- target: "body",
2560
- description: "Duration after which the message expires if not consumed"
2561
- }
2562
- ]
2563
- },
2564
- "Maestro.CaseRulesEvaluator": {
2565
- extensionType: "Maestro.CaseRulesEvaluator",
2566
- label: "Case rules evaluator",
2567
- bpmnElement: "bpmn:ServiceTask",
2568
- placements: {},
2569
- extensionTag: "uipath:activity",
2570
- contextFields: [
2571
- {
2572
- name: "caseDeterministicRules",
2573
- displayName: "Case deterministic rules",
2574
- type: "json",
2575
- required: true,
2576
- hidden: false,
2577
- isPrimaryKey: false,
2578
- binding: false,
2579
- defaultValue: null
2580
- },
2581
- {
2582
- name: "caseCurrentExecutionState",
2583
- displayName: "Case current execution state",
2584
- type: "json",
2585
- required: true,
2586
- hidden: false,
2587
- isPrimaryKey: false,
2588
- binding: false,
2589
- defaultValue: null
2590
- },
2591
- {
2592
- name: "_label",
2593
- type: "string",
2594
- required: false,
2595
- hidden: true,
2596
- isPrimaryKey: false,
2597
- binding: false,
2598
- defaultValue: null
2599
- }
2600
- ],
2601
- inputPattern: "mergedBody",
2602
- inputName: "caseManagerInput",
2603
- inputTarget: "body",
2604
- outputSource: null,
2605
- outputType: "Maestro.CaseRulesEvaluator",
2606
- outputName: "schedulerOutput",
2607
- useRelativeSource: true,
2608
- bindingPattern: "none",
2609
- requiresDiscovery: false,
2610
- isDynamic: false,
2611
- xmlTemplate: `<bpmn:ServiceTask id="{id}" name="{name}">
2612
- <bpmn:extensionElements>
2613
- <uipath:activity version="v1">
2614
- <uipath:type value="Maestro.CaseRulesEvaluator" version="v1" />
2615
- <uipath:context>
2616
- <uipath:input name="caseDeterministicRules" value="{caseDeterministicRules}" />
2617
- <uipath:input name="caseCurrentExecutionState" value="{caseCurrentExecutionState}" />
2618
- <uipath:input name="_label" value="{_label}" />
2619
- </uipath:context>
2620
- <uipath:input name="caseManagerInput" type="json" target="body"><![CDATA[{}]]></uipath:input>
2621
- <uipath:output name="schedulerOutput" type="Maestro.CaseRulesEvaluator" var="{varId}" />
2622
- </uipath:activity>
2623
- </bpmn:extensionElements>
2624
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
2625
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
2626
- </bpmn:ServiceTask>`,
2627
- bpmnElementNotes: "Not in FPS_TO_NODE_MAPPING activity section; used internally for case management processes. Likely bpmn:ServiceTask or bpmn:Task."
2628
- },
2629
- "Maestro.CaseManagerGuardrails": {
2630
- extensionType: "Maestro.CaseManagerGuardrails",
2631
- label: "Case manager guardrails",
2632
- bpmnElement: "bpmn:ServiceTask",
2633
- placements: {},
2634
- extensionTag: "uipath:activity",
2635
- contextFields: [
2636
- {
2637
- name: "decisions",
2638
- displayName: "Decisions",
2639
- type: "json",
2640
- required: true,
2641
- hidden: false,
2642
- isPrimaryKey: false,
2643
- binding: false,
2644
- defaultValue: null
2645
- },
2646
- {
2647
- name: "_label",
2648
- type: "string",
2649
- required: false,
2650
- hidden: true,
2651
- isPrimaryKey: false,
2652
- binding: false,
2653
- defaultValue: null
2654
- }
2655
- ],
2656
- inputPattern: "mergedBody",
2657
- inputName: "body",
2658
- inputTarget: "body",
2659
- outputSource: null,
2660
- outputType: "Maestro.CaseManagerGuardrails",
2661
- outputName: "guardrailsOutput",
2662
- useRelativeSource: true,
2663
- bindingPattern: "none",
2664
- requiresDiscovery: false,
2665
- isDynamic: false,
2666
- xmlTemplate: `<bpmn:ServiceTask id="{id}" name="{name}">
2667
- <bpmn:extensionElements>
2668
- <uipath:activity version="v1">
2669
- <uipath:type value="Maestro.CaseManagerGuardrails" version="v1" />
2670
- <uipath:context>
2671
- <uipath:input name="decisions" value="{decisions}" />
2672
- <uipath:input name="_label" value="{_label}" />
2673
- </uipath:context>
2674
- <uipath:input name="body" type="json" target="body"><![CDATA[{}]]></uipath:input>
2675
- <uipath:output name="guardrailsOutput" type="Maestro.CaseManagerGuardrails" var="{varId}" />
2676
- </uipath:activity>
2677
- </bpmn:extensionElements>
2678
- <bpmn:incoming>{incomingEdge}</bpmn:incoming>
2679
- <bpmn:outgoing>{outgoingEdge}</bpmn:outgoing>
2680
- </bpmn:ServiceTask>`,
2681
- bpmnElementNotes: "Not in FPS_TO_NODE_MAPPING activity section; used internally for case management processes. Likely bpmn:ServiceTask or bpmn:Task."
2682
- }
2683
- },
2684
- bpmnElements: {
2685
- gateways: {
2686
- "bpmn:ExclusiveGateway": {
2687
- bpmnElement: "bpmn:ExclusiveGateway",
2688
- category: "gateway"
2689
- },
2690
- "bpmn:ParallelGateway": {
2691
- bpmnElement: "bpmn:ParallelGateway",
2692
- category: "gateway"
2693
- },
2694
- "bpmn:InclusiveGateway": {
2695
- bpmnElement: "bpmn:InclusiveGateway",
2696
- category: "gateway"
2697
- },
2698
- "bpmn:ComplexGateway": {
2699
- bpmnElement: "bpmn:ComplexGateway",
2700
- category: "gateway"
2701
- },
2702
- "bpmn:EventBasedGateway": {
2703
- bpmnElement: "bpmn:EventBasedGateway",
2704
- category: "gateway"
2705
- },
2706
- "uipath.control-flow.decision": {
2707
- bpmnElement: "uipath.control-flow.decision",
2708
- category: "gateway"
2709
- },
2710
- "uipath.control-flow.switch": {
2711
- bpmnElement: "uipath.control-flow.switch",
2712
- category: "gateway"
2713
- }
2714
- },
2715
- tasks: {
2716
- "bpmn:Task": {
2717
- bpmnElement: "bpmn:Task",
2718
- category: "task"
2719
- },
2720
- "bpmn:UserTask": {
2721
- bpmnElement: "bpmn:UserTask",
2722
- category: "task"
2723
- },
2724
- "bpmn:ServiceTask": {
2725
- bpmnElement: "bpmn:ServiceTask",
2726
- category: "task"
2727
- },
2728
- "bpmn:SendTask": {
2729
- bpmnElement: "bpmn:SendTask",
2730
- category: "task"
2731
- },
2732
- "bpmn:ReceiveTask": {
2733
- bpmnElement: "bpmn:ReceiveTask",
2734
- category: "task"
2735
- },
2736
- "bpmn:ManualTask": {
2737
- bpmnElement: "bpmn:ManualTask",
2738
- category: "task"
2739
- },
2740
- "bpmn:BusinessRuleTask": {
2741
- bpmnElement: "bpmn:BusinessRuleTask",
2742
- category: "task"
2743
- },
2744
- "bpmn:ScriptTask": {
2745
- bpmnElement: "bpmn:ScriptTask",
2746
- category: "task"
2747
- },
2748
- "bpmn:CallActivity": {
2749
- bpmnElement: "bpmn:CallActivity",
2750
- category: "task"
2751
- },
2752
- "bpmn:SubProcess": {
2753
- bpmnElement: "bpmn:SubProcess",
2754
- category: "task",
2755
- variants: [
2756
- "collapsed",
2757
- "expanded",
2758
- "eventSubprocess"
2759
- ]
2760
- },
2761
- "bpmn:Transaction": {
2762
- bpmnElement: "bpmn:Transaction",
2763
- category: "task"
2764
- }
2765
- },
2766
- events: {
2767
- "bpmn:StartEvent": {
2768
- bpmnElement: "bpmn:StartEvent",
2769
- category: "event",
2770
- eventDefinitions: [
2771
- {
2772
- type: "none"
2773
- },
2774
- {
2775
- type: "bpmn:MessageEventDefinition"
2776
- },
2777
- {
2778
- type: "bpmn:TimerEventDefinition"
2779
- },
2780
- {
2781
- type: "bpmn:ConditionalEventDefinition"
2782
- },
2783
- {
2784
- type: "bpmn:SignalEventDefinition"
2785
- }
2786
- ]
2787
- },
2788
- "bpmn:IntermediateThrowEvent": {
2789
- bpmnElement: "bpmn:IntermediateThrowEvent",
2790
- category: "event",
2791
- eventDefinitions: [
2792
- {
2793
- type: "none"
2794
- },
2795
- {
2796
- type: "bpmn:MessageEventDefinition"
2797
- },
2798
- {
2799
- type: "bpmn:EscalationEventDefinition"
2800
- },
2801
- {
2802
- type: "bpmn:SignalEventDefinition"
2803
- },
2804
- {
2805
- type: "bpmn:LinkEventDefinition"
2806
- },
2807
- {
2808
- type: "bpmn:CompensateEventDefinition"
2809
- }
2810
- ]
2811
- },
2812
- "bpmn:IntermediateCatchEvent": {
2813
- bpmnElement: "bpmn:IntermediateCatchEvent",
2814
- category: "event",
2815
- eventDefinitions: [
2816
- {
2817
- type: "bpmn:MessageEventDefinition"
2818
- },
2819
- {
2820
- type: "bpmn:TimerEventDefinition"
2821
- },
2822
- {
2823
- type: "bpmn:EscalationEventDefinition"
2824
- },
2825
- {
2826
- type: "bpmn:SignalEventDefinition"
2827
- },
2828
- {
2829
- type: "bpmn:ConditionalEventDefinition"
2830
- },
2831
- {
2832
- type: "bpmn:LinkEventDefinition"
2833
- },
2834
- {
2835
- type: "bpmn:CompensateEventDefinition"
2836
- }
2837
- ]
2838
- },
2839
- "bpmn:EndEvent": {
2840
- bpmnElement: "bpmn:EndEvent",
2841
- category: "event",
2842
- eventDefinitions: [
2843
- {
2844
- type: "none"
2845
- },
2846
- {
2847
- type: "bpmn:MessageEventDefinition"
2848
- },
2849
- {
2850
- type: "bpmn:EscalationEventDefinition"
2851
- },
2852
- {
2853
- type: "bpmn:ErrorEventDefinition"
2854
- },
2855
- {
2856
- type: "bpmn:CompensateEventDefinition"
2857
- },
2858
- {
2859
- type: "bpmn:SignalEventDefinition"
2860
- },
2861
- {
2862
- type: "bpmn:TerminateEventDefinition"
2863
- }
2864
- ]
2865
- },
2866
- "bpmn:BoundaryEvent": {
2867
- bpmnElement: "bpmn:BoundaryEvent",
2868
- category: "event",
2869
- eventDefinitions: [
2870
- {
2871
- type: "bpmn:MessageEventDefinition"
2872
- },
2873
- {
2874
- type: "bpmn:TimerEventDefinition"
2875
- },
2876
- {
2877
- type: "bpmn:EscalationEventDefinition"
2878
- },
2879
- {
2880
- type: "bpmn:ConditionalEventDefinition"
2881
- },
2882
- {
2883
- type: "bpmn:ErrorEventDefinition"
2884
- },
2885
- {
2886
- type: "bpmn:SignalEventDefinition"
2887
- },
2888
- {
2889
- type: "bpmn:CompensateEventDefinition"
2890
- },
2891
- {
2892
- type: "bpmn:MessageEventDefinition",
2893
- interrupting: false
2894
- },
2895
- {
2896
- type: "bpmn:TimerEventDefinition",
2897
- interrupting: false
2898
- },
2899
- {
2900
- type: "bpmn:EscalationEventDefinition",
2901
- interrupting: false
2902
- },
2903
- {
2904
- type: "bpmn:ConditionalEventDefinition",
2905
- interrupting: false
2906
- },
2907
- {
2908
- type: "bpmn:SignalEventDefinition",
2909
- interrupting: false
2910
- }
2911
- ]
2912
- }
2913
- },
2914
- data: {
2915
- "bpmn:DataStoreReference": {
2916
- bpmnElement: "bpmn:DataStoreReference",
2917
- category: "data"
2918
- },
2919
- "bpmn:DataObjectReference": {
2920
- bpmnElement: "bpmn:DataObjectReference",
2921
- category: "data"
2922
- }
2923
- },
2924
- participants: {
2925
- "bpmn:Participant": {
2926
- bpmnElement: "bpmn:Participant",
2927
- category: "participant"
2928
- }
2929
- },
2930
- uipathShortcuts: {
2931
- "uipath.agent": {
2932
- bpmnElement: "uipath.agent",
2933
- category: "uipathShortcut"
2934
- },
2935
- "uipath.human-in-the-loop": {
2936
- bpmnElement: "uipath.human-in-the-loop",
2937
- category: "uipathShortcut"
2938
- },
2939
- "uipath.api-workflow": {
2940
- bpmnElement: "uipath.api-workflow",
2941
- category: "uipathShortcut"
2942
- },
2943
- "uipath.process-orchestration": {
2944
- bpmnElement: "uipath.process-orchestration",
2945
- category: "uipathShortcut"
2946
- },
2947
- "uipath.rpa-workflow": {
2948
- bpmnElement: "uipath.rpa-workflow",
2949
- category: "uipathShortcut"
2950
- },
2951
- "uipath.connector-activity": {
2952
- bpmnElement: "uipath.connector-activity",
2953
- category: "uipathShortcut"
2954
- },
2955
- "uipath.connector-trigger": {
2956
- bpmnElement: "uipath.connector-trigger",
2957
- category: "uipathShortcut"
2958
- },
2959
- "uipath.http-request": {
2960
- bpmnElement: "uipath.http-request",
2961
- category: "uipathShortcut"
2962
- },
2963
- "uipath.timer-activity": {
2964
- bpmnElement: "uipath.timer-activity",
2965
- category: "uipathShortcut",
2966
- eventDefinition: "bpmn:TimerEventDefinition"
2967
- },
2968
- "uipath.timer-trigger": {
2969
- bpmnElement: "uipath.timer-trigger",
2970
- category: "uipathShortcut",
2971
- eventDefinition: "bpmn:TimerEventDefinition"
2972
- }
2973
- }
2974
- },
2975
- serializationRules: {
2976
- extensionTagResolution: {
2977
- description: "How the frontend determines which XML extension tag to use",
2978
- rules: [
2979
- "If serviceType is in isEvents array [Intsvc.WaitForEvent, Intsvc.EventTrigger, Maestro.ReceiveMessageEvent, Maestro.SendMessageEvent] => uipath:event",
2980
- "If serviceType is BPMN.Variables on bpmn:StartEvent, bpmn:EndEvent, or bpmn:Task => uipath:mapping",
2981
- "If nodeType is bpmn:ScriptTask or bpmn:SubProcess => uipath:mapping",
2982
- "Otherwise => uipath:activity"
2983
- ]
2984
- },
2985
- isEventsArray: [
2986
- "Intsvc.WaitForEvent",
2987
- "Intsvc.EventTrigger",
2988
- "Maestro.ReceiveMessageEvent",
2989
- "Maestro.SendMessageEvent"
2990
- ],
2991
- isExecutionArray: [
2992
- "Intsvc.ActivityExecution",
2993
- "Intsvc.AsyncExecution",
2994
- "Intsvc.SyncAgentExecution",
2995
- "Intsvc.AsyncAgentExecution",
2996
- "Intsvc.SyncWorkflowExecution",
2997
- "Intsvc.AsyncWorkflowExecution",
2998
- "Intsvc.UnifiedHttpRequest"
2999
- ],
3000
- isSplitInputsEventsArray: [
3001
- "Maestro.SendMessageEvent"
3002
- ]
3003
- }
3004
- };
3005
- var BPMN_SPEC = bpmn_spec_default;
3006
- var STATIC_UIPATH_EXTENSION_TAG_NAMES = [
3007
- "binding",
3008
- "bindings",
3009
- "caseManagement",
3010
- "context",
3011
- "entryPointId",
3012
- "error",
3013
- "errorDefinition",
3014
- "errorMapping",
3015
- "input",
3016
- "inputOutput",
3017
- "inputSchema",
3018
- "intsvcActivityConfig",
3019
- "isTransactionRoot",
3020
- "loopCharacteristics",
3021
- "migrationVersion",
3022
- "output",
3023
- "retry",
3024
- "scriptVersion",
3025
- "tag",
3026
- "tags",
3027
- "type",
3028
- "variables"
3029
- ];
3030
- var SUPPORTED_UIPATH_EXTENSION_TAG_NAMES = Object.freeze([
3031
- ...new Set([
3032
- ...Object.values(BPMN_SPEC.extensionTypes).map((entry) => entry.extensionTag.replace(/^uipath:/, "")),
3033
- ...STATIC_UIPATH_EXTENSION_TAG_NAMES
3034
- ])
3035
- ].sort());
3036
- var SUPPORTED_UIPATH_EXTENSION_TAGS = Object.freeze(SUPPORTED_UIPATH_EXTENSION_TAG_NAMES.map((tag) => `uipath:${tag}`));
3037
- init_guid();
3038
- var KNOWN_UIPATH_TAGS = new Set(SUPPORTED_UIPATH_EXTENSION_TAGS);
3039
- var CALL_ACTIVITY_TYPES = Object.entries(BPMN_SPEC.extensionTypes).filter(([, contract]) => contract.bpmnElement === "bpmn:CallActivity").map(([type]) => type).sort((a, b) => a.localeCompare(b));
3040
- var CALL_ACTIVITY_PAYLOAD_TAGS = new Set(Object.values(BPMN_SPEC.extensionTypes).filter((contract) => contract.bpmnElement === "bpmn:CallActivity").map((contract) => contract.extensionTag).filter((tag) => typeof tag === "string"));
3041
- var SEMANTIC_VALIDATION_ERROR = "BPMN_VALIDATION_ERROR";
3042
- var BPMN_MODEL_NAMESPACE = "http://www.omg.org/spec/BPMN/20100524/MODEL";
3043
- var ACTIVITY_CONFIGURATION_VERSION = "activityConfigurationVersion";
3044
- var ACTIVITY_CONFIGURATION_V1 = "v1";
3045
-
3046
- class BpmnValidateService {
3047
- fileSystem;
3048
- options;
3049
- constructor(fileSystem, options = {}) {
3050
- this.fileSystem = fileSystem;
3051
- this.options = options;
3052
- }
3053
- async validateProject(projectPath) {
3054
- if (!projectPath) {
3055
- return this.createFailure([
3056
- {
3057
- file: ".",
3058
- message: "Project path is required.",
3059
- instruction: "Provide a ProcessOrchestration project path."
3060
- }
3061
- ]);
3062
- }
3063
- const files = await this.fileSystem.readdir(projectPath);
3064
- const bpmnFiles = files.filter((file) => file.endsWith(".bpmn"));
3065
- const diagnostics = [];
3066
- if (bpmnFiles.length === 0) {
3067
- diagnostics.push({
3068
- file: ".",
3069
- message: "No BPMN files were found.",
3070
- instruction: "Add at least one .bpmn process file."
3071
- });
3072
- }
3073
- const bindings = await this.loadBindings(projectPath, diagnostics);
3074
- for (const file of bpmnFiles) {
3075
- const filePath = this.fileSystem.joinPath(projectPath, file);
3076
- const content = await this.fileSystem.readFile(filePath);
3077
- if (content === null || content.byteLength === 0) {
3078
- diagnostics.push({
3079
- file,
3080
- message: "BPMN file could not be read or is empty.",
3081
- instruction: "Ensure the file exists and contains BPMN XML."
3082
- });
3083
- continue;
3084
- }
3085
- const xml = decodeFileContent(content);
3086
- this.validateBpmnFile(file, xml, bindings, diagnostics);
3087
- await this.runFileValidators({ projectPath, file, xml, fileSystem: this.fileSystem }, diagnostics);
3088
- }
3089
- await this.runProjectValidators({ projectPath, bpmnFiles, fileSystem: this.fileSystem }, diagnostics);
3090
- const errors = diagnostics.filter(isErrorDiagnostic);
3091
- if (errors.length > 0) {
3092
- return this.createFailure(errors);
3093
- }
3094
- const warnings = diagnostics.filter(isWarningDiagnostic);
3095
- if (warnings.length > 0) {
3096
- return {
3097
- isValid: true,
3098
- diagnostics,
3099
- message: this.createWarningMessage(warnings)
3100
- };
3101
- }
3102
- return {
3103
- isValid: true,
3104
- diagnostics: []
3105
- };
3106
- }
3107
- validateBpmnFile(file, xml, bindings, diagnostics) {
3108
- const parseResult = parseXml(xml);
3109
- diagnostics.push(...parseResult.diagnostics.map((message) => ({
3110
- file,
3111
- message,
3112
- instruction: "Fix the BPMN XML so tags are well-formed."
3113
- })));
3114
- if (!parseResult.root) {
3115
- diagnostics.push({
3116
- file,
3117
- message: "BPMN XML does not contain a root element.",
3118
- instruction: "Export a valid BPMN definitions document."
3119
- });
3120
- return;
3121
- }
3122
- const definitions = findFirst(parseResult.root, (node) => hasLocalName(node, "definitions"));
3123
- if (!definitions) {
3124
- diagnostics.push({
3125
- file,
3126
- message: "BPMN definitions element is missing.",
3127
- instruction: "Use a BPMN document rooted at bpmn:definitions."
3128
- });
3129
- return;
3130
- }
3131
- const processes = findChildren(definitions, (node) => hasLocalName(node, "process"));
3132
- if (processes.length === 0) {
3133
- diagnostics.push({
3134
- file,
3135
- message: "BPMN process element is missing.",
3136
- instruction: "Add a bpmn:process element to the BPMN file."
3137
- });
3138
- }
3139
- for (const process of processes) {
3140
- if (findDescendants(process, (node) => hasLocalName(node, "startEvent")).length === 0) {
3141
- diagnostics.push({
3142
- file,
3143
- element: describeElement(process),
3144
- message: "BPMN process has no start event.",
3145
- instruction: "Add a bpmn:StartEvent to each process."
3146
- });
3147
- }
3148
- this.validateRootEntryPointIds(file, process, diagnostics);
3149
- }
3150
- const availableBindings = new Map(bindings);
3151
- collectInlineBindings(definitions, availableBindings);
3152
- this.validateUiPathTags(file, definitions, availableBindings, diagnostics);
3153
- this.validateUnassignedVariables(file, definitions, diagnostics);
3154
- this.validateCallActivityReferences(file, definitions, diagnostics);
3155
- }
3156
- validateUnassignedVariables(file, definitions, diagnostics) {
3157
- for (const process of findChildren(definitions, (node) => hasLocalName(node, "process"))) {
3158
- this.reportUnassignedVariables(file, process, diagnostics);
3159
- }
3160
- }
3161
- reportUnassignedVariables(file, process, diagnostics) {
3162
- const startEventIds = new Set(findChildren(process, (node) => hasLocalName(node, "startEvent")).filter(isManualStartEvent).map((node) => node.attributes.id).filter((id) => Boolean(id)));
3163
- const declaredById = new Map;
3164
- for (const block of findDescendants(process, (node) => hasLocalName(node, "variables"))) {
3165
- for (const decl of block.children) {
3166
- const declKind = getLocalName(decl.name);
3167
- if (declKind !== "input" && declKind !== "inputoutput" && declKind !== "output") {
3168
- continue;
3169
- }
3170
- const id = decl.attributes.id;
3171
- if (!id) {
3172
- continue;
3173
- }
3174
- const elementId = decl.attributes.elementId?.trim() ?? "";
3175
- const callerCanSupply = declKind === "input" && !!decl.attributes.name?.trim() && startEventIds.has(elementId);
3176
- declaredById.set(id, {
3177
- hasValueSource: !!decl.attributes.default?.trim() || callerCanSupply,
3178
- declKind,
3179
- element: describeElement(decl)
3180
- });
3181
- }
3182
- }
3183
- if (declaredById.size === 0) {
3184
- return;
3185
- }
3186
- const assigned = new Set;
3187
- for (const output of findDescendants(process, (node) => hasLocalName(node, "output"))) {
3188
- const target = output.attributes.var;
3189
- const isDeclaration = output.parent !== undefined && hasLocalName(output.parent, "variables");
3190
- if (target && !isDeclaration) {
3191
- assigned.add(target);
3192
- }
3193
- }
3194
- for (const id of collectVariableReads(process)) {
3195
- const declared = declaredById.get(id);
3196
- if (!declared || declared.hasValueSource || assigned.has(id)) {
3197
- continue;
3198
- }
3199
- diagnostics.push({
3200
- file,
3201
- element: declared.element,
3202
- message: `Variable "vars.${id}" is read but never assigned; it will be empty at run time.`,
3203
- instruction: declared.declKind === "input" ? "Give the variable a default, assign it through a uipath:output mapping, or bind it to an entry-point start event by giving it both a name and an elementId." : "Give the variable a default, or assign it through a uipath:output mapping before it is read.",
3204
- severity: "warning"
3205
- });
3206
- }
3207
- }
3208
- validateCallActivityReferences(file, definitions, diagnostics) {
3209
- for (const callActivity of findDescendants(definitions, (node) => hasLocalName(node, "callActivity"))) {
3210
- const hasUiPathPayload = findDescendants(callActivity, (node) => CALL_ACTIVITY_PAYLOAD_TAGS.has(node.name)).length > 0;
3211
- const calledElement = callActivity.attributes.calledElement?.trim() ?? "";
3212
- if (!hasUiPathPayload) {
3213
- diagnostics.push({
3214
- file,
3215
- element: describeElement(callActivity),
3216
- message: "Call activity has no uipath:activity payload, so it invokes nothing at run time.",
3217
- instruction: `Add a payload naming one of the call-activity types (${CALL_ACTIVITY_TYPES.join(", ")}), with a process resource binding.`
3218
- });
3219
- continue;
3220
- }
3221
- if (calledElement) {
3222
- diagnostics.push({
3223
- file,
3224
- element: describeElement(callActivity),
3225
- message: `Call activity attribute calledElement="${calledElement}" is ignored; the invoked process comes from the uipath:activity payload and its process binding.`,
3226
- instruction: "Remove calledElement, or ensure the uipath:activity payload names the process you intend to invoke.",
3227
- severity: "warning"
3228
- });
3229
- }
3230
- }
3231
- }
3232
- validateRootEntryPointIds(file, process, diagnostics) {
3233
- const rootStartEvents = findChildren(process, (node) => hasLocalName(node, "startEvent"));
3234
- for (const startEvent of rootStartEvents) {
3235
- const entryPointIds = findDescendants(startEvent, (node) => node.name === "uipath:entryPointId");
3236
- for (const entryPointId of entryPointIds) {
3237
- const value = entryPointId.attributes.value ?? "";
3238
- if (isGuid(value)) {
3239
- continue;
3240
- }
3241
- diagnostics.push({
3242
- file,
3243
- element: describeElement(startEvent),
3244
- message: `Root start event uipath:entryPointId value "${value}" must be a GUID.`,
3245
- instruction: "Set uipath:entryPointId value to a GUID and use the same value for the matching entry-points.json uniqueId."
3246
- });
3247
- }
3248
- }
3249
- }
3250
- validateUiPathTags(file, root, bindings, diagnostics) {
3251
- const uipathNodes = findDescendants(root, (node) => node.name.startsWith("uipath:"));
3252
- for (const node of uipathNodes) {
3253
- if (!KNOWN_UIPATH_TAGS.has(node.name)) {
3254
- diagnostics.push({
3255
- file,
3256
- element: describeElement(node),
3257
- message: `Unsupported UiPath extension tag "${node.name}".`,
3258
- instruction: `Use a supported UiPath extension tag: ${SUPPORTED_UIPATH_EXTENSION_TAGS.join(", ")}.`,
3259
- severity: "warning"
3260
- });
3261
- }
3262
- }
3263
- for (const loopCharacteristics of uipathNodes.filter((node) => node.name === "uipath:loopCharacteristics")) {
3264
- const extensionElements = loopCharacteristics.parent;
3265
- const owner = extensionElements && hasLocalName(extensionElements, "extensionElements") ? extensionElements.parent : undefined;
3266
- if (owner && hasLocalName(owner, "multiInstanceLoopCharacteristics")) {
3267
- continue;
3268
- }
3269
- diagnostics.push({
3270
- file,
3271
- element: describeElement(loopCharacteristics),
3272
- message: "uipath:loopCharacteristics must be nested under bpmn:multiInstanceLoopCharacteristics.",
3273
- instruction: "Move it into bpmn:multiInstanceLoopCharacteristics/bpmn:extensionElements and remove any copy from the activity's extensionElements."
3274
- });
3275
- }
3276
- const payloads = uipathNodes.filter((node) => ["uipath:activity", "uipath:event", "uipath:mapping"].includes(node.name));
3277
- for (const payload of payloads) {
3278
- this.validatePayload(file, payload, bindings, getOwningProcessActivityConfigurationVersion(payload), diagnostics);
3279
- }
3280
- }
3281
- validatePayload(file, payload, bindings, workflowActivityConfigurationVersion, diagnostics) {
3282
- const owner = findBpmnOwner(payload);
3283
- if (!owner) {
3284
- diagnostics.push({
3285
- file,
3286
- element: describeElement(payload),
3287
- message: `${payload.name} must be inside bpmn:extensionElements on a BPMN element.`,
3288
- instruction: "Move the UiPath extension payload under the owning BPMN element's extensionElements."
3289
- });
3290
- return;
3291
- }
3292
- const typeNodes = childElements(payload, "uipath:type");
3293
- if (payload.attributes.type && typeNodes.length > 0) {
3294
- diagnostics.push({
3295
- file,
3296
- element: describeElement(owner),
3297
- message: `${payload.name} must not mix a type attribute with legacy uipath:type child elements.`,
3298
- instruction: "Use either the payload type attribute or one uipath:type child, not both."
3299
- });
3300
- return;
3301
- }
3302
- if (!payload.attributes.type && typeNodes.length === 0 && !isImplicitVariablesMapping(payload, owner)) {
3303
- diagnostics.push({
3304
- file,
3305
- element: describeElement(owner),
3306
- message: `${payload.name} must contain exactly one uipath:type child or a type attribute.`,
3307
- instruction: "Add one uipath:type element with a supported value attribute, or set the payload type attribute."
3308
- });
3309
- return;
3310
- }
3311
- if (!payload.attributes.type && typeNodes.length > 1) {
3312
- diagnostics.push({
3313
- file,
3314
- element: describeElement(owner),
3315
- message: `${payload.name} must contain exactly one uipath:type child or a type attribute.`,
3316
- instruction: "Add one uipath:type element with a supported value attribute, or set the payload type attribute."
3317
- });
3318
- return;
3319
- }
3320
- const typeNode = typeNodes[0];
3321
- const extensionType = payload.attributes.type ?? typeNode?.attributes.value ?? inferImplicitExtensionType(payload, owner);
3322
- if (!extensionType) {
3323
- diagnostics.push({
3324
- file,
3325
- element: describeElement(typeNode ?? payload),
3326
- message: "UiPath extension type is missing.",
3327
- instruction: "Set uipath:activity type or uipath:type value to a supported UiPath BPMN extension type."
3328
- });
3329
- return;
3330
- }
3331
- const contract = BPMN_SPEC.extensionTypes[extensionType];
3332
- if (!contract) {
3333
- const severity = this.options.unsupportedExtensionTypeSeverity ?? "warning";
3334
- diagnostics.push({
3335
- file,
3336
- element: describeElement(typeNode ?? payload),
3337
- message: `Unsupported UiPath extension type "${extensionType}".`,
3338
- instruction: severity === "error" ? `"${extensionType}" is not in this CLI's BPMN contract, so Orchestrator will reject the package at deploy (Error 1654). Use a supported extension type, remove the node, or upgrade the CLI to a version whose contract includes it.` : "Use an extension type present in the UiPath BPMN contract, or update the contract before packaging this project.",
3339
- severity
3340
- });
3341
- return;
3342
- }
3343
- this.validateContractPlacement(file, payload, owner, contract, diagnostics);
3344
- const isActivityExecutionV1 = extensionType === "Intsvc.ActivityExecution" && isIntsvcActivityExecutionV1(getContextInputs(payload).find((input) => input.attributes.name === ACTIVITY_CONFIGURATION_VERSION)?.attributes.value, workflowActivityConfigurationVersion);
3345
- this.validateContext(file, payload, owner, contract, isActivityExecutionV1, diagnostics);
3346
- if (isActivityExecutionV1) {
3347
- this.validateActivityExecutionV1Bindings(file, payload, owner, bindings, diagnostics);
3348
- }
3349
- if (contract.extensionType === "Orchestrator.StartAgentJob") {
3350
- this.validateStartAgentJobBindings(file, payload, owner, bindings, diagnostics);
3351
- }
3352
- if (contract.extensionType === "Intsvc.EventTrigger" || contract.extensionType === "Intsvc.WaitForEvent") {
3353
- this.validateTriggerConnectionBinding(file, payload, owner, bindings, contract.extensionType === "Intsvc.WaitForEvent" ? "wait" : "trigger", diagnostics);
3354
- }
3355
- this.validateInputs(file, payload, owner, contract, diagnostics);
3356
- this.validateOutput(file, payload, owner, contract, diagnostics);
3357
- this.validateBindingReferences(file, payload, bindings, diagnostics);
3358
- }
3359
- validateContractPlacement(file, payload, owner, contract, diagnostics) {
3360
- if (payload.name !== contract.extensionTag) {
3361
- diagnostics.push({
3362
- file,
3363
- element: describeElement(payload),
3364
- message: `${contract.extensionType} must use ${contract.extensionTag}, not ${payload.name}.`,
3365
- instruction: `Change the extension tag to ${contract.extensionTag}.`
3366
- });
3367
- }
3368
- const allowedOwners = getAllowedOwnerTypes(contract);
3369
- if (!allowedOwners.some((allowedOwner) => getLocalName(allowedOwner) === getLocalName(owner.name) && resolveNamespace(owner) === BPMN_MODEL_NAMESPACE)) {
3370
- diagnostics.push({
3371
- file,
3372
- element: describeElement(owner),
3373
- message: `${contract.extensionType} cannot be attached to ${owner.name}.`,
3374
- instruction: `Attach it to one of: ${allowedOwners.join(", ")}.`
3375
- });
3376
- }
3377
- }
3378
- validateContext(file, payload, owner, contract, isActivityExecutionV1, diagnostics) {
3379
- const contextInputs = getContextInputs(payload);
3380
- const actual = new Map(contextInputs.map((input) => [input.attributes.name, input]));
3381
- const fields = contract.contextFields ?? [];
3382
- const allowDynamicPayloadShape = usesCanvasOwnedDynamicPayload(contract);
3383
- const allowed = new Set(fields.map((field) => field.name));
3384
- const requireDeclaredFields = !allowDynamicPayloadShape || isActivityExecutionV1;
3385
- const contractLabel = isActivityExecutionV1 ? "Integration Service activity" : contract.extensionType;
3386
- for (const field of fields) {
3387
- const input = actual.get(field.name);
3388
- if (requireDeclaredFields && field.required && !hasAttributeValue(input, "value")) {
3389
- diagnostics.push({
3390
- file,
3391
- element: describeElement(owner),
3392
- message: `${contractLabel} is missing required context input "${field.name}".`,
3393
- instruction: `Add <uipath:input name="${field.name}" value="..." /> inside uipath:context.`
3394
- });
3395
- }
3396
- if (input) {
3397
- if (isActivityExecutionV1 && field.type === "string" && input.attributes.type !== "string") {
3398
- diagnostics.push({
3399
- file,
3400
- element: describeElement(input),
3401
- message: `${contractLabel} context input "${field.name}" must use type="string".`,
3402
- instruction: 'Add type="string" to this context input.'
3403
- });
3404
- }
3405
- validateTypedValue(file, input, field.type, input.attributes.value, `context input "${field.name}"`, diagnostics);
3406
- }
3407
- }
3408
- for (const input of contextInputs) {
3409
- const name = input.attributes.name;
3410
- if (!name) {
3411
- diagnostics.push({
3412
- file,
3413
- element: describeElement(input),
3414
- message: "uipath:context input is missing a name attribute.",
3415
- instruction: "Set name to a context field from the UiPath BPMN contract."
3416
- });
3417
- } else if (!allowDynamicPayloadShape && allowed.size > 0 && !allowed.has(name)) {
3418
- diagnostics.push({
3419
- file,
3420
- element: describeElement(input),
3421
- message: `${contract.extensionType} does not support context input "${name}".`,
3422
- instruction: `Use one of: ${[...allowed].join(", ")}.`
3423
- });
3424
- }
3425
- }
3426
- }
3427
- validateActivityExecutionV1Bindings(file, payload, owner, bindings, diagnostics) {
3428
- const resourceKeys = this.validateConnectionBindings(file, payload, owner, bindings, diagnostics, "activity", [
3429
- {
3430
- contextName: "connection",
3431
- propertyAttribute: "ConnectionId"
3432
- },
3433
- { contextName: "folderKey", propertyAttribute: "folderKey" }
3434
- ]);
3435
- const connectionResourceKey = resourceKeys.get("connection");
3436
- const folderResourceKey = resourceKeys.get("folderKey");
3437
- if (connectionResourceKey && folderResourceKey && connectionResourceKey !== folderResourceKey) {
3438
- diagnostics.push({
3439
- file,
3440
- element: describeElement(owner),
3441
- message: "Integration Service activity connection and folder bindings refer to different connection resources.",
3442
- instruction: "Set the same resourceKey on both root bindings."
3443
- });
3444
- }
3445
- }
3446
- validateTriggerConnectionBinding(file, payload, owner, bindings, nodeLabel, diagnostics) {
3447
- this.validateConnectionBindings(file, payload, owner, bindings, diagnostics, nodeLabel, [
3448
- {
3449
- contextName: "connection",
3450
- propertyAttribute: "ConnectionId"
3451
- },
3452
- {
3453
- contextName: "connectionId",
3454
- propertyAttribute: "ConnectionId"
3455
- }
3456
- ]);
3457
- }
3458
- validateConnectionBindings(file, payload, owner, bindings, diagnostics, nodeLabel, bindingFields) {
3459
- const inputByName = new Map(getConnectorInputs(payload).map((input) => [
3460
- input.attributes.name,
3461
- input
3462
- ]));
3463
- const resourceKeys = new Map;
3464
- for (const field of bindingFields) {
3465
- const contextInput = inputByName.get(field.contextName);
3466
- if (!contextInput) {
3467
- continue;
3468
- }
3469
- const value = contextInput.attributes.value?.trim() ?? "";
3470
- if (!value) {
3471
- continue;
3472
- }
3473
- if (!value.startsWith("=bindings.")) {
3474
- diagnostics.push({
3475
- file,
3476
- element: describeElement(owner),
3477
- message: `Integration Service ${nodeLabel} context input "${field.contextName}" must reference a root binding.`,
3478
- instruction: `Set ${field.contextName} to =bindings.<bindingId> and declare that binding with resource="Connection" and propertyAttribute="${field.propertyAttribute}".`
3479
- });
3480
- continue;
3481
- }
3482
- const bindingId = value.slice("=bindings.".length);
3483
- const binding = bindings.get(bindingId);
3484
- if (!binding) {
3485
- continue;
3486
- }
3487
- const hasInvalidBindingShape = binding.resource !== "Connection" || binding.propertyAttribute !== field.propertyAttribute;
3488
- if (hasInvalidBindingShape) {
3489
- diagnostics.push({
3490
- file,
3491
- element: describeElement(owner),
3492
- message: `Integration Service ${nodeLabel} ${field.contextName} binding "${bindingId}" must use resource="Connection" and propertyAttribute="${field.propertyAttribute}".`,
3493
- instruction: `Set resource="Connection" and propertyAttribute="${field.propertyAttribute}" on that binding.`
3494
- });
3495
- }
3496
- const resourceKey = binding.resourceKey?.trim();
3497
- if (!resourceKey) {
3498
- diagnostics.push({
3499
- file,
3500
- element: describeElement(owner),
3501
- message: `Integration Service ${nodeLabel} ${field.contextName} binding "${bindingId}" is missing resourceKey.`,
3502
- instruction: "Set resourceKey on that root binding."
3503
- });
3504
- } else if (!hasInvalidBindingShape) {
3505
- resourceKeys.set(field.contextName, resourceKey);
3506
- }
3507
- }
3508
- return resourceKeys;
3509
- }
3510
- validateInputs(file, payload, owner, contract, diagnostics) {
3511
- const directInputs = childElements(payload, "uipath:input");
3512
- const actual = new Map(directInputs.map((input) => [input.attributes.name, input]));
3513
- if (usesCanvasOwnedDynamicPayload(contract)) {
3514
- this.validateDynamicDirectInputs(file, directInputs, diagnostics);
3515
- return;
3516
- }
3517
- if (contract.inputPattern === "none") {
3518
- if (contract.extensionType === "BPMN.Variables") {
3519
- this.validateVariableMappingInputs(file, directInputs, diagnostics);
3520
- return;
3521
- }
3522
- for (const input of directInputs) {
3523
- diagnostics.push({
3524
- file,
3525
- element: describeElement(input),
3526
- message: `${contract.extensionType} does not support direct input payload "${input.attributes.name ?? ""}".`,
3527
- instruction: "Remove the direct uipath:input payload."
3528
- });
3529
- }
3530
- return;
3531
- }
3532
- if (["mergedBody", "splitInputsItemData", "scriptArgs"].includes(contract.inputPattern)) {
3533
- const expectedName = getExpectedInputName(contract);
3534
- const input = actual.get(expectedName);
3535
- if (!input) {
3536
- diagnostics.push({
3537
- file,
3538
- element: describeElement(owner),
3539
- message: `${contract.extensionType} is missing required input payload "${expectedName}".`,
3540
- instruction: `Add <uipath:input name="${expectedName}" type="json" target="${getExpectedInputTarget(contract)}">...</uipath:input>.`
3541
- });
3542
- return;
3543
- }
3544
- validateInputShape(file, input, expectedName, contract, diagnostics);
3545
- for (const extraInput of directInputs) {
3546
- if (extraInput.attributes.name !== expectedName) {
3547
- diagnostics.push({
3548
- file,
3549
- element: describeElement(extraInput),
3550
- message: `${contract.extensionType} does not support input payload "${extraInput.attributes.name ?? ""}".`,
3551
- instruction: `Use only the "${expectedName}" input payload for ${contract.inputPattern}.`
3552
- });
3553
- }
3554
- }
3555
- return;
3556
- }
3557
- const fields = contract.inputFields ?? [];
3558
- const allowed = new Set(fields.map((field) => field.name));
3559
- for (const field of fields) {
3560
- const input = actual.get(field.name);
3561
- if (field.required && !input) {
3562
- diagnostics.push({
3563
- file,
3564
- element: describeElement(owner),
3565
- message: `${contract.extensionType} is missing required input payload "${field.name}".`,
3566
- instruction: `Add a direct uipath:input named "${field.name}".`
3567
- });
3568
- }
3569
- if (input) {
3570
- validateTypedValue(file, input, field.type, input.text || input.attributes.value, `input payload "${field.name}"`, diagnostics);
3571
- }
3572
- }
3573
- for (const input of directInputs) {
3574
- const name = input.attributes.name;
3575
- if (!name) {
3576
- diagnostics.push({
3577
- file,
3578
- element: describeElement(input),
3579
- message: "uipath:input is missing a name attribute.",
3580
- instruction: "Set name to an input field from the UiPath BPMN contract."
3581
- });
3582
- } else if (allowed.size > 0 && !allowed.has(name)) {
3583
- diagnostics.push({
3584
- file,
3585
- element: describeElement(input),
3586
- message: `${contract.extensionType} does not support input payload "${name}".`,
3587
- instruction: `Use one of: ${[...allowed].join(", ")}.`
3588
- });
3589
- }
3590
- }
3591
- }
3592
- validateDynamicDirectInputs(file, directInputs, diagnostics) {
3593
- for (const input of directInputs) {
3594
- if (!hasAttributeValue(input, "name")) {
3595
- diagnostics.push({
3596
- file,
3597
- element: describeElement(input),
3598
- message: "uipath:input is missing a name attribute.",
3599
- instruction: "Set name to the Integration Service payload field."
3600
- });
3601
- }
3602
- if (input.attributes.type === "json") {
3603
- validateJsonPayload(file, input, `input payload "${input.attributes.name ?? ""}"`, diagnostics);
3604
- }
3605
- }
3606
- }
3607
- validateVariableMappingInputs(file, directInputs, diagnostics) {
3608
- for (const input of directInputs) {
3609
- if (!hasAttributeValue(input, "name")) {
3610
- diagnostics.push({
3611
- file,
3612
- element: describeElement(input),
3613
- message: "BPMN.Variables mapping input is missing its name attribute.",
3614
- instruction: "Set name to the process variable being mapped."
3615
- });
3616
- }
3617
- if (input.attributes.type === "json") {
3618
- validateJsonPayload(file, input, `mapping input "${input.attributes.name ?? ""}"`, diagnostics);
3619
- }
3620
- }
3621
- }
3622
- validateOutput(file, payload, owner, contract, diagnostics) {
3623
- if (usesCanvasOwnedDynamicPayload(contract)) {
3624
- for (const output of childElements(payload, "uipath:output")) {
3625
- if (!hasAttributeValue(output, "var")) {
3626
- diagnostics.push({
3627
- file,
3628
- element: describeElement(output),
3629
- message: `${contract.extensionType} output is missing its var attribute.`,
3630
- instruction: "Set var to the variable that receives the output."
3631
- });
3632
- }
3633
- }
3634
- return;
3635
- }
3636
- if (!contract.outputName && !contract.outputType) {
3637
- return;
3638
- }
3639
- const outputs = childElements(payload, "uipath:output");
3640
- if (outputs.length === 0) {
3641
- diagnostics.push({
3642
- file,
3643
- element: describeElement(owner),
3644
- message: `${contract.extensionType} is missing an output payload.`,
3645
- instruction: "Add a uipath:output matching the UiPath BPMN contract."
3646
- });
3647
- return;
3648
- }
3649
- for (const output of outputs) {
3650
- if (contract.outputName && output.attributes.name !== contract.outputName) {
3651
- diagnostics.push({
3652
- file,
3653
- element: describeElement(output),
3654
- message: `${contract.extensionType} output name must be "${contract.outputName}".`,
3655
- instruction: `Set the uipath:output name attribute to "${contract.outputName}".`
3656
- });
3657
- }
3658
- if (contract.outputType && output.attributes.type !== contract.outputType) {
3659
- diagnostics.push({
3660
- file,
3661
- element: describeElement(output),
3662
- message: `${contract.extensionType} output type must be "${contract.outputType}".`,
3663
- instruction: `Set the uipath:output type attribute to "${contract.outputType}".`
3664
- });
3665
- }
3666
- if (contract.outputSource && output.attributes.source !== contract.outputSource) {
3667
- diagnostics.push({
3668
- file,
3669
- element: describeElement(output),
3670
- message: `${contract.extensionType} output source must be "${contract.outputSource}".`,
3671
- instruction: `Set the uipath:output source attribute to "${contract.outputSource}".`
3672
- });
3673
- }
3674
- if (!hasAttributeValue(output, "var")) {
3675
- diagnostics.push({
3676
- file,
3677
- element: describeElement(output),
3678
- message: `${contract.extensionType} output is missing its var attribute.`,
3679
- instruction: "Set var to the variable that receives the output."
3680
- });
3681
- }
3682
- }
3683
- }
3684
- validateBindingReferences(file, payload, bindings, diagnostics) {
3685
- const bindingReferences = findDescendants(payload, (node) => {
3686
- const value = node.attributes.value;
3687
- return value?.startsWith("=bindings.") === true;
3688
- });
3689
- for (const node of bindingReferences) {
3690
- const bindingId = node.attributes.value.slice("=bindings.".length);
3691
- if (!bindingId) {
3692
- diagnostics.push({
3693
- file,
3694
- element: describeElement(node),
3695
- message: "Binding reference is missing a binding id.",
3696
- instruction: 'Use a binding expression such as value="=bindings.<bindingId>".'
3697
- });
3698
- continue;
3699
- }
3700
- if (!bindings.has(bindingId)) {
3701
- diagnostics.push({
3702
- file,
3703
- element: describeElement(node),
3704
- message: `Binding reference "${bindingId}" was not found in project bindings.`,
3705
- instruction: "Add the binding to BPMN uipath:bindings or bindings_v2.json, or update the BPMN binding reference."
3706
- });
3707
- }
3708
- }
3709
- }
3710
- validateStartAgentJobBindings(file, payload, owner, bindings, diagnostics) {
3711
- const contexts = childElements(payload, "uipath:context");
3712
- const contextInputs = contexts.flatMap((context) => childElements(context, "uipath:input"));
3713
- const inputs = new Map(contextInputs.map((input) => [input.attributes.name, input]));
3714
- if (inputs.has("releaseKey") || inputs.has("folderId")) {
3715
- diagnostics.push({
3716
- file,
3717
- element: describeElement(owner),
3718
- message: "Orchestrator.StartAgentJob must use binding-backed name and folderPath context inputs, not releaseKey or folderId.",
3719
- instruction: 'Replace releaseKey/folderId with value="=bindings.<agentNameBindingId>" and value="=bindings.<agentFolderPathBindingId>".'
3720
- });
3721
- }
3722
- for (const expected of ["name", "folderPath"]) {
3723
- const input = inputs.get(expected);
3724
- const value = input?.attributes.value;
3725
- if (!value?.startsWith("=bindings.")) {
3726
- diagnostics.push({
3727
- file,
3728
- element: describeElement(input ?? owner),
3729
- message: `Orchestrator.StartAgentJob context input "${expected}" must reference project bindings.`,
3730
- instruction: `Set "${expected}" to a binding expression such as value="=bindings.<${expected}BindingId>".`
3731
- });
3732
- continue;
3733
- }
3734
- const bindingId = value.slice("=bindings.".length);
3735
- const binding = bindings.get(bindingId);
3736
- if (!binding) {
3737
- diagnostics.push({
3738
- file,
3739
- element: describeElement(input ?? owner),
3740
- message: `Orchestrator.StartAgentJob binding reference "${bindingId}" was not found in project bindings.`,
3741
- instruction: "Add agent name and folderPath bindings to BPMN uipath:bindings or bindings_v2.json before packaging this BPMN project."
3742
- });
3743
- continue;
3744
- }
3745
- if (binding.resource !== "process" || binding.resourceSubType !== "Agent" || binding.propertyAttribute !== expected) {
3746
- diagnostics.push({
3747
- file,
3748
- element: describeElement(input ?? owner),
3749
- message: `Orchestrator.StartAgentJob binding "${bindingId}" must target Agent ${expected}.`,
3750
- instruction: `Use a process binding with resourceSubType "Agent" and propertyAttribute "${expected}".`
3751
- });
3752
- }
3753
- }
3754
- }
3755
- async loadBindings(projectPath, diagnostics) {
3756
- const bindingsPath = this.fileSystem.joinPath(projectPath, "bindings_v2.json");
3757
- if (!await this.fileSystem.exists(bindingsPath)) {
3758
- return new Map;
3759
- }
3760
- const content = await this.fileSystem.readFile(bindingsPath);
3761
- if (content === null || content.byteLength === 0) {
3762
- diagnostics.push({
3763
- file: "bindings_v2.json",
3764
- message: "bindings_v2.json could not be read or is empty.",
3765
- instruction: "Write a valid bindings_v2.json file or remove malformed binding references from BPMN."
3766
- });
3767
- return new Map;
3768
- }
3769
- try {
3770
- const parsed = JSON.parse(decodeFileContent(content));
3771
- return collectBindings(parsed);
3772
- } catch (error) {
3773
- diagnostics.push({
3774
- file: "bindings_v2.json",
3775
- message: `bindings_v2.json is not valid JSON: ${String(error)}`,
3776
- instruction: "Fix bindings_v2.json so it contains valid JSON."
3777
- });
3778
- return new Map;
3779
- }
3780
- }
3781
- async runFileValidators(context, diagnostics) {
3782
- for (const validator of this.options.fileValidators ?? []) {
3783
- diagnostics.push(...await validator.validate(context));
3784
- }
3785
- }
3786
- async runProjectValidators(context, diagnostics) {
3787
- for (const validator of this.options.projectValidators ?? []) {
3788
- diagnostics.push(...await validator.validate(context));
3789
- }
3790
- }
3791
- createFailure(diagnostics) {
3792
- const message = diagnostics.map(formatDiagnostic).slice(0, 25).join(`
3793
- `);
3794
- const suffix = diagnostics.length > 25 ? `
3795
- ...and ${diagnostics.length - 25} more BPMN validation error(s).` : "";
3796
- return {
3797
- isValid: false,
3798
- errorCode: SEMANTIC_VALIDATION_ERROR,
3799
- diagnostics,
3800
- message: `${message}${suffix}`
3801
- };
3802
- }
3803
- createWarningMessage(diagnostics) {
3804
- const message = diagnostics.map(formatDiagnostic).slice(0, 25).join(`
3805
- `);
3806
- const suffix = diagnostics.length > 25 ? `
3807
- ...and ${diagnostics.length - 25} more BPMN validation warning(s).` : "";
3808
- return `${message}${suffix}`;
3809
- }
3810
- }
3811
- function decodeFileContent(content) {
3812
- return new TextDecoder().decode(content);
3813
- }
3814
- function parseXml(xml) {
3815
- const root = {
3816
- name: "#document",
3817
- attributes: {},
3818
- children: [],
3819
- text: ""
3820
- };
3821
- const stack = [root];
3822
- const diagnostics = [];
3823
- const tokenPattern = /<!\[CDATA\[([\s\S]*?)\]\]>|<!--[\s\S]*?-->|<\?[\s\S]*?\?>|<![^>]*>|<\/?[^>]+>/g;
3824
- let lastIndex = 0;
3825
- let match;
3826
- match = tokenPattern.exec(xml);
3827
- while (match !== null) {
3828
- const text = xml.slice(lastIndex, match.index);
3829
- if (text.trim()) {
3830
- stack[stack.length - 1].text += decodeXmlEntities(text.trim());
3831
- }
3832
- const token = match[0];
3833
- if (token.startsWith("<![CDATA[")) {
3834
- stack[stack.length - 1].text += match[1] ?? "";
3835
- } else if (token.startsWith("</")) {
3836
- const closeName = token.slice(2, -1).trim();
3837
- if (stack.length <= 1) {
3838
- diagnostics.push(`Unexpected closing tag "${closeName}".`);
3839
- } else if (stack[stack.length - 1].name !== closeName) {
3840
- let matchingOpenIndex = -1;
3841
- for (let i = stack.length - 1;i > 0; i -= 1) {
3842
- if (stack[i].name === closeName) {
3843
- matchingOpenIndex = i;
3844
- break;
3845
- }
3846
- }
3847
- if (matchingOpenIndex <= 0) {
3848
- diagnostics.push(`Unexpected closing tag "${closeName}".`);
3849
- } else {
3850
- diagnostics.push(`Mismatched closing tag "${closeName}".`);
3851
- while (stack.length > matchingOpenIndex) {
3852
- stack.pop();
3853
- }
3854
- }
3855
- } else {
3856
- stack.pop();
3857
- }
3858
- } else if (!token.startsWith("<!--") && !token.startsWith("<?") && !token.startsWith("<!")) {
3859
- const selfClosing = token.endsWith("/>");
3860
- const node = parseStartTag(token, selfClosing);
3861
- node.parent = stack[stack.length - 1];
3862
- stack[stack.length - 1].children.push(node);
3863
- if (!selfClosing) {
3864
- stack.push(node);
3865
- }
3866
- }
3867
- lastIndex = tokenPattern.lastIndex;
3868
- match = tokenPattern.exec(xml);
3869
- }
3870
- const trailing = xml.slice(lastIndex).trim();
3871
- if (trailing) {
3872
- stack[stack.length - 1].text += decodeXmlEntities(trailing);
3873
- }
3874
- if (stack.length > 1) {
3875
- diagnostics.push(`Unclosed tag "${stack[stack.length - 1].name}" in BPMN XML.`);
3876
- }
3877
- return {
3878
- root: root.children[0],
3879
- diagnostics
3880
- };
3881
- }
3882
- function parseStartTag(token, selfClosing) {
3883
- const body = token.slice(1, selfClosing ? -2 : -1).trim();
3884
- const nameMatch = /^([^\s/>]+)/.exec(body);
3885
- const name = nameMatch?.[1] ?? "";
3886
- const attributes = {};
3887
- const attributePattern = /([^\s=]+)\s*=\s*(?:"([^"]*)"|'([^']*)')/g;
3888
- let match;
3889
- match = attributePattern.exec(body);
3890
- while (match !== null) {
3891
- attributes[match[1]] = decodeXmlEntities(match[2] ?? match[3] ?? "");
3892
- match = attributePattern.exec(body);
3893
- }
3894
- return {
3895
- name,
3896
- attributes,
3897
- children: [],
3898
- text: ""
3899
- };
3900
- }
3901
- function childElements(node, name) {
3902
- return node.children.filter((child) => child.name === name);
3903
- }
3904
- function findChildren(node, predicate) {
3905
- return node.children.filter(predicate);
3906
- }
3907
- function findDescendants(node, predicate) {
3908
- const matches = [];
3909
- for (const child of node.children) {
3910
- if (predicate(child)) {
3911
- matches.push(child);
3912
- }
3913
- matches.push(...findDescendants(child, predicate));
3914
- }
3915
- return matches;
3916
- }
3917
- function findFirst(node, predicate) {
3918
- if (predicate(node)) {
3919
- return node;
3920
- }
3921
- for (const child of node.children) {
3922
- const match = findFirst(child, predicate);
3923
- if (match) {
3924
- return match;
3925
- }
3926
- }
3927
- return;
3928
- }
3929
- function isManualStartEvent(startEvent) {
3930
- const hasEventDefinition = startEvent.children.some((child) => getLocalName(child.name).endsWith("eventdefinition"));
3931
- const hasUiPathEvent = findDescendants(startEvent, (node) => hasLocalName(node, "event")).length > 0;
3932
- return !hasEventDefinition && !hasUiPathEvent;
3933
- }
3934
- var VARIABLE_READ = /vars(?:\.([A-Za-z_$][\w$]*)|\[\s*["']([^"']+)["']\s*\])/g;
3935
- var FREE_TEXT_ELEMENTS = new Set(["documentation", "text"]);
3936
- function collectVariableReads(node, into = new Set) {
3937
- for (const value of Object.values(node.attributes)) {
3938
- if (!value.trimStart().startsWith("=")) {
3939
- continue;
3940
- }
3941
- for (const match of value.matchAll(VARIABLE_READ)) {
3942
- const id = match[1] ?? match[2];
3943
- if (id) {
3944
- into.add(id);
3945
- }
3946
- }
3947
- }
3948
- if (node.text && !FREE_TEXT_ELEMENTS.has(getLocalName(node.name))) {
3949
- for (const match of node.text.matchAll(VARIABLE_READ)) {
3950
- const id = match[1] ?? match[2];
3951
- if (id) {
3952
- into.add(id);
3953
- }
3954
- }
3955
- }
3956
- for (const child of node.children) {
3957
- collectVariableReads(child, into);
3958
- }
3959
- return into;
3960
- }
3961
- function hasLocalName(node, localName) {
3962
- return getLocalName(node.name) === localName.toLowerCase();
3963
- }
3964
- function getLocalName(name) {
3965
- return name.slice(name.lastIndexOf(":") + 1).toLowerCase();
3966
- }
3967
- function resolveNamespace(node) {
3968
- const separator = node.name.indexOf(":");
3969
- const prefix = separator === -1 ? "" : node.name.slice(0, separator);
3970
- const declaration = prefix ? `xmlns:${prefix}` : "xmlns";
3971
- let current = node;
3972
- while (current) {
3973
- if (Object.hasOwn(current.attributes, declaration)) {
3974
- return current.attributes[declaration];
3975
- }
3976
- current = current.parent;
3977
- }
3978
- return;
3979
- }
3980
- function findBpmnOwner(payload) {
3981
- const extensionElements = payload.parent;
3982
- if (extensionElements && hasLocalName(extensionElements, "extensionElements")) {
3983
- return extensionElements.parent;
3984
- }
3985
- if (payload.parent?.name.startsWith("bpmn:")) {
3986
- return payload.parent;
3987
- }
3988
- return;
3989
- }
3990
- function getContextInputs(payload) {
3991
- return childElements(payload, "uipath:context").flatMap((context) => childElements(context, "uipath:input"));
3992
- }
3993
- function getConnectorInputs(payload) {
3994
- return [
3995
- ...getContextInputs(payload),
3996
- ...childElements(payload, "uipath:input")
3997
- ];
3998
- }
3999
- function isIntsvcActivityExecutionV1(nodeVersion, workflowVersion) {
4000
- const version = nodeVersion ?? workflowVersion;
4001
- return version === undefined || version === ACTIVITY_CONFIGURATION_V1;
4002
- }
4003
- function getOwningProcessActivityConfigurationVersion(payload) {
4004
- let current = payload.parent;
4005
- while (current && !hasLocalName(current, "process")) {
4006
- current = current.parent;
4007
- }
4008
- if (!current) {
4009
- return;
4010
- }
4011
- const extensionElements = findChildren(current, (node) => hasLocalName(node, "extensionElements"));
4012
- return extensionElements.flatMap((node) => childElements(node, "uipath:intsvcActivityConfig")).at(0)?.attributes.version;
4013
- }
4014
- function describeElement(node) {
4015
- const id = node.attributes.id ? `#${node.attributes.id}` : "";
4016
- const name = node.attributes.name ? ` "${node.attributes.name}"` : "";
4017
- return `${node.name}${id}${name}`;
4018
- }
4019
- function hasAttributeValue(node, attribute) {
4020
- return Boolean(node?.attributes[attribute]?.trim());
4021
- }
4022
- function usesCanvasOwnedDynamicPayload(contract) {
4023
- return contract.isDynamic === true || contract.extensionType.startsWith("Intsvc.") && contract.requiresDiscovery;
4024
- }
4025
- function getAllowedOwnerTypes(contract) {
4026
- if (contract.extensionType === "BPMN.Variables") {
4027
- return [
4028
- "bpmn:StartEvent",
4029
- "bpmn:EndEvent",
4030
- "bpmn:Task",
4031
- "bpmn:ScriptTask",
4032
- "bpmn:SubProcess"
4033
- ];
4034
- }
4035
- const placementTypes = Object.values(contract.placements).map((placement) => placement.type);
4036
- return placementTypes.length > 0 ? placementTypes : [contract.bpmnElement];
4037
- }
4038
- function inferImplicitExtensionType(payload, owner) {
4039
- return isImplicitVariablesMapping(payload, owner) ? "BPMN.Variables" : undefined;
4040
- }
4041
- function isImplicitVariablesMapping(payload, owner) {
4042
- return payload.name === "uipath:mapping" && !payload.attributes.type && childElements(payload, "uipath:type").length === 0 && hasLocalName(owner, "task");
4043
- }
4044
- function getExpectedInputName(contract) {
4045
- if (contract.inputPattern === "splitInputsItemData") {
4046
- return "ItemData";
4047
- }
4048
- if (contract.inputPattern === "scriptArgs") {
4049
- return "args";
4050
- }
4051
- return contract.inputName ?? "body";
4052
- }
4053
- function getExpectedInputTarget(contract) {
4054
- if (contract.inputPattern === "scriptArgs") {
4055
- return "bodyField";
4056
- }
4057
- return contract.inputTarget ?? "body";
4058
- }
4059
- function validateInputShape(file, input, expectedName, contract, diagnostics) {
4060
- if (input.attributes.type !== "json") {
4061
- diagnostics.push({
4062
- file,
4063
- element: describeElement(input),
4064
- message: `Input payload "${expectedName}" must declare type="json".`,
4065
- instruction: 'Set the uipath:input type attribute to "json".'
4066
- });
4067
- }
4068
- const expectedTarget = getExpectedInputTarget(contract);
4069
- if (input.attributes.target !== expectedTarget) {
4070
- diagnostics.push({
4071
- file,
4072
- element: describeElement(input),
4073
- message: `Input payload "${expectedName}" must target "${expectedTarget}".`,
4074
- instruction: `Set the uipath:input target attribute to "${expectedTarget}".`
4075
- });
4076
- }
4077
- validateJsonPayload(file, input, `input payload "${expectedName}"`, diagnostics);
4078
- }
4079
- function validateTypedValue(file, node, type, value, label, diagnostics) {
4080
- if (value === undefined || value === "") {
4081
- return;
4082
- }
4083
- if (value.startsWith("=")) {
4084
- return;
4085
- }
4086
- if (type === "number" && !Number.isFinite(Number(value))) {
4087
- diagnostics.push({
4088
- file,
4089
- element: describeElement(node),
4090
- message: `${label} must be a number.`,
4091
- instruction: "Set the value to a numeric literal."
4092
- });
4093
- }
4094
- if (type === "boolean" && !["true", "false"].includes(value)) {
4095
- diagnostics.push({
4096
- file,
4097
- element: describeElement(node),
4098
- message: `${label} must be a boolean.`,
4099
- instruction: 'Set the value to "true" or "false".'
4100
- });
4101
- }
4102
- if (["json", "object"].includes(type)) {
4103
- validateJsonText(file, node, value, label, diagnostics);
4104
- }
4105
- }
4106
- function validateJsonPayload(file, input, label, diagnostics) {
4107
- const value = input.text.trim();
4108
- if (!value || value.startsWith("=")) {
4109
- return;
4110
- }
4111
- validateJsonText(file, input, value, label, diagnostics);
4112
- }
4113
- function validateJsonText(file, node, value, label, diagnostics) {
4114
- try {
4115
- JSON.parse(value);
4116
- } catch (error) {
4117
- diagnostics.push({
4118
- file,
4119
- element: describeElement(node),
4120
- message: `${label} contains malformed JSON: ${String(error)}`,
4121
- instruction: "Replace the payload with valid JSON.",
4122
- severity: "error"
4123
- });
4124
- }
4125
- }
4126
- function collectInlineBindings(root, bindings) {
4127
- for (const binding of findDescendants(root, (node) => node.name === "uipath:binding")) {
4128
- const id = binding.attributes.id;
4129
- if (!id) {
4130
- continue;
4131
- }
4132
- bindings.set(id, {
4133
- id,
4134
- resource: binding.attributes.resource,
4135
- resourceKey: binding.attributes.resourceKey,
4136
- resourceSubType: binding.attributes.resourceSubType,
4137
- propertyAttribute: binding.attributes.propertyAttribute
4138
- });
4139
- }
4140
- }
4141
- function collectBindings(parsed) {
4142
- const bindings = new Map;
4143
- collectBindingRecords(parsed, bindings);
4144
- return bindings;
4145
- }
4146
- function collectBindingRecords(value, bindings) {
4147
- if (Array.isArray(value)) {
4148
- for (const item of value) {
4149
- collectBindingRecords(item, bindings);
4150
- }
4151
- return;
4152
- }
4153
- if (!isRecord(value)) {
4154
- return;
4155
- }
4156
- const id = getStringField(value, "bindingId") ?? getStringField(value, "bindingKey") ?? getStringField(value, "id");
4157
- if (id) {
4158
- bindings.set(id, {
4159
- id,
4160
- resource: getStringField(value, "resource"),
4161
- resourceKey: getStringField(value, "resourceKey"),
4162
- resourceSubType: getStringField(value, "resourceSubType"),
4163
- propertyAttribute: getStringField(value, "propertyAttribute")
4164
- });
4165
- }
4166
- for (const nested of Object.values(value)) {
4167
- collectBindingRecords(nested, bindings);
4168
- }
4169
- }
4170
- function getStringField(value, field) {
4171
- const fieldValue = value[field];
4172
- return typeof fieldValue === "string" && fieldValue ? fieldValue : undefined;
4173
- }
4174
- function isRecord(value) {
4175
- return typeof value === "object" && value !== null && !Array.isArray(value);
4176
- }
4177
- function formatDiagnostic(diagnostic) {
4178
- const element = diagnostic.element ? ` ${diagnostic.element}` : "";
4179
- return `${diagnostic.file}${element}: ${diagnostic.message} ${diagnostic.instruction}`;
4180
- }
4181
- function isErrorDiagnostic(diagnostic) {
4182
- return diagnostic.severity !== "warning";
4183
- }
4184
- function isWarningDiagnostic(diagnostic) {
4185
- return diagnostic.severity === "warning";
4186
- }
4187
- function decodeXmlEntities(value) {
4188
- return value.replace(/&quot;/g, '"').replace(/&apos;/g, "'").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&amp;/g, "&");
4189
- }
4190
- export { BpmnValidateService, isIntsvcActivityExecutionV1 };
4191
-
4192
- //# debugId=928EC9D0F996ACE564756E2164756E21