From 4cb9e32230c2b357adea2868821c86227b056887 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tayfun=20Y=C4=B1lmaz?= Date: Wed, 14 Jan 2026 00:41:22 +0300 Subject: [PATCH] Switch Mockoon URLs to localhost and add GetInstances test Replaced all 'mockoon:3001' URLs with 'localhost:3001' in task and workflow files for local development compatibility. Added new GetInstances task, mapping, and test to support instance filtering and pagination in the task-test workflow. Updated error boundary workflow transitions and initial transition mapping to include the new test. --- .../account-opening/create-bank-account.json | 2 +- .../validate-account-policies.json | 2 +- .../contract/get-contract-documents.json | 2 +- core/Tasks/contract/render-document.json | 2 +- .../oauth/check-device-registration.json | 2 +- core/Tasks/oauth/check-push-response.json | 2 +- core/Tasks/oauth/generate-tokens.json | 2 +- core/Tasks/oauth/register-device.json | 2 +- core/Tasks/oauth/send-otp-notification.json | 2 +- core/Tasks/oauth/send-push-notification.json | 2 +- .../oauth/validate-authorization-code.json | 2 +- core/Tasks/oauth/validate-client.json | 2 +- .../oauth/validate-user-credentials.json | 2 +- core/Tasks/oauth/verify-otp-code.json | 2 +- .../payments/activate-payment-schedule.json | 2 +- .../payments/archive-payment-record.json | 2 +- .../payments/deactivate-payment-schedule.json | 2 +- core/Tasks/payments/get-user-info.json | 2 +- .../payments/increment-retry-counter.json | 2 +- core/Tasks/payments/process-payment.json | 2 +- .../payments/save-payment-configuration.json | 2 +- .../send-payment-notification-sms.json | 2 +- .../send-payment-push-notification.json | 2 +- .../task-test/error-boundary-abort-task.json | 2 +- .../task-test/error-boundary-ignore-task.json | 2 +- .../task-test/error-boundary-retry-task.json | 2 +- .../error-boundary-success-task.json | 2 +- .../error-boundary-timeout-task.json | 2 +- core/Tasks/task-test/test-get-instances.json | 26 ++ core/Tasks/task-test/test-http-items.json | 2 +- core/Tasks/task-test/test-http-task.json | 2 +- .../account-opening-workflow.http | 2 +- .../contract/contract-approval-workflow.http | 8 +- .../oauth/oauth-authentication-workflow.http | 2 +- .../scheduled-payments-workflow.diagram.json | 32 +++ .../payments/scheduled-payments-workflow.http | 2 +- .../error-boundary-test-workflow.json | 24 +- .../task-test/src/GetInstanceDataMapping.csx | 8 +- .../task-test/src/GetInstancesMapping.csx | 220 +++++++++++++++ .../src/InitialTransitionMapping.csx | 1 + .../task-test/task-test-workflow.http | 8 +- .../task-test/task-test-workflow.json | 67 ++++- ...xt Example Runtime.postman_collection.json | 259 +++++++++++++++++- 43 files changed, 641 insertions(+), 78 deletions(-) create mode 100644 core/Tasks/task-test/test-get-instances.json create mode 100644 core/Workflows/payments/.meta/scheduled-payments-workflow.diagram.json create mode 100644 core/Workflows/task-test/src/GetInstancesMapping.csx diff --git a/core/Tasks/account-opening/create-bank-account.json b/core/Tasks/account-opening/create-bank-account.json index 65c40d5..7d16122 100644 --- a/core/Tasks/account-opening/create-bank-account.json +++ b/core/Tasks/account-opening/create-bank-account.json @@ -14,7 +14,7 @@ "attributes": { "type": "6", "config": { - "url": "http://mockoon:3001/api/banking/accounts/create", + "url": "http://localhost:3001/api/banking/accounts/create", "method": "POST", "headers": { "Content-Type": "application/json" diff --git a/core/Tasks/account-opening/validate-account-policies.json b/core/Tasks/account-opening/validate-account-policies.json index 94304c4..98ef730 100644 --- a/core/Tasks/account-opening/validate-account-policies.json +++ b/core/Tasks/account-opening/validate-account-policies.json @@ -14,7 +14,7 @@ "attributes": { "type": "6", "config": { - "url": "http://mockoon:3001/api/banking/policies/validate-account-opening", + "url": "http://localhost:3001/api/banking/policies/validate-account-opening", "method": "POST", "headers": { "Content-Type": "application/json" diff --git a/core/Tasks/contract/get-contract-documents.json b/core/Tasks/contract/get-contract-documents.json index c97ef7d..6af2cec 100644 --- a/core/Tasks/contract/get-contract-documents.json +++ b/core/Tasks/contract/get-contract-documents.json @@ -13,7 +13,7 @@ "attributes": { "type": "6", "config": { - "url": "http://mockoon:3001/api/contract/get-documents", + "url": "http://localhost:3001/api/contract/get-documents", "method": "POST", "headers": { "Content-Type": "application/json" diff --git a/core/Tasks/contract/render-document.json b/core/Tasks/contract/render-document.json index 496294d..1ca4f4c 100644 --- a/core/Tasks/contract/render-document.json +++ b/core/Tasks/contract/render-document.json @@ -13,7 +13,7 @@ "attributes": { "type": "6", "config": { - "url": "http://mockoon:3001/api/contract/render-document", + "url": "http://localhost:3001/api/contract/render-document", "method": "POST", "headers": { "Content-Type": "application/json" diff --git a/core/Tasks/oauth/check-device-registration.json b/core/Tasks/oauth/check-device-registration.json index 6736ac4..e8b4414 100644 --- a/core/Tasks/oauth/check-device-registration.json +++ b/core/Tasks/oauth/check-device-registration.json @@ -14,7 +14,7 @@ "attributes": { "type": "6", "config": { - "url": "http://mockoon:3001/api/oauth2/devices/check/", + "url": "http://localhost:3001/api/oauth2/devices/check/", "method": "GET", "headers": { "Content-Type": "application/json" diff --git a/core/Tasks/oauth/check-push-response.json b/core/Tasks/oauth/check-push-response.json index 91865b0..fd90b2e 100644 --- a/core/Tasks/oauth/check-push-response.json +++ b/core/Tasks/oauth/check-push-response.json @@ -14,7 +14,7 @@ "attributes": { "type": "6", "config": { - "url": "http://mockoon:3001/api/oauth2/push/status", + "url": "http://localhost:3001/api/oauth2/push/status", "method": "POST", "headers": { "Content-Type": "application/json" diff --git a/core/Tasks/oauth/generate-tokens.json b/core/Tasks/oauth/generate-tokens.json index caa1fe9..4a7a1c3 100644 --- a/core/Tasks/oauth/generate-tokens.json +++ b/core/Tasks/oauth/generate-tokens.json @@ -14,7 +14,7 @@ "attributes": { "type": "6", "config": { - "url": "http://mockoon:3001/api/oauth2/tokens/generate", + "url": "http://localhost:3001/api/oauth2/tokens/generate", "method": "POST", "headers": { "Content-Type": "application/json" diff --git a/core/Tasks/oauth/register-device.json b/core/Tasks/oauth/register-device.json index 14eada0..78bf3c4 100644 --- a/core/Tasks/oauth/register-device.json +++ b/core/Tasks/oauth/register-device.json @@ -14,7 +14,7 @@ "attributes": { "type": "6", "config": { - "url": "http://mockoon:3001/api/oauth2/devices/register", + "url": "http://localhost:3001/api/oauth2/devices/register", "method": "POST", "headers": { "Content-Type": "application/json" diff --git a/core/Tasks/oauth/send-otp-notification.json b/core/Tasks/oauth/send-otp-notification.json index 26770e5..907e43a 100644 --- a/core/Tasks/oauth/send-otp-notification.json +++ b/core/Tasks/oauth/send-otp-notification.json @@ -15,7 +15,7 @@ "attributes": { "type": "6", "config": { - "url": "http://mockoon:3001/api/oauth2/otp/send", + "url": "http://localhost:3001/api/oauth2/otp/send", "method": "POST", "headers": { "Content-Type": "application/json" diff --git a/core/Tasks/oauth/send-push-notification.json b/core/Tasks/oauth/send-push-notification.json index 4278c11..3cbcd1e 100644 --- a/core/Tasks/oauth/send-push-notification.json +++ b/core/Tasks/oauth/send-push-notification.json @@ -14,7 +14,7 @@ "attributes": { "type": "6", "config": { - "url": "http://mockoon:3001/api/oauth2/push/send", + "url": "http://localhost:3001/api/oauth2/push/send", "method": "POST", "headers": { "Content-Type": "application/json" diff --git a/core/Tasks/oauth/validate-authorization-code.json b/core/Tasks/oauth/validate-authorization-code.json index a0c3491..50eea10 100644 --- a/core/Tasks/oauth/validate-authorization-code.json +++ b/core/Tasks/oauth/validate-authorization-code.json @@ -14,7 +14,7 @@ "attributes": { "type": "6", "config": { - "url": "http://mockoon:3001/api/oauth2/user/validate-authorization-code", + "url": "http://localhost:3001/api/oauth2/user/validate-authorization-code", "method": "POST", "headers": { "Content-Type": "application/json" diff --git a/core/Tasks/oauth/validate-client.json b/core/Tasks/oauth/validate-client.json index 7cbe900..5b1c580 100644 --- a/core/Tasks/oauth/validate-client.json +++ b/core/Tasks/oauth/validate-client.json @@ -13,7 +13,7 @@ "attributes": { "type": "6", "config": { - "url": "http://mockoon:3001/api/oauth2/client/validate", + "url": "http://localhost:3001/api/oauth2/client/validate", "method": "POST", "headers": { "Content-Type": "application/json" diff --git a/core/Tasks/oauth/validate-user-credentials.json b/core/Tasks/oauth/validate-user-credentials.json index 82f2a40..cc4150a 100644 --- a/core/Tasks/oauth/validate-user-credentials.json +++ b/core/Tasks/oauth/validate-user-credentials.json @@ -14,7 +14,7 @@ "attributes": { "type": "6", "config": { - "url": "http://mockoon:3001/api/oauth2/user/authenticate", + "url": "http://localhost:3001/api/oauth2/user/authenticate", "method": "POST", "headers": { "Content-Type": "application/json" diff --git a/core/Tasks/oauth/verify-otp-code.json b/core/Tasks/oauth/verify-otp-code.json index 861b867..a74759a 100644 --- a/core/Tasks/oauth/verify-otp-code.json +++ b/core/Tasks/oauth/verify-otp-code.json @@ -14,7 +14,7 @@ "attributes": { "type": "6", "config": { - "url": "http://mockoon:3001/api/oauth2/otp/verify", + "url": "http://localhost:3001/api/oauth2/otp/verify", "method": "POST", "headers": { "Content-Type": "application/json" diff --git a/core/Tasks/payments/activate-payment-schedule.json b/core/Tasks/payments/activate-payment-schedule.json index 6556187..61eed63 100644 --- a/core/Tasks/payments/activate-payment-schedule.json +++ b/core/Tasks/payments/activate-payment-schedule.json @@ -13,7 +13,7 @@ "attributes": { "type": "6", "config": { - "url": "http://mockoon:3001/api/payments/schedules/{scheduleId}/activate", + "url": "http://localhost:3001/api/payments/schedules/{scheduleId}/activate", "method": "PATCH", "headers": { "Content-Type": "application/json" diff --git a/core/Tasks/payments/archive-payment-record.json b/core/Tasks/payments/archive-payment-record.json index 1149578..64f9d05 100644 --- a/core/Tasks/payments/archive-payment-record.json +++ b/core/Tasks/payments/archive-payment-record.json @@ -13,7 +13,7 @@ "attributes": { "type": "6", "config": { - "url": "http://mockoon:3001/api/payments/schedules/{scheduleId}/archive", + "url": "http://localhost:3001/api/payments/schedules/{scheduleId}/archive", "method": "POST", "headers": { "Content-Type": "application/json" diff --git a/core/Tasks/payments/deactivate-payment-schedule.json b/core/Tasks/payments/deactivate-payment-schedule.json index 222962c..2c10b5c 100644 --- a/core/Tasks/payments/deactivate-payment-schedule.json +++ b/core/Tasks/payments/deactivate-payment-schedule.json @@ -13,7 +13,7 @@ "attributes": { "type": "6", "config": { - "url": "http://mockoon:3001/api/payments/schedules/{scheduleId}/deactivate", + "url": "http://localhost:3001/api/payments/schedules/{scheduleId}/deactivate", "method": "PATCH", "headers": { "Content-Type": "application/json" diff --git a/core/Tasks/payments/get-user-info.json b/core/Tasks/payments/get-user-info.json index cacd2e7..628989a 100644 --- a/core/Tasks/payments/get-user-info.json +++ b/core/Tasks/payments/get-user-info.json @@ -14,7 +14,7 @@ "type": "6", "config": { "method": "GET", - "url": "http://mockoon:3001/api/payments/users/{userId}", + "url": "http://localhost:3001/api/payments/users/{userId}", "headers": { "Content-Type": "application/json" }, diff --git a/core/Tasks/payments/increment-retry-counter.json b/core/Tasks/payments/increment-retry-counter.json index 43459b9..6cc7eb1 100644 --- a/core/Tasks/payments/increment-retry-counter.json +++ b/core/Tasks/payments/increment-retry-counter.json @@ -13,7 +13,7 @@ "attributes": { "type": "6", "config": { - "url": "http://mockoon:3001/api/payments/schedules/{scheduleId}/retry", + "url": "http://localhost:3001/api/payments/schedules/{scheduleId}/retry", "method": "PATCH", "headers": { "Content-Type": "application/json" diff --git a/core/Tasks/payments/process-payment.json b/core/Tasks/payments/process-payment.json index 3e1eb58..7e0349d 100644 --- a/core/Tasks/payments/process-payment.json +++ b/core/Tasks/payments/process-payment.json @@ -13,7 +13,7 @@ "attributes": { "type": "6", "config": { - "url": "http://mockoon:3001/api/payments/process", + "url": "http://localhost:3001/api/payments/process", "method": "POST", "headers": { "Content-Type": "application/json" diff --git a/core/Tasks/payments/save-payment-configuration.json b/core/Tasks/payments/save-payment-configuration.json index 22fb6aa..e735ab0 100644 --- a/core/Tasks/payments/save-payment-configuration.json +++ b/core/Tasks/payments/save-payment-configuration.json @@ -13,7 +13,7 @@ "attributes": { "type": "6", "config": { - "url": "http://mockoon:3001/api/payments/schedules", + "url": "http://localhost:3001/api/payments/schedules", "method": "POST", "headers": { "Content-Type": "application/json" diff --git a/core/Tasks/payments/send-payment-notification-sms.json b/core/Tasks/payments/send-payment-notification-sms.json index 90af20d..45ebb56 100644 --- a/core/Tasks/payments/send-payment-notification-sms.json +++ b/core/Tasks/payments/send-payment-notification-sms.json @@ -14,7 +14,7 @@ "type": "6", "config": { "method": "POST", - "url": "http://mockoon:3001/api/payments/notify/sms", + "url": "http://localhost:3001/api/payments/notify/sms", "headers": { "Content-Type": "application/json" }, diff --git a/core/Tasks/payments/send-payment-push-notification.json b/core/Tasks/payments/send-payment-push-notification.json index 558699d..e2df447 100644 --- a/core/Tasks/payments/send-payment-push-notification.json +++ b/core/Tasks/payments/send-payment-push-notification.json @@ -15,7 +15,7 @@ "type": "6", "config": { "method": "POST", - "url": "http://mockoon:3001/api/payments/notify/push", + "url": "http://localhost:3001/api/payments/notify/push", "headers": { "Content-Type": "application/json" }, diff --git a/core/Tasks/task-test/error-boundary-abort-task.json b/core/Tasks/task-test/error-boundary-abort-task.json index 905791c..2a9bcd4 100644 --- a/core/Tasks/task-test/error-boundary-abort-task.json +++ b/core/Tasks/task-test/error-boundary-abort-task.json @@ -14,7 +14,7 @@ "attributes": { "type": "6", "config": { - "url": "http://mockoon:3001/api/error-boundary/simulate-500", + "url": "http://localhost:3001/api/error-boundary/simulate-500", "method": "POST", "headers": { "Content-Type": "application/json" diff --git a/core/Tasks/task-test/error-boundary-ignore-task.json b/core/Tasks/task-test/error-boundary-ignore-task.json index 1edc20e..208795e 100644 --- a/core/Tasks/task-test/error-boundary-ignore-task.json +++ b/core/Tasks/task-test/error-boundary-ignore-task.json @@ -14,7 +14,7 @@ "attributes": { "type": "6", "config": { - "url": "http://mockoon:3001/api/error-boundary/simulate-400", + "url": "http://localhost:3001/api/error-boundary/simulate-400", "method": "POST", "headers": { "Content-Type": "application/json" diff --git a/core/Tasks/task-test/error-boundary-retry-task.json b/core/Tasks/task-test/error-boundary-retry-task.json index e565bc6..773beae 100644 --- a/core/Tasks/task-test/error-boundary-retry-task.json +++ b/core/Tasks/task-test/error-boundary-retry-task.json @@ -14,7 +14,7 @@ "attributes": { "type": "6", "config": { - "url": "http://mockoon:3001/api/error-boundary/simulate-503", + "url": "http://localhost:3001/api/error-boundary/simulate-503", "method": "POST", "headers": { "Content-Type": "application/json" diff --git a/core/Tasks/task-test/error-boundary-success-task.json b/core/Tasks/task-test/error-boundary-success-task.json index 2c12304..9f4e85a 100644 --- a/core/Tasks/task-test/error-boundary-success-task.json +++ b/core/Tasks/task-test/error-boundary-success-task.json @@ -13,7 +13,7 @@ "attributes": { "type": "6", "config": { - "url": "http://mockoon:3001/api/error-boundary/simulate-success", + "url": "http://localhost:3001/api/error-boundary/simulate-success", "method": "POST", "headers": { "Content-Type": "application/json" diff --git a/core/Tasks/task-test/error-boundary-timeout-task.json b/core/Tasks/task-test/error-boundary-timeout-task.json index 0e0f7b5..7e33120 100644 --- a/core/Tasks/task-test/error-boundary-timeout-task.json +++ b/core/Tasks/task-test/error-boundary-timeout-task.json @@ -13,7 +13,7 @@ "attributes": { "type": "6", "config": { - "url": "http://mockoon:3001/api/error-boundary/simulate-timeout", + "url": "http://localhost:3001/api/error-boundary/simulate-timeout", "method": "POST", "headers": { "Content-Type": "application/json" diff --git a/core/Tasks/task-test/test-get-instances.json b/core/Tasks/task-test/test-get-instances.json new file mode 100644 index 0000000..167d43a --- /dev/null +++ b/core/Tasks/task-test/test-get-instances.json @@ -0,0 +1,26 @@ +{ + "key": "test-get-instances", + "version": "1.0.0", + "domain": "core", + "flow": "sys-tasks", + "flowVersion": "1.0.0", + "tags": [ + "task-test", + "instances", + "workflow-communication", + "data-fetch", + "filter-test", + "pagination" + ], + "attributes": { + "type": "15", + "config": { + "domain": "core", + "flow": "task-test-subflow", + "page": 1, + "pageSize": 10, + "sort": "-CreatedAt" + } + } +} + diff --git a/core/Tasks/task-test/test-http-items.json b/core/Tasks/task-test/test-http-items.json index d6b1f87..7cb237d 100644 --- a/core/Tasks/task-test/test-http-items.json +++ b/core/Tasks/task-test/test-http-items.json @@ -13,7 +13,7 @@ "attributes": { "type": "6", "config": { - "url": "http://mockoon:3001/api/task-test/list-items", + "url": "http://localhost:3001/api/task-test/list-items", "method": "POST", "headers": { "Content-Type": "application/json" diff --git a/core/Tasks/task-test/test-http-task.json b/core/Tasks/task-test/test-http-task.json index 189e599..2b3977c 100644 --- a/core/Tasks/task-test/test-http-task.json +++ b/core/Tasks/task-test/test-http-task.json @@ -13,7 +13,7 @@ "attributes": { "type": "6", "config": { - "url": "http://mockoon:3001/api/task-test/http-endpoint", + "url": "http://localhost:3001/api/task-test/http-endpoint", "method": "POST", "headers": { "Content-Type": "application/json" diff --git a/core/Workflows/account-opening/account-opening-workflow.http b/core/Workflows/account-opening/account-opening-workflow.http index d871c05..88259b4 100644 --- a/core/Workflows/account-opening/account-opening-workflow.http +++ b/core/Workflows/account-opening/account-opening-workflow.http @@ -10,7 +10,7 @@ # # Prerequisites: # 1. vNext Runtime running on localhost:4201 -# 2. Mockoon running on mockoon:3001 +# 2. Mockoon running on localhost:3001 ############################################################################### @baseUrl = http://localhost:4201 diff --git a/core/Workflows/contract/contract-approval-workflow.http b/core/Workflows/contract/contract-approval-workflow.http index 80f7ace..4ab3145 100644 --- a/core/Workflows/contract/contract-approval-workflow.http +++ b/core/Workflows/contract/contract-approval-workflow.http @@ -10,7 +10,7 @@ # # Prerequisites: # 1. vNext Runtime running on localhost:4201 -# 2. Mockoon running on mockoon:3001 +# 2. Mockoon running on localhost:3001 ############################################################################### @baseUrl = http://localhost:4201 @@ -163,11 +163,11 @@ Accept: application/json ############################################################################### ### Test Get Contract Documents (Mockoon) -GET http://mockoon:3001/api/contract/documents?groupCode=KG-2024-001 +GET http://localhost:3001/api/contract/documents?groupCode=KG-2024-001 Accept: application/json ### Test Render Document (Mockoon) -POST http://mockoon:3001/api/contract/documents/render +POST http://localhost:3001/api/contract/documents/render Content-Type: application/json { @@ -177,7 +177,7 @@ Content-Type: application/json } ### Test Notify Document Approved (Mockoon) -POST http://mockoon:3001/api/contract/documents/notify-approved +POST http://localhost:3001/api/contract/documents/notify-approved Content-Type: application/json { diff --git a/core/Workflows/oauth/oauth-authentication-workflow.http b/core/Workflows/oauth/oauth-authentication-workflow.http index 6a5a2b7..e90ef7d 100644 --- a/core/Workflows/oauth/oauth-authentication-workflow.http +++ b/core/Workflows/oauth/oauth-authentication-workflow.http @@ -10,7 +10,7 @@ # # Prerequisites: # 1. vNext Runtime running on localhost:4201 -# 2. Mockoon running on mockoon:3001 +# 2. Mockoon running on localhost:3001 ############################################################################### @baseUrl = http://localhost:4201 diff --git a/core/Workflows/payments/.meta/scheduled-payments-workflow.diagram.json b/core/Workflows/payments/.meta/scheduled-payments-workflow.diagram.json new file mode 100644 index 0000000..199186c --- /dev/null +++ b/core/Workflows/payments/.meta/scheduled-payments-workflow.diagram.json @@ -0,0 +1,32 @@ +{ + "nodePos": { + "payment-configuration": { + "x": 189.28828058169375, + "y": 743.1864841745082 + }, + "payment-active": { + "x": 882.9101843237405, + "y": 413.81108221513176 + }, + "payment-deactive": { + "x": 100, + "y": 405 + }, + "payment-cycle-check": { + "x": 1098, + "y": 260 + }, + "payment-finished": { + "x": 1238, + "y": 460 + }, + "payment-terminated": { + "x": 873, + "y": 100 + }, + "__start__": { + "x": 100, + "y": 205 + } + } +} \ No newline at end of file diff --git a/core/Workflows/payments/scheduled-payments-workflow.http b/core/Workflows/payments/scheduled-payments-workflow.http index aabf056..26a23dd 100644 --- a/core/Workflows/payments/scheduled-payments-workflow.http +++ b/core/Workflows/payments/scheduled-payments-workflow.http @@ -10,7 +10,7 @@ # # Prerequisites: # 1. vNext Runtime running on localhost:4201 -# 2. Mockoon running on mockoon:3001 +# 2. Mockoon running on localhost:3001 ############################################################################### @baseUrl = http://localhost:4201 diff --git a/core/Workflows/task-test/error-boundary-test-workflow.json b/core/Workflows/task-test/error-boundary-test-workflow.json index cebb268..e3b0800 100644 --- a/core/Workflows/task-test/error-boundary-test-workflow.json +++ b/core/Workflows/task-test/error-boundary-test-workflow.json @@ -37,16 +37,7 @@ "action": 4, "priority": 999, "logOnly": false, - "notificationConfig": { - "channel": "email", - "recipients": [ - "admin@example.com", - "ops-team@example.com" - ], - "templateKey": "error-notification-template", - "includeErrorDetails": true, - "priority": "high" - } + "transition": "recovery-to-rollback" }, { "action": 5, @@ -228,7 +219,7 @@ "502", "503" ], - "transition": "rollback-state", + "transition": "recovery-to-rollback", "priority": 50 } ] @@ -529,16 +520,7 @@ { "action": 4, "priority": 100, - "notificationConfig": { - "channel": "sms", - "recipients": [ - "+905551234567" - ], - "templateKey": "critical-error-sms", - "includeErrorDetails": false, - "priority": "critical" - }, - "transition": "manual-review" + "transition": "review-approved" } ] }, diff --git a/core/Workflows/task-test/src/GetInstanceDataMapping.csx b/core/Workflows/task-test/src/GetInstanceDataMapping.csx index 3761c4c..4213717 100644 --- a/core/Workflows/task-test/src/GetInstanceDataMapping.csx +++ b/core/Workflows/task-test/src/GetInstanceDataMapping.csx @@ -2,6 +2,7 @@ using System; using System.Threading.Tasks; using BBT.Workflow.Definitions; using BBT.Workflow.Scripting; +using System.Text.Json; /// /// GetInstanceData Task Mapping - Retrieves data from another workflow instance @@ -24,7 +25,7 @@ public class GetInstanceDataMapping : IMapping getDataTask.SetFlow("task-test-workflow"); // Get data from current instance to verify extension data - var currentInstanceId = context.Instance?.Id?.ToString(); + var currentInstanceId = context.Instance?.Id.ToString(); if (!string.IsNullOrEmpty(currentInstanceId)) { getDataTask.SetInstance(currentInstanceId); @@ -61,10 +62,9 @@ public class GetInstanceDataMapping : IMapping getInstanceDataResult = new { success = true, - retrievedData = response?.data, - metadata = response?.metadata, + retrievedData = response?.data?.data, // Extension data will be here - test-http-data-extension response - extensionData = response?.extensions, + extensionData = response?.data?.extensions, retrievedAt = DateTime.UtcNow, taskType = "GetInstanceData", note = "Check extensionData field for test-http-data-extension results" diff --git a/core/Workflows/task-test/src/GetInstancesMapping.csx b/core/Workflows/task-test/src/GetInstancesMapping.csx new file mode 100644 index 0000000..06280a5 --- /dev/null +++ b/core/Workflows/task-test/src/GetInstancesMapping.csx @@ -0,0 +1,220 @@ +using System; +using System.Collections.Generic; +using System.Text.Json; +using System.Threading.Tasks; +using BBT.Workflow.Definitions; +using BBT.Workflow.Scripting; +using BBT.Workflow.Scripting.Functions; + +/// +/// GetInstances Task Mapping - Retrieves a list of workflow instances with filtering and pagination +/// Test case: Verify GetInstancesTask functionality including filter, pagination, and sorting +/// +/// Filter Format (GraphQL-like JSON structure): +/// ?filter={"attributes":{"fieldName":{"operator":"value"}}} +/// +/// Supported operators: eq, neq, gt, gte, lt, lte, contains, startsWith, endsWith +/// +/// Examples: +/// - Single filter: {"attributes":{"clientId":{"eq":122}}} +/// - Multiple filters: {"attributes":{"clientId":{"eq":122},"testValue":{"gt":2}}} +/// - String filter: {"attributes":{"status":{"eq":"active"}}} +/// +public class GetInstancesMapping : ScriptBase, IMapping +{ + public Task InputHandler(WorkflowTask task, ScriptContext context) + { + try + { + LogInformation("GetInstances Test - Starting GetInstances task configuration"); + + var getInstancesTask = task as GetInstancesTask; + if (getInstancesTask == null) + { + throw new InvalidOperationException("Task must be a GetInstancesTask"); + } + + // Configure target workflow - query instances from task-test-subflow + getInstancesTask.SetDomain("core"); + getInstancesTask.SetFlow("task-test-subflow"); + + // Configure pagination + getInstancesTask.SetPage(1); + getInstancesTask.SetPageSize(10); + + // Configure sorting - newest first + // getInstancesTask.SetSort("-CreatedAt"); + + // Build filter in GraphQL-like JSON format + // Format: {"attributes":{"fieldName":{"operator":"value"}}} + // API call example: GET /api/v1.0/core/workflows/task-test-subflow/instances?filter={"attributes":{"parentInstanceId":{"eq":"abc-123"}}} + + // Get parent instance data to build meaningful filters + var parentInstanceId = context.Instance.Id.ToString(); + var testId = context.Instance.Data?.testId.ToString(); + + // Build attribute filters dictionary + // Each key is a field name, each value is a dictionary of {operator: value} + var attributeFilters = new Dictionary>(); + + // Filter 1: Find instances by parentInstanceId using "eq" operator + if (!string.IsNullOrEmpty(parentInstanceId)) + { + attributeFilters["parentInstanceId"] = new Dictionary + { + { "eq", parentInstanceId } + }; + } + + // Filter 2: Find instances by testId using "eq" operator + if (!string.IsNullOrEmpty(testId)) + { + attributeFilters["testId"] = new Dictionary + { + { "eq", testId } + }; + } + + // Filter 3: Find instances started by task-test-workflow using "eq" operator + attributeFilters["startedBy"] = new Dictionary + { + { "eq", "task-test-workflow" } + }; + + // Build the complete filter JSON object + // Result format: {"attributes":{"parentInstanceId":{"eq":"..."},"testId":{"eq":"..."},"startedBy":{"eq":"task-test-workflow"}}} + if (attributeFilters.Count > 0) + { + var filterObject = new Dictionary + { + { "attributes", attributeFilters } + }; + + // Serialize to JSON string + var filterJson = JsonSerializer.Serialize(filterObject); + + // SetFilter expects a string array - pass the complete filter as single element + getInstancesTask.SetFilter([filterJson]); + + LogInformation("GetInstances Test - Applied JSON filter: {0}", + args: [filterJson]); + } + else + { + LogInformation("GetInstances Test - No filters applied, retrieving all instances"); + } + + return Task.FromResult(new ScriptResponse()); + } + catch (Exception ex) + { + LogError("GetInstances Test - Failed to configure GetInstances task: {0}", + args: [ex.Message]); + + return Task.FromResult(new ScriptResponse + { + Key = "get-instances-input-error", + Data = new { error = ex.Message } + }); + } + } + + public async Task OutputHandler(ScriptContext context) + { + try + { + LogInformation("GetInstances Test - Processing GetInstances response"); + + var response = context.Body; + var isSuccess = response?.isSuccess == true; + var statusCode = response?.statusCode ?? 500; + + if (isSuccess) + { + // Extract response data + var instances = response?.data.items; + + LogInformation("GetInstances Test - Successfully retrieved {0} instance(s)", + args: new object?[] { instances?.Count ?? 0 }); + + // Build instance summary for verification + var instanceSummary = new List(); + if (instances != null) + { + foreach (var instance in instances) + { + instanceSummary.Add(new + { + testId = instance?.data?.testId + }); + } + } + + return new ScriptResponse + { + Key = "get-instances-success", + Data = new + { + getInstancesResult = new + { + success = true, + taskType = "GetInstances", + description = "Retrieved workflow instances with JSON filter, pagination, and sorting", + filter = new + { + applied = true, + format = "GraphQL-like JSON", + targetDomain = "core", + targetFlow = "task-test-subflow" + }, + instances = instanceSummary, + instanceCount = instances?.Count ?? 0, + retrievedAt = DateTime.UtcNow + } + }, + Tags = ["task-test", "get-instances", "filter-test", "json-filter", "success"] + }; + } + + // Handle failure + LogWarning("GetInstances Test - Failed to retrieve instances: {0}", + args: [response?.errorMessage ?? "Unknown error"]); + + return new ScriptResponse + { + Key = "get-instances-failed", + Data = new + { + getInstancesResult = new + { + success = false, + taskType = "GetInstances", + statusCode = statusCode, + error = response?.errorMessage ?? "Failed to retrieve instances", + failedAt = DateTime.UtcNow + } + }, + Tags = ["task-test", "get-instances", "failed"] + }; + } + catch (Exception ex) + { + LogError("GetInstances Test - Output handler exception: {0}", + args: [ex.Message]); + + return new ScriptResponse + { + Key = "get-instances-exception", + Data = new + { + getInstancesResult = new + { + success = false, + taskType = "GetInstances", + error = ex.Message + } + } + }; + } + } +} diff --git a/core/Workflows/task-test/src/InitialTransitionMapping.csx b/core/Workflows/task-test/src/InitialTransitionMapping.csx index 36b8b1e..cb53fde 100644 --- a/core/Workflows/task-test/src/InitialTransitionMapping.csx +++ b/core/Workflows/task-test/src/InitialTransitionMapping.csx @@ -38,6 +38,7 @@ public class InitialTransitionMapping : ScriptBase, IMapping testNotificationTask = true, testScriptTask = true, testGetInstanceData = true, + testGetInstances = true, testDirectTransition = true, testStartWorkflow = true, testSubProcess = true diff --git a/core/Workflows/task-test/task-test-workflow.http b/core/Workflows/task-test/task-test-workflow.http index 7288b1e..adb795b 100644 --- a/core/Workflows/task-test/task-test-workflow.http +++ b/core/Workflows/task-test/task-test-workflow.http @@ -14,7 +14,7 @@ # # Prerequisites: # 1. vNext Runtime running on localhost:4201 -# 2. Mockoon running on mockoon:3001 +# 2. Mockoon running on localhost:3001 # 3. Dapr sidecar running (for DaprPubSub and DaprServiceTask) ############################################################################### @@ -107,11 +107,11 @@ Content-Type: application/json ############################################################################### ### Test Mockoon Health Check -GET http://mockoon:3001/health +GET http://localhost:3001/health Accept: application/json ### Test Task Test HTTP Endpoint (Mockoon) -POST http://mockoon:3001/api/task-test/http-endpoint +POST http://localhost:3001/api/task-test/http-endpoint Content-Type: application/json { @@ -121,7 +121,7 @@ Content-Type: application/json } ### Test Task Test HTTP Endpoint - Error Scenario -POST http://mockoon:3001/api/task-test/http-endpoint +POST http://localhost:3001/api/task-test/http-endpoint Content-Type: application/json { diff --git a/core/Workflows/task-test/task-test-workflow.json b/core/Workflows/task-test/task-test-workflow.json index 9992bd3..d556ca8 100644 --- a/core/Workflows/task-test/task-test-workflow.json +++ b/core/Workflows/task-test/task-test-workflow.json @@ -16,6 +16,7 @@ "notification", "script", "get-instance-data", + "get-instances", "direct-transition", "start", "subprocess" @@ -76,7 +77,7 @@ }, "mapping": { "location": "./src/InitialTransitionMapping.csx", - "code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwp1c2luZyBCQlQuV29ya2Zsb3cuRGVmaW5pdGlvbnM7CnVzaW5nIEJCVC5Xb3JrZmxvdy5TY3JpcHRpbmc7dXNpbmcgQkJULldvcmtmbG93LlNjcmlwdGluZy5GdW5jdGlvbnM7CgovLy8gPHN1bW1hcnk+Ci8vLyBJbml0aWFsIFRyYW5zaXRpb24gTWFwcGluZyAtIEluaXRpYWxpemVzIHdvcmtmbG93IHdpdGggdGVzdCBkYXRhCi8vLyA8L3N1bW1hcnk+CnB1YmxpYyBjbGFzcyBJbml0aWFsVHJhbnNpdGlvbk1hcHBpbmcgOiBTY3JpcHRCYXNlLCBJTWFwcGluZwp7CiAgICBwdWJsaWMgVGFzazxTY3JpcHRSZXNwb25zZT4gSW5wdXRIYW5kbGVyKFdvcmtmbG93VGFzayB0YXNrLCBTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UoKSk7CiAgICB9CgogICAgcHVibGljIGFzeW5jIFRhc2s8U2NyaXB0UmVzcG9uc2U+IE91dHB1dEhhbmRsZXIoU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgTG9nSW5mb3JtYXRpb24oIkluaXRpYWxUcmFuc2l0aW9uTWFwcGluZyBvdXRwdXQgaGFuZGxlciBzdGFydGluZy4uLiIpOwogICAgICAgICAgICB2YXIgaW5wdXREYXRhID0gY29udGV4dC5JbnN0YW5jZT8uRGF0YTsKICAgICAgICAgICAgCiAgICAgICAgICAgIHJldHVybiBuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ID0gImluaXRpYWwtc3VjY2VzcyIsCiAgICAgICAgICAgICAgICBEYXRhID0gbmV3CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdGVzdElkID0gaW5wdXREYXRhPy50ZXN0SWQgPz8gR3VpZC5OZXdHdWlkKCkuVG9TdHJpbmcoKSwKICAgICAgICAgICAgICAgICAgICB3b3JrZmxvd1N0YXJ0ZWRBdCA9IERhdGVUaW1lLlV0Y05vdywKICAgICAgICAgICAgICAgICAgICB0ZXN0Q29uZmlndXJhdGlvbiA9IG5ldwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEdldFNlY3JldEFzeW5jID0gdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEdldENvbmZpZ1ZhbHVlID0gdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFRhc2tSZXNwb25zZSA9IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHRlc3REYXByUHViU3ViID0gdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEh0dHBUYXNrID0gdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgdGVzdERhcHJTZXJ2aWNlVGFzayA9IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHRlc3ROb3RpZmljYXRpb25UYXNrID0gdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFNjcmlwdFRhc2sgPSB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICB0ZXN0R2V0SW5zdGFuY2VEYXRhID0gdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgdGVzdERpcmVjdFRyYW5zaXRpb24gPSB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICB0ZXN0U3RhcnRXb3JrZmxvdyA9IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RTdWJQcm9jZXNzID0gdHJ1ZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdGFza1Rlc3RSZXN1bHRzID0gbmV3IHsgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIFRhZ3MgPSBuZXdbXSB7ICJ0YXNrLXRlc3QiLCAiaW5pdGlhbGl6ZWQiIH0KICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBleCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ID0gImluaXRpYWwtZXJyb3IiLAogICAgICAgICAgICAgICAgRGF0YSA9IG5ldyB7IGVycm9yID0gZXguTWVzc2FnZSB9CiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQp9" + "code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwp1c2luZyBCQlQuV29ya2Zsb3cuRGVmaW5pdGlvbnM7CnVzaW5nIEJCVC5Xb3JrZmxvdy5TY3JpcHRpbmc7dXNpbmcgQkJULldvcmtmbG93LlNjcmlwdGluZy5GdW5jdGlvbnM7CgovLy8gPHN1bW1hcnk+Ci8vLyBJbml0aWFsIFRyYW5zaXRpb24gTWFwcGluZyAtIEluaXRpYWxpemVzIHdvcmtmbG93IHdpdGggdGVzdCBkYXRhCi8vLyA8L3N1bW1hcnk+CnB1YmxpYyBjbGFzcyBJbml0aWFsVHJhbnNpdGlvbk1hcHBpbmcgOiBTY3JpcHRCYXNlLCBJTWFwcGluZwp7CiAgICBwdWJsaWMgVGFzazxTY3JpcHRSZXNwb25zZT4gSW5wdXRIYW5kbGVyKFdvcmtmbG93VGFzayB0YXNrLCBTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UoKSk7CiAgICB9CgogICAgcHVibGljIGFzeW5jIFRhc2s8U2NyaXB0UmVzcG9uc2U+IE91dHB1dEhhbmRsZXIoU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgTG9nSW5mb3JtYXRpb24oIkluaXRpYWxUcmFuc2l0aW9uTWFwcGluZyBvdXRwdXQgaGFuZGxlciBzdGFydGluZy4uLiIpOwogICAgICAgICAgICB2YXIgaW5wdXREYXRhID0gY29udGV4dC5JbnN0YW5jZT8uRGF0YTsKICAgICAgICAgICAgCiAgICAgICAgICAgIHJldHVybiBuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ID0gImluaXRpYWwtc3VjY2VzcyIsCiAgICAgICAgICAgICAgICBEYXRhID0gbmV3CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdGVzdElkID0gaW5wdXREYXRhPy50ZXN0SWQgPz8gR3VpZC5OZXdHdWlkKCkuVG9TdHJpbmcoKSwKICAgICAgICAgICAgICAgICAgICB3b3JrZmxvd1N0YXJ0ZWRBdCA9IERhdGVUaW1lLlV0Y05vdywKICAgICAgICAgICAgICAgICAgICB0ZXN0Q29uZmlndXJhdGlvbiA9IG5ldwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEdldFNlY3JldEFzeW5jID0gdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEdldENvbmZpZ1ZhbHVlID0gdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFRhc2tSZXNwb25zZSA9IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHRlc3REYXByUHViU3ViID0gdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEh0dHBUYXNrID0gdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgdGVzdERhcHJTZXJ2aWNlVGFzayA9IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHRlc3ROb3RpZmljYXRpb25UYXNrID0gdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFNjcmlwdFRhc2sgPSB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICB0ZXN0R2V0SW5zdGFuY2VEYXRhID0gdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEdldEluc3RhbmNlcyA9IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHRlc3REaXJlY3RUcmFuc2l0aW9uID0gdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFN0YXJ0V29ya2Zsb3cgPSB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICB0ZXN0U3ViUHJvY2VzcyA9IHRydWUKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHRhc2tUZXN0UmVzdWx0cyA9IG5ldyB7IH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBUYWdzID0gbmV3W10geyAidGFzay10ZXN0IiwgImluaXRpYWxpemVkIiB9CiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIGNhdGNoIChFeGNlcHRpb24gZXgpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSA9ICJpbml0aWFsLWVycm9yIiwKICAgICAgICAgICAgICAgIERhdGEgPSBuZXcgeyBlcnJvciA9IGV4Lk1lc3NhZ2UgfQogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KfQ==" } } ] @@ -662,7 +663,7 @@ }, "mapping": { "location": "./src/GetInstanceDataMapping.csx", - "code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwp1c2luZyBCQlQuV29ya2Zsb3cuRGVmaW5pdGlvbnM7CnVzaW5nIEJCVC5Xb3JrZmxvdy5TY3JpcHRpbmc7CgovLy8gPHN1bW1hcnk+Ci8vLyBHZXRJbnN0YW5jZURhdGEgVGFzayBNYXBwaW5nIC0gUmV0cmlldmVzIGRhdGEgZnJvbSBhbm90aGVyIHdvcmtmbG93IGluc3RhbmNlCi8vLyBUZXN0IGNhc2U6IFZlcmlmeSBjcm9zcy13b3JrZmxvdyBkYXRhIHJldHJpZXZhbAovLy8gPC9zdW1tYXJ5PgpwdWJsaWMgY2xhc3MgR2V0SW5zdGFuY2VEYXRhTWFwcGluZyA6IElNYXBwaW5nCnsKICAgIHB1YmxpYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBJbnB1dEhhbmRsZXIoV29ya2Zsb3dUYXNrIHRhc2ssIFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB0cnkKICAgICAgICB7CiAgICAgICAgICAgIHZhciBnZXREYXRhVGFzayA9IHRhc2sgYXMgR2V0SW5zdGFuY2VEYXRhVGFzazsKICAgICAgICAgICAgaWYgKGdldERhdGFUYXNrID09IG51bGwpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJUYXNrIG11c3QgYmUgYSBHZXRJbnN0YW5jZURhdGFUYXNrIik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIENvbmZpZ3VyZSB0YXJnZXQgd29ya2Zsb3cgLSBnZXQgZGF0YSBmcm9tIGN1cnJlbnQgd29ya2Zsb3cgaW5zdGFuY2UgdG8gdGVzdCBleHRlbnNpb25zCiAgICAgICAgICAgIGdldERhdGFUYXNrLlNldERvbWFpbigiY29yZSIpOwogICAgICAgICAgICBnZXREYXRhVGFzay5TZXRGbG93KCJ0YXNrLXRlc3Qtd29ya2Zsb3ciKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIEdldCBkYXRhIGZyb20gY3VycmVudCBpbnN0YW5jZSB0byB2ZXJpZnkgZXh0ZW5zaW9uIGRhdGEKICAgICAgICAgICAgdmFyIGN1cnJlbnRJbnN0YW5jZUlkID0gY29udGV4dC5JbnN0YW5jZT8uSWQ/LlRvU3RyaW5nKCk7CiAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkoY3VycmVudEluc3RhbmNlSWQpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBnZXREYXRhVGFzay5TZXRJbnN0YW5jZShjdXJyZW50SW5zdGFuY2VJZCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIFJlcXVlc3Qgc3BlY2lmaWMgZXh0ZW5zaW9ucyAtIHRoaXMgd2lsbCB0cmlnZ2VyIHRoZSB0ZXN0LWh0dHAtZGF0YS1leHRlbnNpb24KICAgICAgICAgICAgZ2V0RGF0YVRhc2suU2V0RXh0ZW5zaW9ucyhuZXdbXSB7ICJ0ZXN0LWh0dHAtZGF0YS1leHRlbnNpb24iIH0pOwoKICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UoKSk7CiAgICAgICAgfQogICAgICAgIGNhdGNoIChFeGNlcHRpb24gZXgpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgPSAiZ2V0LWluc3RhbmNlLWRhdGEtaW5wdXQtZXJyb3IiLAogICAgICAgICAgICAgICAgRGF0YSA9IG5ldyB7IGVycm9yID0gZXguTWVzc2FnZSB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgYXN5bmMgVGFzazxTY3JpcHRSZXNwb25zZT4gT3V0cHV0SGFuZGxlcihTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSBjb250ZXh0LkJvZHk7CgogICAgICAgICAgICBpZiAocmVzcG9uc2U/LmlzU3VjY2VzcyA9PSB0cnVlKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0gImdldC1pbnN0YW5jZS1kYXRhLXN1Y2Nlc3MiLAogICAgICAgICAgICAgICAgICAgIERhdGEgPSBuZXcKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGdldEluc3RhbmNlRGF0YVJlc3VsdCA9IG5ldwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHJpZXZlZERhdGEgPSByZXNwb25zZT8uZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhID0gcmVzcG9uc2U/Lm1ldGFkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXh0ZW5zaW9uIGRhdGEgd2lsbCBiZSBoZXJlIC0gdGVzdC1odHRwLWRhdGEtZXh0ZW5zaW9uIHJlc3BvbnNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25EYXRhID0gcmVzcG9uc2U/LmV4dGVuc2lvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRyaWV2ZWRBdCA9IERhdGVUaW1lLlV0Y05vdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tUeXBlID0gIkdldEluc3RhbmNlRGF0YSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RlID0gIkNoZWNrIGV4dGVuc2lvbkRhdGEgZmllbGQgZm9yIHRlc3QtaHR0cC1kYXRhLWV4dGVuc2lvbiByZXN1bHRzIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBUYWdzID0gbmV3W10geyAidGFzay10ZXN0IiwgImdldC1pbnN0YW5jZS1kYXRhIiwgInN1Y2Nlc3MiLCAiZXh0ZW5zaW9uLXRlc3QiIH0KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ID0gImdldC1pbnN0YW5jZS1kYXRhLWZhaWxlZCIsCiAgICAgICAgICAgICAgICBEYXRhID0gbmV3CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgZ2V0SW5zdGFuY2VEYXRhUmVzdWx0ID0gbmV3CiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gcmVzcG9uc2U/LmVycm9yTWVzc2FnZSA/PyAiRmFpbGVkIHRvIHJldHJpZXZlIGluc3RhbmNlIGRhdGEiLAogICAgICAgICAgICAgICAgICAgICAgICBmYWlsZWRBdCA9IERhdGVUaW1lLlV0Y05vdywKICAgICAgICAgICAgICAgICAgICAgICAgdGFza1R5cGUgPSAiR2V0SW5zdGFuY2VEYXRhIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBUYWdzID0gbmV3W10geyAidGFzay10ZXN0IiwgImdldC1pbnN0YW5jZS1kYXRhIiwgImZhaWxlZCIgfQogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGV4KQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBTY3JpcHRSZXNwb25zZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgPSAiZ2V0LWluc3RhbmNlLWRhdGEtZXhjZXB0aW9uIiwKICAgICAgICAgICAgICAgIERhdGEgPSBuZXcKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBnZXRJbnN0YW5jZURhdGFSZXN1bHQgPSBuZXcKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBleC5NZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICB0YXNrVHlwZSA9ICJHZXRJbnN0YW5jZURhdGEiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KfQoK" + "code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwp1c2luZyBCQlQuV29ya2Zsb3cuRGVmaW5pdGlvbnM7CnVzaW5nIEJCVC5Xb3JrZmxvdy5TY3JpcHRpbmc7CnVzaW5nIFN5c3RlbS5UZXh0Lkpzb247CgovLy8gPHN1bW1hcnk+Ci8vLyBHZXRJbnN0YW5jZURhdGEgVGFzayBNYXBwaW5nIC0gUmV0cmlldmVzIGRhdGEgZnJvbSBhbm90aGVyIHdvcmtmbG93IGluc3RhbmNlCi8vLyBUZXN0IGNhc2U6IFZlcmlmeSBjcm9zcy13b3JrZmxvdyBkYXRhIHJldHJpZXZhbAovLy8gPC9zdW1tYXJ5PgpwdWJsaWMgY2xhc3MgR2V0SW5zdGFuY2VEYXRhTWFwcGluZyA6IElNYXBwaW5nCnsKICAgIHB1YmxpYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBJbnB1dEhhbmRsZXIoV29ya2Zsb3dUYXNrIHRhc2ssIFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB0cnkKICAgICAgICB7CiAgICAgICAgICAgIHZhciBnZXREYXRhVGFzayA9IHRhc2sgYXMgR2V0SW5zdGFuY2VEYXRhVGFzazsKICAgICAgICAgICAgaWYgKGdldERhdGFUYXNrID09IG51bGwpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJUYXNrIG11c3QgYmUgYSBHZXRJbnN0YW5jZURhdGFUYXNrIik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIENvbmZpZ3VyZSB0YXJnZXQgd29ya2Zsb3cgLSBnZXQgZGF0YSBmcm9tIGN1cnJlbnQgd29ya2Zsb3cgaW5zdGFuY2UgdG8gdGVzdCBleHRlbnNpb25zCiAgICAgICAgICAgIGdldERhdGFUYXNrLlNldERvbWFpbigiY29yZSIpOwogICAgICAgICAgICBnZXREYXRhVGFzay5TZXRGbG93KCJ0YXNrLXRlc3Qtd29ya2Zsb3ciKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIEdldCBkYXRhIGZyb20gY3VycmVudCBpbnN0YW5jZSB0byB2ZXJpZnkgZXh0ZW5zaW9uIGRhdGEKICAgICAgICAgICAgdmFyIGN1cnJlbnRJbnN0YW5jZUlkID0gY29udGV4dC5JbnN0YW5jZT8uSWQuVG9TdHJpbmcoKTsKICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShjdXJyZW50SW5zdGFuY2VJZCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGdldERhdGFUYXNrLlNldEluc3RhbmNlKGN1cnJlbnRJbnN0YW5jZUlkKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gUmVxdWVzdCBzcGVjaWZpYyBleHRlbnNpb25zIC0gdGhpcyB3aWxsIHRyaWdnZXIgdGhlIHRlc3QtaHR0cC1kYXRhLWV4dGVuc2lvbgogICAgICAgICAgICBnZXREYXRhVGFzay5TZXRFeHRlbnNpb25zKG5ld1tdIHsgInRlc3QtaHR0cC1kYXRhLWV4dGVuc2lvbiIgfSk7CgogICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZSgpKTsKICAgICAgICB9CiAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBleCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSA9ICJnZXQtaW5zdGFuY2UtZGF0YS1pbnB1dC1lcnJvciIsCiAgICAgICAgICAgICAgICBEYXRhID0gbmV3IHsgZXJyb3IgPSBleC5NZXNzYWdlIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBhc3luYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBPdXRwdXRIYW5kbGVyKFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB0cnkKICAgICAgICB7CiAgICAgICAgICAgIHZhciByZXNwb25zZSA9IGNvbnRleHQuQm9keTsKCiAgICAgICAgICAgIGlmIChyZXNwb25zZT8uaXNTdWNjZXNzID09IHRydWUpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPSAiZ2V0LWluc3RhbmNlLWRhdGEtc3VjY2VzcyIsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9IG5ldwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SW5zdGFuY2VEYXRhUmVzdWx0ID0gbmV3CiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0cmlldmVkRGF0YSA9IHJlc3BvbnNlPy5kYXRhPy5kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXh0ZW5zaW9uIGRhdGEgd2lsbCBiZSBoZXJlIC0gdGVzdC1odHRwLWRhdGEtZXh0ZW5zaW9uIHJlc3BvbnNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25EYXRhID0gcmVzcG9uc2U/LmRhdGE/LmV4dGVuc2lvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRyaWV2ZWRBdCA9IERhdGVUaW1lLlV0Y05vdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tUeXBlID0gIkdldEluc3RhbmNlRGF0YSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RlID0gIkNoZWNrIGV4dGVuc2lvbkRhdGEgZmllbGQgZm9yIHRlc3QtaHR0cC1kYXRhLWV4dGVuc2lvbiByZXN1bHRzIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBUYWdzID0gbmV3W10geyAidGFzay10ZXN0IiwgImdldC1pbnN0YW5jZS1kYXRhIiwgInN1Y2Nlc3MiLCAiZXh0ZW5zaW9uLXRlc3QiIH0KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ID0gImdldC1pbnN0YW5jZS1kYXRhLWZhaWxlZCIsCiAgICAgICAgICAgICAgICBEYXRhID0gbmV3CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgZ2V0SW5zdGFuY2VEYXRhUmVzdWx0ID0gbmV3CiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gcmVzcG9uc2U/LmVycm9yTWVzc2FnZSA/PyAiRmFpbGVkIHRvIHJldHJpZXZlIGluc3RhbmNlIGRhdGEiLAogICAgICAgICAgICAgICAgICAgICAgICBmYWlsZWRBdCA9IERhdGVUaW1lLlV0Y05vdywKICAgICAgICAgICAgICAgICAgICAgICAgdGFza1R5cGUgPSAiR2V0SW5zdGFuY2VEYXRhIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBUYWdzID0gbmV3W10geyAidGFzay10ZXN0IiwgImdldC1pbnN0YW5jZS1kYXRhIiwgImZhaWxlZCIgfQogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGV4KQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBTY3JpcHRSZXNwb25zZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgPSAiZ2V0LWluc3RhbmNlLWRhdGEtZXhjZXB0aW9uIiwKICAgICAgICAgICAgICAgIERhdGEgPSBuZXcKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBnZXRJbnN0YW5jZURhdGFSZXN1bHQgPSBuZXcKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBleC5NZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICB0YXNrVHlwZSA9ICJHZXRJbnN0YW5jZURhdGEiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KfQoK" } } ], @@ -670,7 +671,7 @@ "transitions": [ { "key": "get-instance-data-completed", - "target": "test-direct-transition-state", + "target": "test-get-instances-state", "triggerType": 1, "versionStrategy": "Minor", "labels": [ @@ -694,6 +695,66 @@ } ] }, + { + "key": "test-get-instances-state", + "stateType": 2, + "subType": 0, + "versionStrategy": "Minor", + "labels": [ + { + "language": "en-US", + "label": "Test GetInstances" + }, + { + "language": "tr-TR", + "label": "GetInstances Testi" + } + ], + "view": null, + "subFlow": null, + "onEntries": [ + { + "order": 1, + "task": { + "key": "test-get-instances", + "domain": "core", + "version": "1.0.0", + "flow": "sys-tasks" + }, + "mapping": { + "location": "./src/GetInstancesMapping.csx", + "code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLlRleHQuSnNvbjsKdXNpbmcgU3lzdGVtLlRocmVhZGluZy5UYXNrczsKdXNpbmcgQkJULldvcmtmbG93LkRlZmluaXRpb25zOwp1c2luZyBCQlQuV29ya2Zsb3cuU2NyaXB0aW5nOwp1c2luZyBCQlQuV29ya2Zsb3cuU2NyaXB0aW5nLkZ1bmN0aW9uczsKCi8vLyA8c3VtbWFyeT4KLy8vIEdldEluc3RhbmNlcyBUYXNrIE1hcHBpbmcgLSBSZXRyaWV2ZXMgYSBsaXN0IG9mIHdvcmtmbG93IGluc3RhbmNlcyB3aXRoIGZpbHRlcmluZyBhbmQgcGFnaW5hdGlvbgovLy8gVGVzdCBjYXNlOiBWZXJpZnkgR2V0SW5zdGFuY2VzVGFzayBmdW5jdGlvbmFsaXR5IGluY2x1ZGluZyBmaWx0ZXIsIHBhZ2luYXRpb24sIGFuZCBzb3J0aW5nCi8vLyAKLy8vIEZpbHRlciBGb3JtYXQgKEdyYXBoUUwtbGlrZSBKU09OIHN0cnVjdHVyZSk6Ci8vLyA/ZmlsdGVyPXsiYXR0cmlidXRlcyI6eyJmaWVsZE5hbWUiOnsib3BlcmF0b3IiOiJ2YWx1ZSJ9fX0KLy8vIAovLy8gU3VwcG9ydGVkIG9wZXJhdG9yczogZXEsIG5lcSwgZ3QsIGd0ZSwgbHQsIGx0ZSwgY29udGFpbnMsIHN0YXJ0c1dpdGgsIGVuZHNXaXRoCi8vLyAKLy8vIEV4YW1wbGVzOgovLy8gLSBTaW5nbGUgZmlsdGVyOiB7ImF0dHJpYnV0ZXMiOnsiY2xpZW50SWQiOnsiZXEiOjEyMn19fQovLy8gLSBNdWx0aXBsZSBmaWx0ZXJzOiB7ImF0dHJpYnV0ZXMiOnsiY2xpZW50SWQiOnsiZXEiOjEyMn0sInRlc3RWYWx1ZSI6eyJndCI6Mn19fQovLy8gLSBTdHJpbmcgZmlsdGVyOiB7ImF0dHJpYnV0ZXMiOnsic3RhdHVzIjp7ImVxIjoiYWN0aXZlIn19fQovLy8gPC9zdW1tYXJ5PgpwdWJsaWMgY2xhc3MgR2V0SW5zdGFuY2VzTWFwcGluZyA6IFNjcmlwdEJhc2UsIElNYXBwaW5nCnsKICAgIHB1YmxpYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBJbnB1dEhhbmRsZXIoV29ya2Zsb3dUYXNrIHRhc2ssIFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB0cnkKICAgICAgICB7CiAgICAgICAgICAgIExvZ0luZm9ybWF0aW9uKCJHZXRJbnN0YW5jZXMgVGVzdCAtIFN0YXJ0aW5nIEdldEluc3RhbmNlcyB0YXNrIGNvbmZpZ3VyYXRpb24iKTsKCiAgICAgICAgICAgIHZhciBnZXRJbnN0YW5jZXNUYXNrID0gdGFzayBhcyBHZXRJbnN0YW5jZXNUYXNrOwogICAgICAgICAgICBpZiAoZ2V0SW5zdGFuY2VzVGFzayA9PSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigiVGFzayBtdXN0IGJlIGEgR2V0SW5zdGFuY2VzVGFzayIpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBDb25maWd1cmUgdGFyZ2V0IHdvcmtmbG93IC0gcXVlcnkgaW5zdGFuY2VzIGZyb20gdGFzay10ZXN0LXN1YmZsb3cKICAgICAgICAgICAgZ2V0SW5zdGFuY2VzVGFzay5TZXREb21haW4oImNvcmUiKTsKICAgICAgICAgICAgZ2V0SW5zdGFuY2VzVGFzay5TZXRGbG93KCJ0YXNrLXRlc3Qtc3ViZmxvdyIpOwoKICAgICAgICAgICAgLy8gQ29uZmlndXJlIHBhZ2luYXRpb24KICAgICAgICAgICAgZ2V0SW5zdGFuY2VzVGFzay5TZXRQYWdlKDEpOwogICAgICAgICAgICBnZXRJbnN0YW5jZXNUYXNrLlNldFBhZ2VTaXplKDEwKTsKCiAgICAgICAgICAgIC8vIENvbmZpZ3VyZSBzb3J0aW5nIC0gbmV3ZXN0IGZpcnN0CiAgICAgICAgICAgIC8vIGdldEluc3RhbmNlc1Rhc2suU2V0U29ydCgiLUNyZWF0ZWRBdCIpOwoKICAgICAgICAgICAgLy8gQnVpbGQgZmlsdGVyIGluIEdyYXBoUUwtbGlrZSBKU09OIGZvcm1hdAogICAgICAgICAgICAvLyBGb3JtYXQ6IHsiYXR0cmlidXRlcyI6eyJmaWVsZE5hbWUiOnsib3BlcmF0b3IiOiJ2YWx1ZSJ9fX0KICAgICAgICAgICAgLy8gQVBJIGNhbGwgZXhhbXBsZTogR0VUIC9hcGkvdjEuMC9jb3JlL3dvcmtmbG93cy90YXNrLXRlc3Qtc3ViZmxvdy9pbnN0YW5jZXM/ZmlsdGVyPXsiYXR0cmlidXRlcyI6eyJwYXJlbnRJbnN0YW5jZUlkIjp7ImVxIjoiYWJjLTEyMyJ9fX0KICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIEdldCBwYXJlbnQgaW5zdGFuY2UgZGF0YSB0byBidWlsZCBtZWFuaW5nZnVsIGZpbHRlcnMKICAgICAgICAgICAgdmFyIHBhcmVudEluc3RhbmNlSWQgPSBjb250ZXh0Lkluc3RhbmNlLklkLlRvU3RyaW5nKCk7CiAgICAgICAgICAgIHZhciB0ZXN0SWQgPSBjb250ZXh0Lkluc3RhbmNlLkRhdGE/LnRlc3RJZC5Ub1N0cmluZygpOwoKICAgICAgICAgICAgLy8gQnVpbGQgYXR0cmlidXRlIGZpbHRlcnMgZGljdGlvbmFyeQogICAgICAgICAgICAvLyBFYWNoIGtleSBpcyBhIGZpZWxkIG5hbWUsIGVhY2ggdmFsdWUgaXMgYSBkaWN0aW9uYXJ5IG9mIHtvcGVyYXRvcjogdmFsdWV9CiAgICAgICAgICAgIHZhciBhdHRyaWJ1dGVGaWx0ZXJzID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0Pj4oKTsKCiAgICAgICAgICAgIC8vIEZpbHRlciAxOiBGaW5kIGluc3RhbmNlcyBieSBwYXJlbnRJbnN0YW5jZUlkIHVzaW5nICJlcSIgb3BlcmF0b3IKICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShwYXJlbnRJbnN0YW5jZUlkKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgYXR0cmlidXRlRmlsdGVyc1sicGFyZW50SW5zdGFuY2VJZCJdID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBvYmplY3Q+CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgeyAiZXEiLCBwYXJlbnRJbnN0YW5jZUlkIH0KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIEZpbHRlciAyOiBGaW5kIGluc3RhbmNlcyBieSB0ZXN0SWQgdXNpbmcgImVxIiBvcGVyYXRvcgogICAgICAgICAgICBpZiAoIXN0cmluZy5Jc051bGxPckVtcHR5KHRlc3RJZCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGF0dHJpYnV0ZUZpbHRlcnNbInRlc3RJZCJdID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBvYmplY3Q+CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgeyAiZXEiLCB0ZXN0SWQgfQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gRmlsdGVyIDM6IEZpbmQgaW5zdGFuY2VzIHN0YXJ0ZWQgYnkgdGFzay10ZXN0LXdvcmtmbG93IHVzaW5nICJlcSIgb3BlcmF0b3IKICAgICAgICAgICAgYXR0cmlidXRlRmlsdGVyc1sic3RhcnRlZEJ5Il0gPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4KICAgICAgICAgICAgewogICAgICAgICAgICAgICAgeyAiZXEiLCAidGFzay10ZXN0LXdvcmtmbG93IiB9CiAgICAgICAgICAgIH07CgogICAgICAgICAgICAvLyBCdWlsZCB0aGUgY29tcGxldGUgZmlsdGVyIEpTT04gb2JqZWN0CiAgICAgICAgICAgIC8vIFJlc3VsdCBmb3JtYXQ6IHsiYXR0cmlidXRlcyI6eyJwYXJlbnRJbnN0YW5jZUlkIjp7ImVxIjoiLi4uIn0sInRlc3RJZCI6eyJlcSI6Ii4uLiJ9LCJzdGFydGVkQnkiOnsiZXEiOiJ0YXNrLXRlc3Qtd29ya2Zsb3cifX19CiAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVGaWx0ZXJzLkNvdW50ID4gMCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmFyIGZpbHRlck9iamVjdCA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PgogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHsgImF0dHJpYnV0ZXMiLCBhdHRyaWJ1dGVGaWx0ZXJzIH0KICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgLy8gU2VyaWFsaXplIHRvIEpTT04gc3RyaW5nCiAgICAgICAgICAgICAgICB2YXIgZmlsdGVySnNvbiA9IEpzb25TZXJpYWxpemVyLlNlcmlhbGl6ZShmaWx0ZXJPYmplY3QpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyBTZXRGaWx0ZXIgZXhwZWN0cyBhIHN0cmluZyBhcnJheSAtIHBhc3MgdGhlIGNvbXBsZXRlIGZpbHRlciBhcyBzaW5nbGUgZWxlbWVudAogICAgICAgICAgICAgICAgZ2V0SW5zdGFuY2VzVGFzay5TZXRGaWx0ZXIoW2ZpbHRlckpzb25dKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgTG9nSW5mb3JtYXRpb24oIkdldEluc3RhbmNlcyBUZXN0IC0gQXBwbGllZCBKU09OIGZpbHRlcjogezB9IiwgCiAgICAgICAgICAgICAgICAgICAgYXJnczogW2ZpbHRlckpzb25dKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIExvZ0luZm9ybWF0aW9uKCJHZXRJbnN0YW5jZXMgVGVzdCAtIE5vIGZpbHRlcnMgYXBwbGllZCwgcmV0cmlldmluZyBhbGwgaW5zdGFuY2VzIik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlKCkpOwogICAgICAgIH0KICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGV4KQogICAgICAgIHsKICAgICAgICAgICAgTG9nRXJyb3IoIkdldEluc3RhbmNlcyBUZXN0IC0gRmFpbGVkIHRvIGNvbmZpZ3VyZSBHZXRJbnN0YW5jZXMgdGFzazogezB9IiwgCiAgICAgICAgICAgICAgICBhcmdzOiBbZXguTWVzc2FnZV0pOwogICAgICAgICAgICAKICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ID0gImdldC1pbnN0YW5jZXMtaW5wdXQtZXJyb3IiLAogICAgICAgICAgICAgICAgRGF0YSA9IG5ldyB7IGVycm9yID0gZXguTWVzc2FnZSB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgYXN5bmMgVGFzazxTY3JpcHRSZXNwb25zZT4gT3V0cHV0SGFuZGxlcihTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgICBMb2dJbmZvcm1hdGlvbigiR2V0SW5zdGFuY2VzIFRlc3QgLSBQcm9jZXNzaW5nIEdldEluc3RhbmNlcyByZXNwb25zZSIpOwoKICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gY29udGV4dC5Cb2R5OwogICAgICAgICAgICB2YXIgaXNTdWNjZXNzID0gcmVzcG9uc2U/LmlzU3VjY2VzcyA9PSB0cnVlOwogICAgICAgICAgICB2YXIgc3RhdHVzQ29kZSA9IHJlc3BvbnNlPy5zdGF0dXNDb2RlID8/IDUwMDsKCiAgICAgICAgICAgIGlmIChpc1N1Y2Nlc3MpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIC8vIEV4dHJhY3QgcmVzcG9uc2UgZGF0YQogICAgICAgICAgICAgICAgdmFyIGluc3RhbmNlcyA9IHJlc3BvbnNlPy5kYXRhLml0ZW1zOwoKICAgICAgICAgICAgICAgIExvZ0luZm9ybWF0aW9uKCJHZXRJbnN0YW5jZXMgVGVzdCAtIFN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQgezB9IGluc3RhbmNlKHMpIiwgCiAgICAgICAgICAgICAgICAgICAgYXJnczogbmV3IG9iamVjdD9bXSB7IGluc3RhbmNlcz8uQ291bnQgPz8gMCB9KTsKCiAgICAgICAgICAgICAgICAvLyBCdWlsZCBpbnN0YW5jZSBzdW1tYXJ5IGZvciB2ZXJpZmljYXRpb24KICAgICAgICAgICAgICAgIHZhciBpbnN0YW5jZVN1bW1hcnkgPSBuZXcgTGlzdDxvYmplY3Q+KCk7CiAgICAgICAgICAgICAgICBpZiAoaW5zdGFuY2VzICE9IG51bGwpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIGluc3RhbmNlIGluIGluc3RhbmNlcykKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlU3VtbWFyeS5BZGQobmV3CiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RJZCA9IGluc3RhbmNlPy5kYXRhPy50ZXN0SWQKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPSAiZ2V0LWluc3RhbmNlcy1zdWNjZXNzIiwKICAgICAgICAgICAgICAgICAgICBEYXRhID0gbmV3CiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBnZXRJbnN0YW5jZXNSZXN1bHQgPSBuZXcKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrVHlwZSA9ICJHZXRJbnN0YW5jZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSAiUmV0cmlldmVkIHdvcmtmbG93IGluc3RhbmNlcyB3aXRoIEpTT04gZmlsdGVyLCBwYWdpbmF0aW9uLCBhbmQgc29ydGluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSBuZXcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWVkID0gdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSAiR3JhcGhRTC1saWtlIEpTT04iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldERvbWFpbiA9ICJjb3JlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRGbG93ID0gInRhc2stdGVzdC1zdWJmbG93IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlcyA9IGluc3RhbmNlU3VtbWFyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlQ291bnQgPSBpbnN0YW5jZXM/LkNvdW50ID8/IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRyaWV2ZWRBdCA9IERhdGVUaW1lLlV0Y05vdwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBUYWdzID0gWyJ0YXNrLXRlc3QiLCAiZ2V0LWluc3RhbmNlcyIsICJmaWx0ZXItdGVzdCIsICJqc29uLWZpbHRlciIsICJzdWNjZXNzIl0KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIEhhbmRsZSBmYWlsdXJlCiAgICAgICAgICAgIExvZ1dhcm5pbmcoIkdldEluc3RhbmNlcyBUZXN0IC0gRmFpbGVkIHRvIHJldHJpZXZlIGluc3RhbmNlczogezB9IiwgCiAgICAgICAgICAgICAgICBhcmdzOiBbcmVzcG9uc2U/LmVycm9yTWVzc2FnZSA/PyAiVW5rbm93biBlcnJvciJdKTsKCiAgICAgICAgICAgIHJldHVybiBuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ID0gImdldC1pbnN0YW5jZXMtZmFpbGVkIiwKICAgICAgICAgICAgICAgIERhdGEgPSBuZXcKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBnZXRJbnN0YW5jZXNSZXN1bHQgPSBuZXcKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgdGFza1R5cGUgPSAiR2V0SW5zdGFuY2VzIiwKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzQ29kZSA9IHN0YXR1c0NvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gcmVzcG9uc2U/LmVycm9yTWVzc2FnZSA/PyAiRmFpbGVkIHRvIHJldHJpZXZlIGluc3RhbmNlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxlZEF0ID0gRGF0ZVRpbWUuVXRjTm93CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIFRhZ3MgPSBbInRhc2stdGVzdCIsICJnZXQtaW5zdGFuY2VzIiwgImZhaWxlZCJdCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIGNhdGNoIChFeGNlcHRpb24gZXgpCiAgICAgICAgewogICAgICAgICAgICBMb2dFcnJvcigiR2V0SW5zdGFuY2VzIFRlc3QgLSBPdXRwdXQgaGFuZGxlciBleGNlcHRpb246IHswfSIsIAogICAgICAgICAgICAgICAgYXJnczogW2V4Lk1lc3NhZ2VdKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIHJldHVybiBuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ID0gImdldC1pbnN0YW5jZXMtZXhjZXB0aW9uIiwKICAgICAgICAgICAgICAgIERhdGEgPSBuZXcKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBnZXRJbnN0YW5jZXNSZXN1bHQgPSBuZXcKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgdGFza1R5cGUgPSAiR2V0SW5zdGFuY2VzIiwKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBleC5NZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KfQo=" + } + } + ], + "onExits": [], + "transitions": [ + { + "key": "get-instances-completed", + "target": "test-direct-transition-state", + "triggerType": 1, + "versionStrategy": "Minor", + "labels": [ + { + "language": "en-US", + "label": "GetInstances Completed" + }, + { + "language": "tr-TR", + "label": "GetInstances Tamamlandı" + } + ], + "schema": null, + "rule": { + "location": "./src/AlwaysTrueRule.csx", + "code": "dXNpbmcgU3lzdGVtLlRocmVhZGluZy5UYXNrczsKdXNpbmcgQkJULldvcmtmbG93LlNjcmlwdGluZzsKCi8vLyA8c3VtbWFyeT4KLy8vIEFsd2F5cyBUcnVlIFJ1bGUgLSBVc2VkIGZvciBhdXRvIHRyYW5zaXRpb25zIHRoYXQgc2hvdWxkIGFsd2F5cyBwcm9jZWVkCi8vLyA8L3N1bW1hcnk+CnB1YmxpYyBjbGFzcyBBbHdheXNUcnVlUnVsZSA6IElDb25kaXRpb25NYXBwaW5nCnsKICAgIHB1YmxpYyBhc3luYyBUYXNrPGJvb2w+IEhhbmRsZXIoU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHJldHVybiB0cnVlOwogICAgfQp9Cgo=" + }, + "timer": null, + "view": null, + "onExecutionTasks": [] + } + ] + }, { "key": "test-direct-transition-state", "stateType": 2, diff --git a/postman/vNext Example Runtime.postman_collection.json b/postman/vNext Example Runtime.postman_collection.json index 226cad6..bf2f645 100644 --- a/postman/vNext Example Runtime.postman_collection.json +++ b/postman/vNext Example Runtime.postman_collection.json @@ -175,7 +175,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"key\": \"34987491990272\",\n \"tags\": [\n \"test\",\n \"oauth\",\n \"authentication\"\n ],\n \"attributes\": {\n \"username\": \"34987491780\",\n \"password\": \"112233\",\n \"grant_type\": \"password\",\n \"client_id\": \"acme\",\n \"client_secret\": \"1q2w3e*\",\n \"scope\": \"openid profile product-api\"\n }\n}", + "raw": "{\n \"key\": \"34987491990273\",\n \"tags\": [\n \"test\",\n \"oauth\",\n \"authentication\"\n ],\n \"attributes\": {\n \"username\": \"34987491780\",\n \"password\": \"112233\",\n \"grant_type\": \"password\",\n \"client_id\": \"acme\",\n \"client_secret\": \"1q2w3e*\",\n \"scope\": \"openid profile product-api\"\n }\n}", "options": { "raw": { "language": "json" @@ -904,7 +904,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"key\": \"349874937\",\n \"tags\": [\n \"test\",\n \"banking\",\n \"account-openning\"\n ],\n \"attributes\": {\n \"session\": \"16\"\n }\n}", + "raw": "{\n \"key\": \"349874940\",\n \"tags\": [\n \"test\",\n \"banking\",\n \"account-openning\"\n ],\n \"attributes\": {\n \"session\": \"16\"\n }\n}", "options": { "raw": { "language": "json" @@ -950,7 +950,7 @@ "header": [], "body": { "mode": "raw", - "raw": "{\n \"key\": \"349874929\",\n \"tags\": [\n \"test\",\n \"banking\",\n \"account-openning\",\n \"key-test\"\n ],\n \"attributes\": {\n \"accountType\": \"demand-deposit\"\n }\n}", + "raw": "{\n \"tags\": [\n \"test\",\n \"banking\",\n \"account-openning\",\n \"key-test\"\n ],\n \"attributes\": {\n \"accountType\": \"demand-deposit\"\n }\n}", "options": { "raw": { "language": "json" @@ -1166,6 +1166,70 @@ } }, "response": [] + }, + { + "name": "Get Instances Copy", + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "user_reference", + "value": "11122233344", + "type": "text" + }, + { + "key": "x-device-id", + "value": "8207e846-f45b-41c9-8200-52eb430f4c03", + "type": "text" + }, + { + "key": "X-Forwarded-For", + "value": "192.168.1.10", + "type": "text" + }, + { + "key": "If-None-Match", + "value": "\"01kDSRFRH0DT2QEXXEEZX8YWQV\"", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/:domain/workflows/:flow/functions/schema", + "host": [ + "{{baseUrl}}" + ], + "path": [ + ":domain", + "workflows", + ":flow", + "functions", + "schema" + ], + "variable": [ + { + "key": "domain", + "value": "core" + }, + { + "key": "flow", + "value": "task-test-workflow" + } + ] + } + }, + "response": [] } ] } @@ -1252,7 +1316,8 @@ { "key": "If-None-Match", "value": "\"01kDSRFRH0DT2QEXXEEZX8YWQV\"", - "type": "text" + "type": "text", + "disabled": true } ], "body": { @@ -1306,6 +1371,70 @@ }, "response": [] }, + { + "name": "Get Instances", + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "user_reference", + "value": "11122233344", + "type": "text" + }, + { + "key": "x-device-id", + "value": "8207e846-f45b-41c9-8200-52eb430f4c03", + "type": "text" + }, + { + "key": "X-Forwarded-For", + "value": "192.168.1.10", + "type": "text" + }, + { + "key": "If-None-Match", + "value": "\"01kDSRFRH0DT2QEXXEEZX8YWQV\"", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/:domain/workflows/:flow/functions/data", + "host": [ + "{{baseUrl}}" + ], + "path": [ + ":domain", + "workflows", + ":flow", + "functions", + "data" + ], + "variable": [ + { + "key": "domain", + "value": "core" + }, + { + "key": "flow", + "value": "task-test-workflow" + } + ] + } + }, + "response": [] + }, { "name": "Step 1: Start Instance", "event": [ @@ -1377,7 +1506,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"key\": \"3498749200159\",\n \"tags\": [\n \"test\",\n \"banking\",\n \"account-openning\"\n ],\n \"attributes\": {\n \"testId\": \"689bc680-162e-4cb5-aae7-859a108f0ae2\"\n }\n}", + "raw": "{\n \"key\": \"34987492001666\",\n \"tags\": [\n \"test\",\n \"banking\",\n \"account-openning\"\n ],\n \"attributes\": {\n \"testId\": \"689bc680-162e-4cb5-aae7-859a108f0ae2\"\n }\n}", "options": { "raw": { "language": "json" @@ -1846,7 +1975,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"key\": \"349874911000036\",\n \"tags\": [\n \"contract\",\n \"approval\",\n \"test\"\n ],\n \"attributes\": {\n \"groupCode\": \"KG-2024-001\",\n \"userId\": \"user-123\",\n \"sessionId\": \"session-456\",\n \"requestedAt\": \"2025-12-08T12:31:14.889+00:00\"\n }\n}", + "raw": "{\n \"key\": \"349874911000040\",\n \"tags\": [\n \"contract\",\n \"approval\",\n \"test\"\n ],\n \"attributes\": {\n \"groupCode\": \"KG-2024-001\",\n \"userId\": \"user-123\",\n \"sessionId\": \"session-456\",\n \"requestedAt\": \"2025-12-08T12:31:14.889+00:00\"\n }\n}", "options": { "raw": { "language": "json" @@ -1930,7 +2059,7 @@ }, { "key": "instance", - "value": "afce4307-1ccc-4cda-a3da-da96d9b89bee" + "value": "dd2c18bc-f49d-466a-a96b-282b1c061da5" }, { "key": "transition", @@ -2203,7 +2332,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"key\": \"34987491823\",\n \"tags\": [\"subflow-test\", \"view-test\", \"extension-test\", \"longpolling-test\"],\n \"attributes\": {\n \"testId\": \"subflow-view-extension-test-001\",\n \"testDescription\": \"Testing view and extension with subflow\",\n \"createdAt\": \"2026-01-01\"\n }\n}", + "raw": "{\n \"key\": \"34987491848\",\n \"tags\": [\n \"subflow-test\",\n \"view-test\",\n \"extension-test\",\n \"longpolling-test\"\n ],\n \"attributes\": {\n \"testId\": \"subflow-view-extension-test-001\",\n \"testDescription\": \"Testing view and extension with subflow\",\n \"createdAt\": \"2026-01-01\",\n \"items\": [\n {\n \"id\": 1,\n \"name\": \"test - 1\"\n },\n {\n \"id\": 2,\n \"name\": \"test - 2\"\n }\n ]\n }\n}", "options": { "raw": { "language": "json" @@ -2249,7 +2378,7 @@ "header": [], "body": { "mode": "raw", - "raw": "{\n \"attributes\": {\n \"message\": \"Starting subflow for view and extension test\"\n }\n}", + "raw": "{\n \"attributes\": {\n \"message\": \"Starting subflow for view and extension test\",\n \"items\": [\n {\n \"id\": 1,\n \"name\": \"test - 1\"\n }\n ]\n }\n}", "options": { "raw": { "language": "json" @@ -2297,6 +2426,118 @@ } }, "response": [] + }, + { + "name": "Step 3: Complete Sub Flow", + "request": { + "method": "PATCH", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"attributes\": {\n \"message\": \"Starting subflow for view and extension test\"\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/:domain/workflows/:flow/instances/:instance/transitions/:transition?sync=true", + "host": [ + "{{baseUrl}}" + ], + "path": [ + ":domain", + "workflows", + ":flow", + "instances", + ":instance", + "transitions", + ":transition" + ], + "query": [ + { + "key": "sync", + "value": "true" + } + ], + "variable": [ + { + "key": "domain", + "value": "{{domain}}" + }, + { + "key": "flow", + "value": "subflow-view-test-parent" + }, + { + "key": "instance", + "value": "{{instanceId}}" + }, + { + "key": "transition", + "value": "complete-child" + } + ] + } + }, + "response": [] + }, + { + "name": "Step 4: Proceed After Subflow", + "request": { + "method": "PATCH", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"attributes\": {\n \"message\": \"Starting subflow for view and extension test\"\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/:domain/workflows/:flow/instances/:instance/transitions/:transition?sync=true", + "host": [ + "{{baseUrl}}" + ], + "path": [ + ":domain", + "workflows", + ":flow", + "instances", + ":instance", + "transitions", + ":transition" + ], + "query": [ + { + "key": "sync", + "value": "true" + } + ], + "variable": [ + { + "key": "domain", + "value": "{{domain}}" + }, + { + "key": "flow", + "value": "subflow-view-test-parent" + }, + { + "key": "instance", + "value": "{{instanceId}}" + }, + { + "key": "transition", + "value": "proceed-after-subflow" + } + ] + } + }, + "response": [] } ] }