@io-orkes/conductor-javascript 0.9.1 → 1.0.1
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.
- package/README.md +27 -51
- package/dist/index.d.ts +423 -49
- package/dist/index.js +317 -18
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +306 -17
- package/dist/index.mjs.map +1 -1
- package/package.json +11 -7
package/dist/index.js
CHANGED
|
@@ -39,16 +39,26 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
39
39
|
// index.ts
|
|
40
40
|
var conductor_javascript_exports = {};
|
|
41
41
|
__export(conductor_javascript_exports, {
|
|
42
|
+
ApiError: () => ApiError,
|
|
43
|
+
BaseHttpRequest: () => BaseHttpRequest,
|
|
42
44
|
CancelError: () => CancelError,
|
|
43
45
|
CancelablePromise: () => CancelablePromise,
|
|
44
46
|
ConductorClient: () => ConductorClient,
|
|
45
47
|
ConductorError: () => ConductorError,
|
|
46
48
|
DefaultLogger: () => DefaultLogger,
|
|
49
|
+
EventResourceService: () => EventResourceService,
|
|
50
|
+
HealthCheckResourceService: () => HealthCheckResourceService,
|
|
51
|
+
HumanExecutor: () => HumanExecutor,
|
|
52
|
+
MetadataResourceService: () => MetadataResourceService,
|
|
53
|
+
SchedulerResourceService: () => SchedulerResourceService,
|
|
47
54
|
TaskManager: () => TaskManager,
|
|
48
|
-
|
|
55
|
+
TaskResourceService: () => TaskResourceService,
|
|
49
56
|
TaskRunner: () => TaskRunner,
|
|
50
57
|
TaskType: () => TaskType,
|
|
58
|
+
TokenResourceService: () => TokenResourceService,
|
|
59
|
+
WorkflowBulkResourceService: () => WorkflowBulkResourceService,
|
|
51
60
|
WorkflowExecutor: () => WorkflowExecutor,
|
|
61
|
+
WorkflowResourceService: () => WorkflowResourceService,
|
|
52
62
|
conductorEventTask: () => conductorEventTask,
|
|
53
63
|
doWhileTask: () => doWhileTask,
|
|
54
64
|
dynamicForkTask: () => dynamicForkTask,
|
|
@@ -904,6 +914,22 @@ var WorkflowResourceService = class {
|
|
|
904
914
|
}
|
|
905
915
|
});
|
|
906
916
|
}
|
|
917
|
+
executeWorkflow(body, name, version, requestId, waitUntilTaskRef) {
|
|
918
|
+
return this.httpRequest.request({
|
|
919
|
+
method: "POST",
|
|
920
|
+
url: "/workflow/execute/{name}/{version}",
|
|
921
|
+
path: {
|
|
922
|
+
"name": name,
|
|
923
|
+
"version": version
|
|
924
|
+
},
|
|
925
|
+
query: {
|
|
926
|
+
"requestId": requestId,
|
|
927
|
+
"waitUntilTaskRef": waitUntilTaskRef
|
|
928
|
+
},
|
|
929
|
+
body,
|
|
930
|
+
mediaType: "application/json"
|
|
931
|
+
});
|
|
932
|
+
}
|
|
907
933
|
startWorkflow(requestBody) {
|
|
908
934
|
return this.httpRequest.request({
|
|
909
935
|
method: "POST",
|
|
@@ -1386,6 +1412,202 @@ var request = (config, options) => {
|
|
|
1386
1412
|
});
|
|
1387
1413
|
};
|
|
1388
1414
|
|
|
1415
|
+
// src/common/open-api/services/HumanTaskService.ts
|
|
1416
|
+
var HumanTaskService = class {
|
|
1417
|
+
constructor(httpRequest) {
|
|
1418
|
+
this.httpRequest = httpRequest;
|
|
1419
|
+
}
|
|
1420
|
+
getTasksByFilter(state, assignee, assigneeType, claimedBy, taskName, freeText, includeInputOutput = false) {
|
|
1421
|
+
return this.httpRequest.request({
|
|
1422
|
+
method: "GET",
|
|
1423
|
+
url: "/human/tasks",
|
|
1424
|
+
query: {
|
|
1425
|
+
"state": state,
|
|
1426
|
+
"assignee": assignee,
|
|
1427
|
+
"assigneeType": assigneeType,
|
|
1428
|
+
"claimedBy": claimedBy,
|
|
1429
|
+
"taskName": taskName,
|
|
1430
|
+
"freeText": freeText,
|
|
1431
|
+
"includeInputOutput": includeInputOutput
|
|
1432
|
+
}
|
|
1433
|
+
});
|
|
1434
|
+
}
|
|
1435
|
+
getTaskLoad() {
|
|
1436
|
+
return this.httpRequest.request({
|
|
1437
|
+
method: "GET",
|
|
1438
|
+
url: "/human/tasks/load"
|
|
1439
|
+
});
|
|
1440
|
+
}
|
|
1441
|
+
search1(queryId, start, size = 100, freeText = "*", query, jsonQuery, includeInputOutput = false) {
|
|
1442
|
+
return this.httpRequest.request({
|
|
1443
|
+
method: "GET",
|
|
1444
|
+
url: "/human/tasks/search",
|
|
1445
|
+
query: {
|
|
1446
|
+
"queryId": queryId,
|
|
1447
|
+
"start": start,
|
|
1448
|
+
"size": size,
|
|
1449
|
+
"freeText": freeText,
|
|
1450
|
+
"query": query,
|
|
1451
|
+
"jsonQuery": jsonQuery,
|
|
1452
|
+
"includeInputOutput": includeInputOutput
|
|
1453
|
+
}
|
|
1454
|
+
});
|
|
1455
|
+
}
|
|
1456
|
+
updateTaskOutput1(taskId) {
|
|
1457
|
+
return this.httpRequest.request({
|
|
1458
|
+
method: "DELETE",
|
|
1459
|
+
url: "/human/tasks/{taskId}",
|
|
1460
|
+
path: {
|
|
1461
|
+
"taskId": taskId
|
|
1462
|
+
}
|
|
1463
|
+
});
|
|
1464
|
+
}
|
|
1465
|
+
getTask1(taskId) {
|
|
1466
|
+
return this.httpRequest.request({
|
|
1467
|
+
method: "GET",
|
|
1468
|
+
url: "/human/tasks/{taskId}",
|
|
1469
|
+
path: {
|
|
1470
|
+
"taskId": taskId
|
|
1471
|
+
}
|
|
1472
|
+
});
|
|
1473
|
+
}
|
|
1474
|
+
getActionLogs(taskId) {
|
|
1475
|
+
return this.httpRequest.request({
|
|
1476
|
+
method: "GET",
|
|
1477
|
+
url: "/human/tasks/{taskId}/actionLogs",
|
|
1478
|
+
path: {
|
|
1479
|
+
"taskId": taskId
|
|
1480
|
+
}
|
|
1481
|
+
});
|
|
1482
|
+
}
|
|
1483
|
+
claimTask(taskId) {
|
|
1484
|
+
return this.httpRequest.request({
|
|
1485
|
+
method: "POST",
|
|
1486
|
+
url: "/human/tasks/{taskId}/claim",
|
|
1487
|
+
path: {
|
|
1488
|
+
"taskId": taskId
|
|
1489
|
+
}
|
|
1490
|
+
});
|
|
1491
|
+
}
|
|
1492
|
+
assignAndClaim(taskId, userId) {
|
|
1493
|
+
return this.httpRequest.request({
|
|
1494
|
+
method: "POST",
|
|
1495
|
+
url: "/human/tasks/{taskId}/externalUser/{userId}",
|
|
1496
|
+
path: {
|
|
1497
|
+
"taskId": taskId,
|
|
1498
|
+
"userId": userId
|
|
1499
|
+
}
|
|
1500
|
+
});
|
|
1501
|
+
}
|
|
1502
|
+
reassignTask(taskId, requestBody) {
|
|
1503
|
+
return this.httpRequest.request({
|
|
1504
|
+
method: "POST",
|
|
1505
|
+
url: "/human/tasks/{taskId}/reassign",
|
|
1506
|
+
path: {
|
|
1507
|
+
"taskId": taskId
|
|
1508
|
+
},
|
|
1509
|
+
body: requestBody,
|
|
1510
|
+
mediaType: "application/json"
|
|
1511
|
+
});
|
|
1512
|
+
}
|
|
1513
|
+
releaseTask(taskId) {
|
|
1514
|
+
return this.httpRequest.request({
|
|
1515
|
+
method: "POST",
|
|
1516
|
+
url: "/human/tasks/{taskId}/release",
|
|
1517
|
+
path: {
|
|
1518
|
+
"taskId": taskId
|
|
1519
|
+
}
|
|
1520
|
+
});
|
|
1521
|
+
}
|
|
1522
|
+
getStateLogs(taskId) {
|
|
1523
|
+
return this.httpRequest.request({
|
|
1524
|
+
method: "GET",
|
|
1525
|
+
url: "/human/tasks/{taskId}/stateLogs",
|
|
1526
|
+
path: {
|
|
1527
|
+
"taskId": taskId
|
|
1528
|
+
}
|
|
1529
|
+
});
|
|
1530
|
+
}
|
|
1531
|
+
updateTaskOutput(taskId, requestBody, complete = false) {
|
|
1532
|
+
return this.httpRequest.request({
|
|
1533
|
+
method: "POST",
|
|
1534
|
+
url: "/human/tasks/{taskId}/update",
|
|
1535
|
+
path: {
|
|
1536
|
+
"taskId": taskId
|
|
1537
|
+
},
|
|
1538
|
+
query: {
|
|
1539
|
+
"complete": complete
|
|
1540
|
+
},
|
|
1541
|
+
body: requestBody,
|
|
1542
|
+
mediaType: "application/json"
|
|
1543
|
+
});
|
|
1544
|
+
}
|
|
1545
|
+
deleteTemplatesByName(name) {
|
|
1546
|
+
return this.httpRequest.request({
|
|
1547
|
+
method: "DELETE",
|
|
1548
|
+
url: "/human/template",
|
|
1549
|
+
query: {
|
|
1550
|
+
"name": name
|
|
1551
|
+
}
|
|
1552
|
+
});
|
|
1553
|
+
}
|
|
1554
|
+
getAllTemplates(name, version) {
|
|
1555
|
+
return this.httpRequest.request({
|
|
1556
|
+
method: "GET",
|
|
1557
|
+
url: "/human/template",
|
|
1558
|
+
query: {
|
|
1559
|
+
"name": name,
|
|
1560
|
+
"version": version
|
|
1561
|
+
}
|
|
1562
|
+
});
|
|
1563
|
+
}
|
|
1564
|
+
saveTemplate(requestBody, newVersion = false) {
|
|
1565
|
+
return this.httpRequest.request({
|
|
1566
|
+
method: "POST",
|
|
1567
|
+
url: "/human/template",
|
|
1568
|
+
query: {
|
|
1569
|
+
"newVersion": newVersion
|
|
1570
|
+
},
|
|
1571
|
+
body: requestBody,
|
|
1572
|
+
mediaType: "application/json"
|
|
1573
|
+
});
|
|
1574
|
+
}
|
|
1575
|
+
deleteTemplateById(id) {
|
|
1576
|
+
return this.httpRequest.request({
|
|
1577
|
+
method: "DELETE",
|
|
1578
|
+
url: "/human/template/{id}",
|
|
1579
|
+
path: {
|
|
1580
|
+
"id": id
|
|
1581
|
+
}
|
|
1582
|
+
});
|
|
1583
|
+
}
|
|
1584
|
+
getTemplateById(id) {
|
|
1585
|
+
return this.httpRequest.request({
|
|
1586
|
+
method: "GET",
|
|
1587
|
+
url: "/human/template/{id}",
|
|
1588
|
+
path: {
|
|
1589
|
+
"id": id
|
|
1590
|
+
}
|
|
1591
|
+
});
|
|
1592
|
+
}
|
|
1593
|
+
};
|
|
1594
|
+
|
|
1595
|
+
// src/common/open-api/services/HumanTaskResourceService.ts
|
|
1596
|
+
var HumanTaskResourceService = class {
|
|
1597
|
+
constructor(httpRequest) {
|
|
1598
|
+
this.httpRequest = httpRequest;
|
|
1599
|
+
}
|
|
1600
|
+
getConductorTaskById(taskId) {
|
|
1601
|
+
return this.httpRequest.request({
|
|
1602
|
+
method: "GET",
|
|
1603
|
+
url: "/human/tasks/{taskId}/conductorTask",
|
|
1604
|
+
path: {
|
|
1605
|
+
"taskId": taskId
|
|
1606
|
+
}
|
|
1607
|
+
});
|
|
1608
|
+
}
|
|
1609
|
+
};
|
|
1610
|
+
|
|
1389
1611
|
// src/common/open-api/ConductorClient.ts
|
|
1390
1612
|
var defaultRequestHandler = (request2, config, options) => request2(config, options);
|
|
1391
1613
|
var ConductorClient = class {
|
|
@@ -1416,6 +1638,8 @@ var ConductorClient = class {
|
|
|
1416
1638
|
this.tokenResource = new TokenResourceService(this.request);
|
|
1417
1639
|
this.workflowBulkResource = new WorkflowBulkResourceService(this.request);
|
|
1418
1640
|
this.workflowResource = new WorkflowResourceService(this.request);
|
|
1641
|
+
this.humanTask = new HumanTaskService(this.request);
|
|
1642
|
+
this.humanTaskResource = new HumanTaskResourceService(this.request);
|
|
1419
1643
|
}
|
|
1420
1644
|
};
|
|
1421
1645
|
|
|
@@ -1543,7 +1767,7 @@ var generateHTTPTask = (overrides = {}) => __spreadProps(__spreadValues(__spread
|
|
|
1543
1767
|
// src/common/generators/InlineTask.ts
|
|
1544
1768
|
var defaultInputParams = {
|
|
1545
1769
|
value: "${workflow.input.value}",
|
|
1546
|
-
evaluatorType: "
|
|
1770
|
+
evaluatorType: "graaljs",
|
|
1547
1771
|
expression: "true"
|
|
1548
1772
|
};
|
|
1549
1773
|
var generateEvaluationCode = (inputParametersPartial = {}) => {
|
|
@@ -1553,15 +1777,15 @@ var generateEvaluationCode = (inputParametersPartial = {}) => {
|
|
|
1553
1777
|
const resultingFunction = inlineExpression();
|
|
1554
1778
|
const resultingFunctionAsString = resultingFunction.toString();
|
|
1555
1779
|
const toReturn = __spreadProps(__spreadValues({
|
|
1556
|
-
evaluatorType: "
|
|
1780
|
+
evaluatorType: "graaljs"
|
|
1557
1781
|
}, inputParametersPartial || { value: "true" }), {
|
|
1558
1782
|
expression: `(${resultingFunctionAsString})();`
|
|
1559
1783
|
});
|
|
1560
1784
|
return toReturn;
|
|
1561
1785
|
}
|
|
1562
|
-
return __spreadProps(__spreadValues(
|
|
1563
|
-
evaluatorType: "
|
|
1564
|
-
});
|
|
1786
|
+
return __spreadValues(__spreadProps(__spreadValues({}, defaultInputParams), {
|
|
1787
|
+
evaluatorType: "graaljs"
|
|
1788
|
+
}), inputParametersPartial);
|
|
1565
1789
|
};
|
|
1566
1790
|
var generateInlineTask = (override = {}) => __spreadProps(__spreadValues(__spreadValues({}, nameTaskNameGenerator("inline", override)), override), {
|
|
1567
1791
|
inputParameters: generateEvaluationCode(override?.inputParameters || {}),
|
|
@@ -1926,6 +2150,13 @@ var workflow = (name, tasks) => ({
|
|
|
1926
2150
|
timeoutSeconds: 0
|
|
1927
2151
|
});
|
|
1928
2152
|
|
|
2153
|
+
// src/common/open-api/core/BaseHttpRequest.ts
|
|
2154
|
+
var BaseHttpRequest = class {
|
|
2155
|
+
constructor(config) {
|
|
2156
|
+
this.config = config;
|
|
2157
|
+
}
|
|
2158
|
+
};
|
|
2159
|
+
|
|
1929
2160
|
// src/task/TaskManager.ts
|
|
1930
2161
|
var defaultManagerOptions = {
|
|
1931
2162
|
workerID: "",
|
|
@@ -1993,16 +2224,8 @@ var ConductorError = class extends Error {
|
|
|
1993
2224
|
}
|
|
1994
2225
|
}
|
|
1995
2226
|
};
|
|
1996
|
-
var TaskResult = /* @__PURE__ */ ((TaskResult3) => {
|
|
1997
|
-
TaskResult3["IN_PROGRESS"] = "IN_PROGRESS";
|
|
1998
|
-
TaskResult3["FAILED"] = "FAILED";
|
|
1999
|
-
TaskResult3["FAILED_WITH_TERMINAL_ERROR"] = "FAILED_WITH_TERMINAL_ERROR";
|
|
2000
|
-
TaskResult3["COMPLETED"] = "COMPLETED";
|
|
2001
|
-
return TaskResult3;
|
|
2002
|
-
})(TaskResult || {});
|
|
2003
2227
|
|
|
2004
|
-
// src/core/
|
|
2005
|
-
var RETRY_TIME_IN_MILLISECONDS = 1e4;
|
|
2228
|
+
// src/core/helpers.ts
|
|
2006
2229
|
var errorMapper = (error) => new ConductorError(error?.body?.message, error);
|
|
2007
2230
|
var tryCatchReThrow = (fn) => {
|
|
2008
2231
|
try {
|
|
@@ -2011,6 +2234,9 @@ var tryCatchReThrow = (fn) => {
|
|
|
2011
2234
|
throw errorMapper(error);
|
|
2012
2235
|
}
|
|
2013
2236
|
};
|
|
2237
|
+
|
|
2238
|
+
// src/core/executor.ts
|
|
2239
|
+
var RETRY_TIME_IN_MILLISECONDS = 1e4;
|
|
2014
2240
|
var WorkflowExecutor = class {
|
|
2015
2241
|
constructor(client) {
|
|
2016
2242
|
this._client = client;
|
|
@@ -2021,6 +2247,9 @@ var WorkflowExecutor = class {
|
|
|
2021
2247
|
startWorkflow(workflowRequest) {
|
|
2022
2248
|
return tryCatchReThrow(() => this._client.workflowResource.startWorkflow(workflowRequest));
|
|
2023
2249
|
}
|
|
2250
|
+
executeWorkflow(workflowRequest, name, version, requestId, waitUntilTaskRef = "") {
|
|
2251
|
+
return tryCatchReThrow(() => this._client.workflowResource.executeWorkflow(workflowRequest, name, version, requestId, waitUntilTaskRef));
|
|
2252
|
+
}
|
|
2024
2253
|
startWorkflows(workflowsRequest) {
|
|
2025
2254
|
return tryCatchReThrow(() => workflowsRequest.map(this.startWorkflow));
|
|
2026
2255
|
}
|
|
@@ -2064,30 +2293,100 @@ var WorkflowExecutor = class {
|
|
|
2064
2293
|
terminate(workflowInstanceId, reason) {
|
|
2065
2294
|
return tryCatchReThrow(() => this._client.workflowResource.terminate1(workflowInstanceId, reason));
|
|
2066
2295
|
}
|
|
2067
|
-
updateTask(taskId, workflowInstanceId, taskStatus,
|
|
2296
|
+
updateTask(taskId, workflowInstanceId, taskStatus, outputData) {
|
|
2068
2297
|
const taskUpdates = {
|
|
2069
2298
|
status: taskStatus,
|
|
2070
2299
|
taskId,
|
|
2071
2300
|
workflowInstanceId
|
|
2072
2301
|
};
|
|
2073
|
-
return tryCatchReThrow(() => this._client.taskResource.updateTask1(__spreadValues(
|
|
2302
|
+
return tryCatchReThrow(() => this._client.taskResource.updateTask1(__spreadValues({
|
|
2303
|
+
outputData
|
|
2304
|
+
}, taskUpdates)));
|
|
2074
2305
|
}
|
|
2075
2306
|
updateTaskByRefName(taskReferenceName, workflowInstanceId, status, taskOutput) {
|
|
2076
2307
|
return tryCatchReThrow(() => this._client.taskResource.updateTask(workflowInstanceId, taskReferenceName, status, taskOutput));
|
|
2077
2308
|
}
|
|
2309
|
+
getTask(taskId) {
|
|
2310
|
+
return tryCatchReThrow(() => this._client.taskResource.getTask(taskId));
|
|
2311
|
+
}
|
|
2312
|
+
};
|
|
2313
|
+
|
|
2314
|
+
// src/core/human.ts
|
|
2315
|
+
var HumanExecutor = class {
|
|
2316
|
+
constructor(client) {
|
|
2317
|
+
this._client = client;
|
|
2318
|
+
}
|
|
2319
|
+
async getTasksByFilter(state, assignee, assigneeType, claimedBy, taskName, freeText, includeInputOutput = false) {
|
|
2320
|
+
const response = await this._client.humanTask.getTasksByFilter(state, assignee, assigneeType, claimedBy, taskName, freeText, includeInputOutput);
|
|
2321
|
+
if (response.results != void 0) {
|
|
2322
|
+
return response.results;
|
|
2323
|
+
}
|
|
2324
|
+
return [];
|
|
2325
|
+
}
|
|
2326
|
+
getTaskById(taskId) {
|
|
2327
|
+
return tryCatchReThrow(() => this._client.humanTask.getTask1(taskId));
|
|
2328
|
+
}
|
|
2329
|
+
async claimTaskAsExternalUser(taskId, assignee) {
|
|
2330
|
+
try {
|
|
2331
|
+
await this._client.humanTask.assignAndClaim(taskId, assignee);
|
|
2332
|
+
} catch (error) {
|
|
2333
|
+
throw errorMapper(error);
|
|
2334
|
+
}
|
|
2335
|
+
}
|
|
2336
|
+
async claimTaskAsConductorUser(taskId) {
|
|
2337
|
+
try {
|
|
2338
|
+
await this._client.humanTask.claimTask(taskId);
|
|
2339
|
+
} catch (error) {
|
|
2340
|
+
throw errorMapper(error);
|
|
2341
|
+
}
|
|
2342
|
+
}
|
|
2343
|
+
async releaseTask(taskId) {
|
|
2344
|
+
try {
|
|
2345
|
+
await this._client.humanTask.releaseTask(taskId);
|
|
2346
|
+
} catch (error) {
|
|
2347
|
+
throw errorMapper(error);
|
|
2348
|
+
}
|
|
2349
|
+
}
|
|
2350
|
+
async getTemplateById(templateId) {
|
|
2351
|
+
return tryCatchReThrow(() => this._client.humanTask.getTemplateById(templateId));
|
|
2352
|
+
}
|
|
2353
|
+
async updateTaskOutput(taskId, requestBody) {
|
|
2354
|
+
try {
|
|
2355
|
+
await this._client.humanTask.updateTaskOutput(taskId, requestBody, false);
|
|
2356
|
+
} catch (error) {
|
|
2357
|
+
throw errorMapper(error);
|
|
2358
|
+
}
|
|
2359
|
+
}
|
|
2360
|
+
async completeTask(taskId, requestBody = {}) {
|
|
2361
|
+
try {
|
|
2362
|
+
await this._client.humanTask.updateTaskOutput(taskId, requestBody, true);
|
|
2363
|
+
} catch (error) {
|
|
2364
|
+
throw errorMapper(error);
|
|
2365
|
+
}
|
|
2366
|
+
}
|
|
2078
2367
|
};
|
|
2079
2368
|
// Annotate the CommonJS export names for ESM import in node:
|
|
2080
2369
|
0 && (module.exports = {
|
|
2370
|
+
ApiError,
|
|
2371
|
+
BaseHttpRequest,
|
|
2081
2372
|
CancelError,
|
|
2082
2373
|
CancelablePromise,
|
|
2083
2374
|
ConductorClient,
|
|
2084
2375
|
ConductorError,
|
|
2085
2376
|
DefaultLogger,
|
|
2377
|
+
EventResourceService,
|
|
2378
|
+
HealthCheckResourceService,
|
|
2379
|
+
HumanExecutor,
|
|
2380
|
+
MetadataResourceService,
|
|
2381
|
+
SchedulerResourceService,
|
|
2086
2382
|
TaskManager,
|
|
2087
|
-
|
|
2383
|
+
TaskResourceService,
|
|
2088
2384
|
TaskRunner,
|
|
2089
2385
|
TaskType,
|
|
2386
|
+
TokenResourceService,
|
|
2387
|
+
WorkflowBulkResourceService,
|
|
2090
2388
|
WorkflowExecutor,
|
|
2389
|
+
WorkflowResourceService,
|
|
2091
2390
|
conductorEventTask,
|
|
2092
2391
|
doWhileTask,
|
|
2093
2392
|
dynamicForkTask,
|