From 936d6de8f6e713ddcd94ddac32a7bd5f93d38499 Mon Sep 17 00:00:00 2001 From: Tihomir Surdilovic Date: Wed, 11 Nov 2020 12:09:05 -0500 Subject: [PATCH 01/12] bumping version Signed-off-by: Tihomir Surdilovic --- README.md | 16 ++++++++-------- api/pom.xml | 2 +- diagram/pom.xml | 2 +- pom.xml | 2 +- spi/pom.xml | 2 +- validation/pom.xml | 2 +- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index b9d776d3..8de238c2 100644 --- a/README.md +++ b/README.md @@ -56,25 +56,25 @@ b) Add the following dependencies to your pom.xml `dependencies` section: io.serverlessworkflow serverlessworkflow-api - 1.0.0-SNAPSHOT + 1.0.0.Final io.serverlessworkflow serverlessworkflow-spi - 1.0.0-SNAPSHOT + 1.0.0.Final io.serverlessworkflow serverlessworkflow-validation - 1.0.0-SNAPSHOT + 1.0.0.Final io.serverlessworkflow serverlessworkflow-diagram - 1.0.0-SNAPSHOT + 1.0.0.Final ``` @@ -90,10 +90,10 @@ maven{ url "https://jitpack.io" } b) Add the following dependencies to your build.gradle `dependencies` section: ```text -implementation("io.serverlessworkflow:serverlessworkflow-api:1.0.0-SNAPSHOT") -implementation("io.serverlessworkflow:serverlessworkflow-spi:1.0.0-SNAPSHOT") -implementation("io.serverlessworkflow:serverlessworkflow-validation:1.0.0-SNAPSHOT") -implementation("io.serverlessworkflow:serverlessworkflow-diagram:1.0.0-SNAPSHOT") +implementation("io.serverlessworkflow:serverlessworkflow-api:1.0.0.Final") +implementation("io.serverlessworkflow:serverlessworkflow-spi:1.0.0.Final") +implementation("io.serverlessworkflow:serverlessworkflow-validation:1.0.0.Final") +implementation("io.serverlessworkflow:serverlessworkflow-diagram:1.0.0.Final") ``` ### How to Use diff --git a/api/pom.xml b/api/pom.xml index aac5646f..aaf0b725 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -6,7 +6,7 @@ io.serverlessworkflow serverlessworkflow-parent - 1.0.0-SNAPSHOT + 1.0.0.Final serverlessworkflow-api diff --git a/diagram/pom.xml b/diagram/pom.xml index 1c40637b..75173d36 100644 --- a/diagram/pom.xml +++ b/diagram/pom.xml @@ -6,7 +6,7 @@ io.serverlessworkflow serverlessworkflow-parent - 1.0.0-SNAPSHOT + 1.0.0.Final serverlessworkflow-diagram diff --git a/pom.xml b/pom.xml index fdfe6557..f6f98c6e 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ io.serverlessworkflow serverlessworkflow-parent - 1.0.0-SNAPSHOT + 1.0.0.Final pom Serverless Workflow :: Parent diff --git a/spi/pom.xml b/spi/pom.xml index fa7b22ab..24367773 100644 --- a/spi/pom.xml +++ b/spi/pom.xml @@ -6,7 +6,7 @@ io.serverlessworkflow serverlessworkflow-parent - 1.0.0-SNAPSHOT + 1.0.0.Final serverlessworkflow-spi diff --git a/validation/pom.xml b/validation/pom.xml index 986dd9d9..0b58f7c6 100644 --- a/validation/pom.xml +++ b/validation/pom.xml @@ -6,7 +6,7 @@ io.serverlessworkflow serverlessworkflow-parent - 1.0.0-SNAPSHOT + 1.0.0.Final serverlessworkflow-validation From bf5ba7d98e9b04ffff0fd357560b75f989d1c714 Mon Sep 17 00:00:00 2001 From: Tihomir Surdilovic Date: Fri, 13 Nov 2020 22:52:55 -0500 Subject: [PATCH 02/12] update to pom for release info Signed-off-by: Tihomir Surdilovic --- pom.xml | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 66 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index f6f98c6e..fe1b7c81 100644 --- a/pom.xml +++ b/pom.xml @@ -16,6 +16,7 @@ CNCF https://www.cncf.io// + The Apache Software License, Version 2.0 @@ -24,6 +25,19 @@ + + scm:git:git://github.com/serverlessworkflow/sdk-java.git + scm:git:git@github.com:serverlessworkflow/sdk-java.git + https://github.com/serverlessworkflow/sdk-java + + + + + tsurdilo + Tihomir Surdilovic + + + api spi @@ -175,7 +189,7 @@ - + maven-deploy-plugin @@ -239,8 +253,58 @@ -Xmx1024m -XX:MaxPermSize=256m + + org.apache.maven.plugins + maven-source-plugin + 3.0.1 + + + attach-sources + + jar + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.10.4 + + 8 + + + + attach-javadocs + + jar + + + + + + org.apache.maven.plugins + maven-gpg-plugin + 1.6 + + + sign-artifacts + verify + + sign + + + + --batch + --pinentry-mode + loopback + + + + + - + From 946ddc37099cac3a0f146da72fedeb19fa4992df Mon Sep 17 00:00:00 2001 From: Tihomir Surdilovic Date: Fri, 13 Nov 2020 23:30:56 -0500 Subject: [PATCH 03/12] fixing pom for release - version bump Signed-off-by: Tihomir Surdilovic --- README.md | 18 +++++++++--------- api/pom.xml | 4 +++- diagram/pom.xml | 4 +++- pom.xml | 2 +- spi/pom.xml | 4 +++- validation/pom.xml | 4 +++- 6 files changed, 22 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 8de238c2..6da36baf 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ to parse and validate workflow definitions as well as generate the workflow diag | Latest Releases | Conformance to spec version | | :---: | :---: | -| 1.0.0.Final | [v0.5](https://github.com/serverlessworkflow/specification/tree/0.5.x) | +| 1.0.1.Final | [v0.5](https://github.com/serverlessworkflow/specification/tree/0.5.x) | ### Getting Started @@ -56,25 +56,25 @@ b) Add the following dependencies to your pom.xml `dependencies` section: io.serverlessworkflow serverlessworkflow-api - 1.0.0.Final + 1.0.1.Final io.serverlessworkflow serverlessworkflow-spi - 1.0.0.Final + 1.0.1.Final io.serverlessworkflow serverlessworkflow-validation - 1.0.0.Final + 1.0.1.Final io.serverlessworkflow serverlessworkflow-diagram - 1.0.0.Final + 1.0.1.Final ``` @@ -90,10 +90,10 @@ maven{ url "https://jitpack.io" } b) Add the following dependencies to your build.gradle `dependencies` section: ```text -implementation("io.serverlessworkflow:serverlessworkflow-api:1.0.0.Final") -implementation("io.serverlessworkflow:serverlessworkflow-spi:1.0.0.Final") -implementation("io.serverlessworkflow:serverlessworkflow-validation:1.0.0.Final") -implementation("io.serverlessworkflow:serverlessworkflow-diagram:1.0.0.Final") +implementation("io.serverlessworkflow:serverlessworkflow-api:1.0.1.Final") +implementation("io.serverlessworkflow:serverlessworkflow-spi:1.0.1.Final") +implementation("io.serverlessworkflow:serverlessworkflow-validation:1.0.1.Final") +implementation("io.serverlessworkflow:serverlessworkflow-diagram:1.0.1.Final") ``` ### How to Use diff --git a/api/pom.xml b/api/pom.xml index aaf0b725..fe337aa3 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -6,11 +6,13 @@ io.serverlessworkflow serverlessworkflow-parent - 1.0.0.Final + 1.0.1.Final serverlessworkflow-api Serverless Workflow :: API + ${project.parent.version} + jar Java SDK for Serverless Workflow Specification diff --git a/diagram/pom.xml b/diagram/pom.xml index 75173d36..633fb36c 100644 --- a/diagram/pom.xml +++ b/diagram/pom.xml @@ -6,11 +6,13 @@ io.serverlessworkflow serverlessworkflow-parent - 1.0.0.Final + 1.0.1.Final serverlessworkflow-diagram Serverless Workflow :: Diagram + ${project.parent.version} + jar Java SDK for Serverless Workflow Specification diff --git a/pom.xml b/pom.xml index fe1b7c81..a297f592 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ io.serverlessworkflow serverlessworkflow-parent - 1.0.0.Final + 1.0.1.Final pom Serverless Workflow :: Parent diff --git a/spi/pom.xml b/spi/pom.xml index 24367773..713550e0 100644 --- a/spi/pom.xml +++ b/spi/pom.xml @@ -6,11 +6,13 @@ io.serverlessworkflow serverlessworkflow-parent - 1.0.0.Final + 1.0.1.Final serverlessworkflow-spi Serverless Workflow :: SPI + ${project.parent.version} + jar Java SDK for Serverless Workflow Specification diff --git a/validation/pom.xml b/validation/pom.xml index 0b58f7c6..9dc87b01 100644 --- a/validation/pom.xml +++ b/validation/pom.xml @@ -6,11 +6,13 @@ io.serverlessworkflow serverlessworkflow-parent - 1.0.0.Final + 1.0.1.Final serverlessworkflow-validation Serverless Workflow :: Validation + ${project.parent.version} + jar Java SDK for Serverless Workflow Specification From b5b3fd9f2761a3b14d8e91d302ec6f354f8e5496 Mon Sep 17 00:00:00 2001 From: Tihomir Surdilovic Date: Wed, 2 Dec 2020 12:32:29 -0500 Subject: [PATCH 04/12] Workflow compensation impl Signed-off-by: Tihomir Surdilovic --- .../api/interfaces/State.java | 2 + api/src/main/resources/schema/end/end.json | 5 ++ .../schema/states/callbackstate.json | 5 ++ .../resources/schema/states/defaultstate.json | 5 ++ .../resources/schema/states/delaystate.json | 5 ++ .../resources/schema/states/foreachstate.json | 5 ++ .../resources/schema/states/injectstate.json | 5 ++ .../schema/states/operationstate.json | 5 ++ .../schema/states/parallelstate.json | 5 ++ .../resources/schema/states/subflowstate.json | 5 ++ .../resources/schema/states/switchstate.json | 5 ++ .../schema/transitions/transition.json | 5 ++ .../api/test/MarkupToWorkflowTest.java | 33 ++++++- .../features/compensationworkflow.json | 86 +++++++++++++++++++ .../features/compensationworkflow.yml | 46 ++++++++++ 15 files changed, 219 insertions(+), 3 deletions(-) create mode 100644 api/src/test/resources/features/compensationworkflow.json create mode 100644 api/src/test/resources/features/compensationworkflow.yml diff --git a/api/src/main/java/io/serverlessworkflow/api/interfaces/State.java b/api/src/main/java/io/serverlessworkflow/api/interfaces/State.java index ec12b4ff..a8b0a519 100644 --- a/api/src/main/java/io/serverlessworkflow/api/interfaces/State.java +++ b/api/src/main/java/io/serverlessworkflow/api/interfaces/State.java @@ -48,5 +48,7 @@ public interface State { List getOnErrors(); + String getCompensatedBy(); + Map getMetadata(); } \ No newline at end of file diff --git a/api/src/main/resources/schema/end/end.json b/api/src/main/resources/schema/end/end.json index 9c1c5e35..ebf3ceed 100644 --- a/api/src/main/resources/schema/end/end.json +++ b/api/src/main/resources/schema/end/end.json @@ -20,6 +20,11 @@ "type": "object", "$ref": "../produce/produceevent.json" } + }, + "compensate": { + "type": "boolean", + "default": false, + "description": "If set to true, triggers workflow compensation when before workflow executin completes. Default is false" } }, "required": [ diff --git a/api/src/main/resources/schema/states/callbackstate.json b/api/src/main/resources/schema/states/callbackstate.json index 599576a4..3cef4586 100644 --- a/api/src/main/resources/schema/states/callbackstate.json +++ b/api/src/main/resources/schema/states/callbackstate.json @@ -24,6 +24,11 @@ "eventDataFilter": { "description": "Callback event data filter definition", "$ref": "../filters/eventdatafilter.json" + }, + "usedForCompensation": { + "type": "boolean", + "default": false, + "description": "If true, this state is used to compensate another state. Default is false" } }, "required": [ diff --git a/api/src/main/resources/schema/states/defaultstate.json b/api/src/main/resources/schema/states/defaultstate.json index ec70d4a8..6d922e19 100644 --- a/api/src/main/resources/schema/states/defaultstate.json +++ b/api/src/main/resources/schema/states/defaultstate.json @@ -64,6 +64,11 @@ "type": "object", "$ref": "../error/error.json" } + }, + "compensatedBy": { + "type": "string", + "minLength": 1, + "description": "Unique Name of a workflow state which is responsible for compensation of this state" } }, "required": [ diff --git a/api/src/main/resources/schema/states/delaystate.json b/api/src/main/resources/schema/states/delaystate.json index 39e62518..3d0eab4c 100644 --- a/api/src/main/resources/schema/states/delaystate.json +++ b/api/src/main/resources/schema/states/delaystate.json @@ -12,6 +12,11 @@ "timeDelay": { "type": "string", "description": "Amount of time (ISO 8601 format) to delay" + }, + "usedForCompensation": { + "type": "boolean", + "default": false, + "description": "If true, this state is used to compensate another state. Default is false" } }, "required": [ diff --git a/api/src/main/resources/schema/states/foreachstate.json b/api/src/main/resources/schema/states/foreachstate.json index 1496c143..897dabe1 100644 --- a/api/src/main/resources/schema/states/foreachstate.json +++ b/api/src/main/resources/schema/states/foreachstate.json @@ -38,6 +38,11 @@ "workflowId": { "type": "string", "description": "Unique Id of a workflow to be executed for each of the elements of inputCollection" + }, + "usedForCompensation": { + "type": "boolean", + "default": false, + "description": "If true, this state is used to compensate another state. Default is false" } }, "oneOf": [ diff --git a/api/src/main/resources/schema/states/injectstate.json b/api/src/main/resources/schema/states/injectstate.json index 1101b6e1..d0d10589 100644 --- a/api/src/main/resources/schema/states/injectstate.json +++ b/api/src/main/resources/schema/states/injectstate.json @@ -13,6 +13,11 @@ "type": "object", "description": "JSON object which can be set as states data input and can be manipulated via filters", "existingJavaType": "com.fasterxml.jackson.databind.JsonNode" + }, + "usedForCompensation": { + "type": "boolean", + "default": false, + "description": "If true, this state is used to compensate another state. Default is false" } }, "required": [ diff --git a/api/src/main/resources/schema/states/operationstate.json b/api/src/main/resources/schema/states/operationstate.json index 1775a568..8d8211a9 100644 --- a/api/src/main/resources/schema/states/operationstate.json +++ b/api/src/main/resources/schema/states/operationstate.json @@ -24,6 +24,11 @@ "type": "object", "$ref": "../actions/action.json" } + }, + "usedForCompensation": { + "type": "boolean", + "default": false, + "description": "If true, this state is used to compensate another state. Default is false" } }, "required": [ diff --git a/api/src/main/resources/schema/states/parallelstate.json b/api/src/main/resources/schema/states/parallelstate.json index 2f82264a..824f3ff5 100644 --- a/api/src/main/resources/schema/states/parallelstate.json +++ b/api/src/main/resources/schema/states/parallelstate.json @@ -27,6 +27,11 @@ "type": "string", "default": "0", "description": "Used when completionType is set to 'n_of_m' to specify the 'N' value" + }, + "usedForCompensation": { + "type": "boolean", + "default": false, + "description": "If true, this state is used to compensate another state. Default is false" } }, "required": [ diff --git a/api/src/main/resources/schema/states/subflowstate.json b/api/src/main/resources/schema/states/subflowstate.json index 8c6da3b1..4a208691 100644 --- a/api/src/main/resources/schema/states/subflowstate.json +++ b/api/src/main/resources/schema/states/subflowstate.json @@ -17,6 +17,11 @@ "workflowId": { "type": "string", "description": "Sub-workflow unique id." + }, + "usedForCompensation": { + "type": "boolean", + "default": false, + "description": "If true, this state is used to compensate another state. Default is false" } }, "required": [ diff --git a/api/src/main/resources/schema/states/switchstate.json b/api/src/main/resources/schema/states/switchstate.json index 8ce641cb..e421397d 100644 --- a/api/src/main/resources/schema/states/switchstate.json +++ b/api/src/main/resources/schema/states/switchstate.json @@ -32,6 +32,11 @@ "default": { "description": "Default transition of the workflow if there is no matching data conditions. Can include a transition or end definition", "$ref": "../default/defaultdef.json" + }, + "usedForCompensation": { + "type": "boolean", + "default": false, + "description": "If true, this state is used to compensate another state. Default is false" } }, "required": [ diff --git a/api/src/main/resources/schema/transitions/transition.json b/api/src/main/resources/schema/transitions/transition.json index c3008fb9..5ba61b51 100644 --- a/api/src/main/resources/schema/transitions/transition.json +++ b/api/src/main/resources/schema/transitions/transition.json @@ -18,6 +18,11 @@ "type": "string", "description": "State to transition to next", "minLength": 1 + }, + "compensate": { + "type": "boolean", + "default": false, + "description": "If set to true, triggers workflow compensation before this transition is taken. Default is false" } }, "required": [ diff --git a/api/src/test/java/io/serverlessworkflow/api/test/MarkupToWorkflowTest.java b/api/src/test/java/io/serverlessworkflow/api/test/MarkupToWorkflowTest.java index c4a0b36c..6d770361 100644 --- a/api/src/test/java/io/serverlessworkflow/api/test/MarkupToWorkflowTest.java +++ b/api/src/test/java/io/serverlessworkflow/api/test/MarkupToWorkflowTest.java @@ -17,12 +17,14 @@ package io.serverlessworkflow.api.test; import io.serverlessworkflow.api.Workflow; +import io.serverlessworkflow.api.interfaces.State; +import io.serverlessworkflow.api.states.EventState; +import io.serverlessworkflow.api.states.OperationState; import io.serverlessworkflow.api.test.utils.WorkflowTestUtils; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; public class MarkupToWorkflowTest { @@ -74,7 +76,7 @@ public void testSpecFreatureFunctionRef(String workflowLocation) { } @ParameterizedTest - @ValueSource(strings = {"/features/vetappointment.json"}) + @ValueSource(strings = {"/features/vetappointment.json", "/features/vetappointment.yml"}) public void testSpecFreatureEventRef(String workflowLocation) { Workflow workflow = Workflow.fromSource(WorkflowTestUtils.readWorkflowFile(workflowLocation)); @@ -90,4 +92,29 @@ public void testSpecFreatureEventRef(String workflowLocation) { assertNotNull(workflow.getRetries()); assertTrue(workflow.getRetries().getRetryDefs().size() == 1); } + + @ParameterizedTest + @ValueSource(strings = {"/features/compensationworkflow.json", "/features/compensationworkflow.yml"}) + public void testSpecFreatureCompensation(String workflowLocation) { + Workflow workflow = Workflow.fromSource(WorkflowTestUtils.readWorkflowFile(workflowLocation)); + + assertNotNull(workflow); + assertNotNull(workflow.getId()); + assertNotNull(workflow.getName()); + assertNotNull(workflow.getStates()); + + assertNotNull(workflow.getStates()); + assertTrue(workflow.getStates().size() == 2); + + State firstState = workflow.getStates().get(0); + assertTrue(firstState instanceof EventState); + assertNotNull(firstState.getCompensatedBy()); + assertEquals("CancelPurchase", firstState.getCompensatedBy()); + + State secondState = workflow.getStates().get(1); + assertTrue(secondState instanceof OperationState); + OperationState operationState = (OperationState) secondState; + + assertTrue(operationState.isUsedForCompensation()); + } } diff --git a/api/src/test/resources/features/compensationworkflow.json b/api/src/test/resources/features/compensationworkflow.json new file mode 100644 index 00000000..5f979f68 --- /dev/null +++ b/api/src/test/resources/features/compensationworkflow.json @@ -0,0 +1,86 @@ +{ + "id": "CompensationWorkflow", + "name": "Compensation Workflow", + "version": "1.0", + "states": [ + { + "name": "NewItemPurchase", + "type": "event", + "onEvents": [ + { + "eventRefs": [ + "NewPurchase" + ], + "actions": [ + { + "functionRef": { + "refName": "DebitCustomerFunction", + "parameters": { + "customerid": "{{ $.purchase.customerid }}", + "amount": "{{ $.purchase.amount }}" + } + } + }, + { + "functionRef": { + "refName": "SendPurchaseConfirmationEmailFunction", + "parameters": { + "customerid": "{{ $.purchase.customerid }}" + } + } + } + ] + } + ], + "compensatedBy": "CancelPurchase", + "transition": { + "nextState": "SomeNextWorkflowState" + } + }, + { + "name": "CancelPurchase", + "type": "operation", + "usedForCompensation": true, + "actions": [ + { + "functionRef": { + "refName": "CreditCustomerFunction", + "parameters": { + "customerid": "{{ $.purchase.customerid }}", + "amount": "{{ $.purchase.amount }}" + } + } + }, + { + "functionRef": { + "refName": "SendPurchaseCancellationEmailFunction", + "parameters": { + "customerid": "{{ $.purchase.customerid }}" + } + } + } + ] + } + ], + "events": [ + { + "name": "NewItemPurchase", + "source": "purchasesource", + "type": "org.purchases" + } + ], + "functions": [ + { + "name": "DebitCustomerFunction", + "operation": "http://myapis.org/application.json#debit" + }, + { + "name": "SendPurchaseConfirmationEmailFunction", + "operation": "http://myapis.org/application.json#confirmationemail" + }, + { + "name": "SendPurchaseCancellationEmailFunction", + "operation": "http://myapis.org/application.json#cancellationemail" + } + ] +} \ No newline at end of file diff --git a/api/src/test/resources/features/compensationworkflow.yml b/api/src/test/resources/features/compensationworkflow.yml new file mode 100644 index 00000000..81506399 --- /dev/null +++ b/api/src/test/resources/features/compensationworkflow.yml @@ -0,0 +1,46 @@ +id: CompensationWorkflow +name: Compensation Workflow +version: '1.0' +states: + - name: NewItemPurchase + type: event + onEvents: + - eventRefs: + - NewPurchase + actions: + - functionRef: + refName: DebitCustomerFunction + parameters: + customerid: "{{ $.purchase.customerid }}" + amount: "{{ $.purchase.amount }}" + - functionRef: + refName: SendPurchaseConfirmationEmailFunction + parameters: + customerid: "{{ $.purchase.customerid }}" + compensatedBy: CancelPurchase + transition: + nextState: SomeNextWorkflowState + - name: CancelPurchase + type: operation + usedForCompensation: true + actions: + - functionRef: + refName: CreditCustomerFunction + parameters: + customerid: "{{ $.purchase.customerid }}" + amount: "{{ $.purchase.amount }}" + - functionRef: + refName: SendPurchaseCancellationEmailFunction + parameters: + customerid: "{{ $.purchase.customerid }}" +events: + - name: NewItemPurchase + source: purchasesource + type: org.purchases +functions: + - name: DebitCustomerFunction + operation: http://myapis.org/application.json#debit + - name: SendPurchaseConfirmationEmailFunction + operation: http://myapis.org/application.json#confirmationemail + - name: SendPurchaseCancellationEmailFunction + operation: http://myapis.org/application.json#cancellationemail From ad59d8cb99e608e63907546a1800dd8d5ea3d3d2 Mon Sep 17 00:00:00 2001 From: Tihomir Surdilovic Date: Fri, 11 Dec 2020 13:03:00 -0500 Subject: [PATCH 05/12] bumping version to 1.0.2.Final Signed-off-by: Tihomir Surdilovic --- README.md | 17 +++++++++-------- api/pom.xml | 2 +- diagram/pom.xml | 2 +- pom.xml | 2 +- spi/pom.xml | 2 +- validation/pom.xml | 2 +- 6 files changed, 14 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 6da36baf..458b68b3 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ to parse and validate workflow definitions as well as generate the workflow diag | Latest Releases | Conformance to spec version | | :---: | :---: | | 1.0.1.Final | [v0.5](https://github.com/serverlessworkflow/specification/tree/0.5.x) | +| 1.0.2.Final | [v0.5](https://github.com/serverlessworkflow/specification/tree/0.5.x) + [Compensation support](https://github.com/serverlessworkflow/specification/blob/master/specification.md#Workflow-Compensation) | ### Getting Started @@ -56,25 +57,25 @@ b) Add the following dependencies to your pom.xml `dependencies` section: io.serverlessworkflow serverlessworkflow-api - 1.0.1.Final + 1.0.2.Final io.serverlessworkflow serverlessworkflow-spi - 1.0.1.Final + 1.0.2.Final io.serverlessworkflow serverlessworkflow-validation - 1.0.1.Final + 1.0.2.Final io.serverlessworkflow serverlessworkflow-diagram - 1.0.1.Final + 1.0.2.Final ``` @@ -90,10 +91,10 @@ maven{ url "https://jitpack.io" } b) Add the following dependencies to your build.gradle `dependencies` section: ```text -implementation("io.serverlessworkflow:serverlessworkflow-api:1.0.1.Final") -implementation("io.serverlessworkflow:serverlessworkflow-spi:1.0.1.Final") -implementation("io.serverlessworkflow:serverlessworkflow-validation:1.0.1.Final") -implementation("io.serverlessworkflow:serverlessworkflow-diagram:1.0.1.Final") +implementation("io.serverlessworkflow:serverlessworkflow-api:1.0.2.Final") +implementation("io.serverlessworkflow:serverlessworkflow-spi:1.0.2.Final") +implementation("io.serverlessworkflow:serverlessworkflow-validation:1.0.2.Final") +implementation("io.serverlessworkflow:serverlessworkflow-diagram:1.0.2.Final") ``` ### How to Use diff --git a/api/pom.xml b/api/pom.xml index fe337aa3..020334db 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -6,7 +6,7 @@ io.serverlessworkflow serverlessworkflow-parent - 1.0.1.Final + 1.0.2.Final serverlessworkflow-api diff --git a/diagram/pom.xml b/diagram/pom.xml index 633fb36c..e603b50d 100644 --- a/diagram/pom.xml +++ b/diagram/pom.xml @@ -6,7 +6,7 @@ io.serverlessworkflow serverlessworkflow-parent - 1.0.1.Final + 1.0.2.Final serverlessworkflow-diagram diff --git a/pom.xml b/pom.xml index a297f592..132a2047 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ io.serverlessworkflow serverlessworkflow-parent - 1.0.1.Final + 1.0.2.Final pom Serverless Workflow :: Parent diff --git a/spi/pom.xml b/spi/pom.xml index 713550e0..eaf1069a 100644 --- a/spi/pom.xml +++ b/spi/pom.xml @@ -6,7 +6,7 @@ io.serverlessworkflow serverlessworkflow-parent - 1.0.1.Final + 1.0.2.Final serverlessworkflow-spi diff --git a/validation/pom.xml b/validation/pom.xml index 9dc87b01..b706f298 100644 --- a/validation/pom.xml +++ b/validation/pom.xml @@ -6,7 +6,7 @@ io.serverlessworkflow serverlessworkflow-parent - 1.0.1.Final + 1.0.2.Final serverlessworkflow-validation From 64e1f16e356ecf992cbf920d318ad011169c27f9 Mon Sep 17 00:00:00 2001 From: Tihomir Surdilovic Date: Fri, 11 Dec 2020 13:08:58 -0500 Subject: [PATCH 06/12] fix link in release table Signed-off-by: Tihomir Surdilovic --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 458b68b3..204d74ea 100644 --- a/README.md +++ b/README.md @@ -18,8 +18,8 @@ to parse and validate workflow definitions as well as generate the workflow diag | Latest Releases | Conformance to spec version | | :---: | :---: | -| 1.0.1.Final | [v0.5](https://github.com/serverlessworkflow/specification/tree/0.5.x) | -| 1.0.2.Final | [v0.5](https://github.com/serverlessworkflow/specification/tree/0.5.x) + [Compensation support](https://github.com/serverlessworkflow/specification/blob/master/specification.md#Workflow-Compensation) | +| [1.0.1.Final](https://github.com/serverlessworkflow/sdk-java/releases/) | [v0.5](https://github.com/serverlessworkflow/specification/tree/0.5.x) | +| [1.0.2.Final](https://github.com/serverlessworkflow/sdk-java/releases/) | [v0.5](https://github.com/serverlessworkflow/specification/tree/0.5.x) + [Compensation support](https://github.com/serverlessworkflow/specification/blob/master/specification.md#Workflow-Compensation) | ### Getting Started From 7b2ef61e7b416cfdb0ac7e82745d0d61258103b9 Mon Sep 17 00:00:00 2001 From: Tihomir Surdilovic Date: Tue, 5 Jan 2021 14:49:24 -0500 Subject: [PATCH 07/12] Updates to start/end definitions Signed-off-by: Tihomir Surdilovic --- README.md | 6 +- .../EndDefinitionDeserializer.java | 95 +++++++++++++++++++ .../StartDefinitionDeserializer.java | 75 +++++++++++++++ .../api/mapper/WorkflowModule.java | 6 ++ .../serializers/EndDefinitionSerializer.java | 69 ++++++++++++++ .../StartDefinitionSerializer.java | 52 ++++++++++ api/src/main/resources/schema/end/end.json | 15 +-- .../main/resources/schema/start/start.json | 12 +-- .../api/test/WorkflowToMarkupTest.java | 21 ++-- .../resources/examples/applicantrequest.json | 12 +-- .../resources/examples/applicantrequest.yml | 9 +- .../resources/examples/carauctionbids.json | 5 +- .../resources/examples/carauctionbids.yml | 3 +- .../test/resources/examples/creditcheck.json | 12 +-- .../test/resources/examples/creditcheck.yml | 9 +- .../examples/eventbasedgreeting.json | 8 +- .../resources/examples/eventbasedgreeting.yml | 6 +- .../examples/eventbasedtransition.json | 16 +--- .../examples/eventbasedtransition.yml | 12 +-- .../examples/finalizecollegeapplication.json | 8 +- .../examples/finalizecollegeapplication.yml | 5 +- .../examples/foreachstatewithactions.json | 4 +- .../examples/foreachstatewithactions.yml | 3 +- api/src/test/resources/examples/greeting.json | 8 +- api/src/test/resources/examples/greeting.yml | 6 +- .../test/resources/examples/helloworld.json | 8 +- .../test/resources/examples/helloworld.yml | 6 +- .../resources/examples/jobmonitoring.json | 16 +--- .../test/resources/examples/jobmonitoring.yml | 12 +-- .../resources/examples/monitorpatient.json | 6 +- .../resources/examples/monitorpatient.yml | 5 +- api/src/test/resources/examples/parallel.json | 8 +- api/src/test/resources/examples/parallel.yml | 6 +- .../examples/periodicinboxcheck.json | 5 +- .../resources/examples/periodicinboxcheck.yml | 4 +- .../resources/examples/provisionorder.json | 20 +--- .../resources/examples/provisionorder.yml | 15 +-- .../resources/examples/sendcloudevent.json | 5 +- .../resources/examples/sendcloudevent.yml | 4 +- .../resources/examples/solvemathproblems.json | 8 +- .../resources/examples/solvemathproblems.yml | 6 +- .../examples/vetappointmentservice.json | 8 +- .../examples/vetappointmentservice.yml | 6 +- .../resources/features/applicantrequest.json | 16 +--- .../resources/features/applicantrequest.yml | 12 +-- .../resources/features/vetappointment.json | 12 +-- .../resources/features/vetappointment.yml | 9 +- .../resources/examples/applicantrequest.json | 12 +-- .../resources/examples/applicantrequest.yml | 9 +- .../resources/examples/carauctionbids.json | 5 +- .../resources/examples/carauctionbids.yml | 3 +- .../test/resources/examples/creditcheck.json | 12 +-- .../test/resources/examples/creditcheck.yml | 9 +- .../examples/eventbasedgreeting.json | 8 +- .../resources/examples/eventbasedgreeting.yml | 6 +- .../examples/eventbasedtransition.json | 16 +--- .../examples/eventbasedtransition.yml | 12 +-- .../examples/finalizecollegeapplication.json | 8 +- .../examples/finalizecollegeapplication.yml | 5 +- .../examples/foreachstatewithactions.json | 6 +- .../examples/foreachstatewithactions.yml | 6 +- .../src/test/resources/examples/greeting.json | 8 +- .../src/test/resources/examples/greeting.yml | 6 +- .../test/resources/examples/helloworld.json | 8 +- .../test/resources/examples/helloworld.yml | 6 +- .../resources/examples/jobmonitoring.json | 16 +--- .../test/resources/examples/jobmonitoring.yml | 12 +-- .../resources/examples/monitorpatient.json | 8 +- .../resources/examples/monitorpatient.yml | 5 +- .../src/test/resources/examples/parallel.json | 8 +- .../src/test/resources/examples/parallel.yml | 6 +- .../examples/periodicinboxcheck.json | 5 +- .../resources/examples/periodicinboxcheck.yml | 4 +- .../resources/examples/provisionorder.json | 20 +--- .../resources/examples/provisionorder.yml | 15 +-- .../resources/examples/sendcloudevent.json | 5 +- .../resources/examples/sendcloudevent.yml | 4 +- .../resources/examples/singleeventstate.json | 4 +- .../resources/examples/singleeventstate.yml | 6 +- .../resources/examples/singleswitchstate.json | 14 +-- .../resources/examples/singleswitchstate.yml | 15 +-- .../singleswitchstateeventconditions.json | 14 +-- .../singleswitchstateeventconditions.yml | 15 +-- .../resources/examples/solvemathproblems.json | 8 +- .../resources/examples/solvemathproblems.yml | 6 +- .../examples/vetappointmentservice.json | 8 +- .../examples/vetappointmentservice.yml | 6 +- .../test/WorkflowValidationTest.java | 4 +- 88 files changed, 518 insertions(+), 509 deletions(-) create mode 100644 api/src/main/java/io/serverlessworkflow/api/deserializers/EndDefinitionDeserializer.java create mode 100644 api/src/main/java/io/serverlessworkflow/api/deserializers/StartDefinitionDeserializer.java create mode 100644 api/src/main/java/io/serverlessworkflow/api/serializers/EndDefinitionSerializer.java create mode 100644 api/src/main/java/io/serverlessworkflow/api/serializers/StartDefinitionSerializer.java diff --git a/README.md b/README.md index 204d74ea..15714e42 100644 --- a/README.md +++ b/README.md @@ -116,8 +116,7 @@ functions: states: - name: Greet type: operation - start: - kind: default + start: true actionMode: sequential actions: - functionRef: @@ -128,8 +127,7 @@ states: dataResultsPath: "$.payload.greeting" stateDataFilter: dataOutputPath: "$.greeting" - end: - kind: default + end: true ``` To parse it and create a Workflow intance you can do: diff --git a/api/src/main/java/io/serverlessworkflow/api/deserializers/EndDefinitionDeserializer.java b/api/src/main/java/io/serverlessworkflow/api/deserializers/EndDefinitionDeserializer.java new file mode 100644 index 00000000..1078519d --- /dev/null +++ b/api/src/main/java/io/serverlessworkflow/api/deserializers/EndDefinitionDeserializer.java @@ -0,0 +1,95 @@ +/* + * Copyright 2020-Present The Serverless Workflow Specification Authors + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package io.serverlessworkflow.api.deserializers; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; +import io.serverlessworkflow.api.end.End; +import io.serverlessworkflow.api.interfaces.WorkflowPropertySource; +import io.serverlessworkflow.api.produce.ProduceEvent; +import io.serverlessworkflow.api.start.Start; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +public class EndDefinitionDeserializer extends StdDeserializer { + + private static final long serialVersionUID = 510l; + private static Logger logger = LoggerFactory.getLogger(EndDefinitionDeserializer.class); + + private WorkflowPropertySource context; + + public EndDefinitionDeserializer() { + this(End.class); + } + + public EndDefinitionDeserializer(Class vc) { + super(vc); + } + + public EndDefinitionDeserializer(WorkflowPropertySource context) { + this(Start.class); + this.context = context; + } + + @Override + public End deserialize(JsonParser jp, + DeserializationContext ctxt) throws IOException { + + ObjectMapper mapper = (ObjectMapper) jp.getCodec(); + JsonNode node = jp.getCodec().readTree(jp); + + End end = new End(); + + if (node.isBoolean()) { + end.setProduceEvents(null); + end.setCompensate(false); + end.setTerminate(false); + return node.asBoolean() ? end : null; + } else { + if(node.get("produceEvents") != null) { + List produceEvents= new ArrayList<>(); + for (final JsonNode nodeEle : node.get("produceEvents")) { + produceEvents.add(mapper.treeToValue(nodeEle, ProduceEvent.class)); + } + end.setProduceEvents(produceEvents); + } + + if(node.get("terminate") != null) { + end.setTerminate(node.get("terminate").asBoolean()); + } else { + end.setTerminate(false); + } + + if(node.get("compensate") != null) { + end.setCompensate(node.get("compensate").asBoolean()); + } else { + end.setCompensate(false); + } + + return end; + + } + + } +} diff --git a/api/src/main/java/io/serverlessworkflow/api/deserializers/StartDefinitionDeserializer.java b/api/src/main/java/io/serverlessworkflow/api/deserializers/StartDefinitionDeserializer.java new file mode 100644 index 00000000..1ec0aaf0 --- /dev/null +++ b/api/src/main/java/io/serverlessworkflow/api/deserializers/StartDefinitionDeserializer.java @@ -0,0 +1,75 @@ +/* + * Copyright 2020-Present The Serverless Workflow Specification Authors + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package io.serverlessworkflow.api.deserializers; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; +import io.serverlessworkflow.api.interfaces.WorkflowPropertySource; +import io.serverlessworkflow.api.schedule.Schedule; +import io.serverlessworkflow.api.start.Start; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; + +public class StartDefinitionDeserializer extends StdDeserializer { + + private static final long serialVersionUID = 510l; + private static Logger logger = LoggerFactory.getLogger(StartDefinitionDeserializer.class); + + private WorkflowPropertySource context; + + public StartDefinitionDeserializer() { + this(Start.class); + } + + public StartDefinitionDeserializer(Class vc) { + super(vc); + } + + public StartDefinitionDeserializer(WorkflowPropertySource context) { + this(Start.class); + this.context = context; + } + + @Override + public Start deserialize(JsonParser jp, + DeserializationContext ctxt) throws IOException { + + ObjectMapper mapper = (ObjectMapper) jp.getCodec(); + JsonNode node = jp.getCodec().readTree(jp); + + Start start = new Start(); + + if (node.isBoolean()) { + start.setSchedule(null); + return node.asBoolean() ? start : null; + } else { + if(node.get("schedule") != null) { + start.setSchedule(mapper.treeToValue(node.get("schedule"), Schedule.class)); + } + + return start; + + } + + } +} + diff --git a/api/src/main/java/io/serverlessworkflow/api/mapper/WorkflowModule.java b/api/src/main/java/io/serverlessworkflow/api/mapper/WorkflowModule.java index af29ea0c..41dda19d 100644 --- a/api/src/main/java/io/serverlessworkflow/api/mapper/WorkflowModule.java +++ b/api/src/main/java/io/serverlessworkflow/api/mapper/WorkflowModule.java @@ -18,6 +18,7 @@ import com.fasterxml.jackson.databind.module.SimpleModule; import io.serverlessworkflow.api.deserializers.*; +import io.serverlessworkflow.api.end.End; import io.serverlessworkflow.api.events.EventDefinition; import io.serverlessworkflow.api.events.OnEvents; import io.serverlessworkflow.api.interfaces.Extension; @@ -25,6 +26,7 @@ import io.serverlessworkflow.api.interfaces.WorkflowPropertySource; import io.serverlessworkflow.api.schedule.Schedule; import io.serverlessworkflow.api.serializers.*; +import io.serverlessworkflow.api.start.Start; import io.serverlessworkflow.api.states.DefaultState; import io.serverlessworkflow.api.states.OperationState; import io.serverlessworkflow.api.states.ParallelState; @@ -64,6 +66,8 @@ private void addDefaultSerializers() { addSerializer(new InjectStateSerializer()); addSerializer(new ForEachStateSerializer()); addSerializer(new CallbackStateSerializer()); + addSerializer(new StartDefinitionSerializer()); + addSerializer(new EndDefinitionSerializer()); addSerializer(extensionSerializer); } @@ -84,6 +88,8 @@ private void addDefaultDeserializers() { addDeserializer(Retries.class, new RetriesDeserializer(workflowPropertySource)); addDeserializer(Functions.class, new FunctionsDeserializer(workflowPropertySource)); addDeserializer(Events.class, new EventsDeserializer(workflowPropertySource)); + addDeserializer(Start.class, new StartDefinitionDeserializer(workflowPropertySource)); + addDeserializer(End.class, new EndDefinitionDeserializer(workflowPropertySource)); addDeserializer(Extension.class, extensionDeserializer); } diff --git a/api/src/main/java/io/serverlessworkflow/api/serializers/EndDefinitionSerializer.java b/api/src/main/java/io/serverlessworkflow/api/serializers/EndDefinitionSerializer.java new file mode 100644 index 00000000..341f0372 --- /dev/null +++ b/api/src/main/java/io/serverlessworkflow/api/serializers/EndDefinitionSerializer.java @@ -0,0 +1,69 @@ +/* + * Copyright 2020-Present The Serverless Workflow Specification Authors + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package io.serverlessworkflow.api.serializers; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import io.serverlessworkflow.api.end.End; +import io.serverlessworkflow.api.produce.ProduceEvent; + +import java.io.IOException; + +public class EndDefinitionSerializer extends StdSerializer { + + public EndDefinitionSerializer() { + this(End.class); + } + + protected EndDefinitionSerializer(Class t) { + super(t); + } + + @Override + public void serialize(End end, + JsonGenerator gen, + SerializerProvider provider) throws IOException { + + if(end != null) { + if((end.getProduceEvents() == null || end.getProduceEvents().size() < 1) + && !end.isCompensate() && !end.isTerminate()) { + gen.writeBoolean(true); + } else { + gen.writeStartObject(); + + if(end.isTerminate()) { + gen.writeBooleanField("terminate", true); + } + + if (end.getProduceEvents() != null && !end.getProduceEvents().isEmpty()) { + gen.writeArrayFieldStart("produceEvents"); + for (ProduceEvent produceEvent : end.getProduceEvents()) { + gen.writeObject(produceEvent); + } + gen.writeEndArray(); + } + + if(end.isCompensate()) { + gen.writeBooleanField("compensate", true); + } + + gen.writeEndObject(); + } + } + } +} diff --git a/api/src/main/java/io/serverlessworkflow/api/serializers/StartDefinitionSerializer.java b/api/src/main/java/io/serverlessworkflow/api/serializers/StartDefinitionSerializer.java new file mode 100644 index 00000000..4b00c974 --- /dev/null +++ b/api/src/main/java/io/serverlessworkflow/api/serializers/StartDefinitionSerializer.java @@ -0,0 +1,52 @@ +/* + * Copyright 2020-Present The Serverless Workflow Specification Authors + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package io.serverlessworkflow.api.serializers; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import io.serverlessworkflow.api.start.Start; + +import java.io.IOException; + +public class StartDefinitionSerializer extends StdSerializer { + + public StartDefinitionSerializer() { + this(Start.class); + } + + protected StartDefinitionSerializer(Class t) { + super(t); + } + + @Override + public void serialize(Start start, + JsonGenerator gen, + SerializerProvider provider) throws IOException { + + if(start != null) { + if(start.getSchedule() == null) { + gen.writeBoolean(true); + } else { + gen.writeStartObject(); + gen.writeObjectField("schedule", + start.getSchedule()); + gen.writeEndObject(); + } + } + } +} diff --git a/api/src/main/resources/schema/end/end.json b/api/src/main/resources/schema/end/end.json index ebf3ceed..7b959a2a 100644 --- a/api/src/main/resources/schema/end/end.json +++ b/api/src/main/resources/schema/end/end.json @@ -3,19 +3,14 @@ "javaType": "io.serverlessworkflow.api.end.End", "description": "State end definition", "properties": { - "kind": { - "type": "string", - "enum": [ - "default", - "terminate", - "event" - ], - "default": "default", - "description": "Kind of End definition" + "terminate": { + "type": "boolean", + "default": false, + "description": "If true, completes all execution flows in the given workflow instance" }, "produceEvents": { "type": "array", - "description": "Used if kind is event. Array of events to be produced", + "description": "Array of events to be produced", "items": { "type": "object", "$ref": "../produce/produceevent.json" diff --git a/api/src/main/resources/schema/start/start.json b/api/src/main/resources/schema/start/start.json index 63417f76..e3ecc283 100644 --- a/api/src/main/resources/schema/start/start.json +++ b/api/src/main/resources/schema/start/start.json @@ -3,21 +3,11 @@ "javaType": "io.serverlessworkflow.api.start.Start", "description": "State start definition", "properties": { - "kind": { - "type": "string", - "enum": [ - "default", - "scheduled" - ], - "default": "default", - "description": "Kind of Start definition" - }, "schedule": { - "description": "If kind is 'scheduled', define when the time/repeating intervals at which workflow instances can/should be started", + "description": "Define when the time/repeating intervals at which workflow instances can/should be started", "$ref": "../schedule/schedule.json" } }, "required": [ - "kind" ] } \ No newline at end of file diff --git a/api/src/test/java/io/serverlessworkflow/api/test/WorkflowToMarkupTest.java b/api/src/test/java/io/serverlessworkflow/api/test/WorkflowToMarkupTest.java index 005b5f6e..8518fb1d 100644 --- a/api/src/test/java/io/serverlessworkflow/api/test/WorkflowToMarkupTest.java +++ b/api/src/test/java/io/serverlessworkflow/api/test/WorkflowToMarkupTest.java @@ -21,6 +21,8 @@ import io.serverlessworkflow.api.events.EventDefinition; import io.serverlessworkflow.api.functions.FunctionDefinition; import io.serverlessworkflow.api.interfaces.State; +import io.serverlessworkflow.api.produce.ProduceEvent; +import io.serverlessworkflow.api.schedule.Schedule; import io.serverlessworkflow.api.start.Start; import io.serverlessworkflow.api.states.DelayState; import io.serverlessworkflow.api.workflow.Events; @@ -40,10 +42,15 @@ public void testSingleState() { .withStates(Arrays.asList( new DelayState().withName("delayState").withType(DELAY) .withStart( - new Start().withKind(Start.Kind.DEFAULT) + new Start().withSchedule( + new Schedule().withInterval("PT1S") + ) ) .withEnd( - new End().withKind(End.Kind.DEFAULT) + new End().withTerminate(true).withCompensate(true) + .withProduceEvents(Arrays.asList( + new ProduceEvent().withEventRef("someEvent") + )) ) .withTimeDelay("PT1M") ) @@ -53,6 +60,8 @@ public void testSingleState() { assertEquals(1, workflow.getStates().size()); State state = workflow.getStates().get(0); assertTrue(state instanceof DelayState); + assertNotNull(state.getStart()); + assertNotNull(state.getEnd()); assertNotNull(Workflow.toJson(workflow)); assertNotNull(Workflow.toYaml(workflow)); @@ -69,10 +78,10 @@ public void testSingleFunction() { .withStates(Arrays.asList( new DelayState().withName("delayState").withType(DELAY) .withStart( - new Start().withKind(Start.Kind.DEFAULT) + new Start() ) .withEnd( - new End().withKind(End.Kind.DEFAULT) + new End() ) .withTimeDelay("PT1M") ) @@ -105,10 +114,10 @@ public void testSingleEvent() { .withStates(Arrays.asList( new DelayState().withName("delayState").withType(DELAY) .withStart( - new Start().withKind(Start.Kind.DEFAULT) + new Start() ) .withEnd( - new End().withKind(End.Kind.DEFAULT) + new End() ) .withTimeDelay("PT1M") ) diff --git a/api/src/test/resources/examples/applicantrequest.json b/api/src/test/resources/examples/applicantrequest.json index 63ba80e1..a0f783b1 100644 --- a/api/src/test/resources/examples/applicantrequest.json +++ b/api/src/test/resources/examples/applicantrequest.json @@ -13,9 +13,7 @@ { "name":"CheckApplication", "type":"switch", - "start": { - "kind": "default" - }, + "start": true, "dataConditions": [ { "condition": "{{ $.applicants[?(@.age >= 18)] }}", @@ -40,9 +38,7 @@ "name": "StartApplication", "type": "subflow", "workflowId": "startApplicationWorkflowId", - "end": { - "kind": "default" - } + "end": true }, { "name":"RejectApplication", @@ -58,9 +54,7 @@ } } ], - "end": { - "kind": "default" - } + "end": true } ] } \ No newline at end of file diff --git a/api/src/test/resources/examples/applicantrequest.yml b/api/src/test/resources/examples/applicantrequest.yml index 25526873..2fc4d15b 100644 --- a/api/src/test/resources/examples/applicantrequest.yml +++ b/api/src/test/resources/examples/applicantrequest.yml @@ -9,8 +9,7 @@ functions: states: - name: CheckApplication type: switch - start: - kind: default + start: true dataConditions: - condition: "{{ $.applicants[?(@.age >= 18)] }}" transition: @@ -24,8 +23,7 @@ states: - name: StartApplication type: subflow workflowId: startApplicationWorkflowId - end: - kind: default + end: true - name: RejectApplication type: operation actionMode: sequential @@ -34,5 +32,4 @@ states: refName: sendRejectionEmailFunction parameters: applicant: "{{ $.applicant }}" - end: - kind: default + end: true diff --git a/api/src/test/resources/examples/carauctionbids.json b/api/src/test/resources/examples/carauctionbids.json index 10cd5680..f4d3d0e6 100644 --- a/api/src/test/resources/examples/carauctionbids.json +++ b/api/src/test/resources/examples/carauctionbids.json @@ -21,7 +21,6 @@ "name": "StoreCarAuctionBid", "type": "event", "start": { - "kind": "scheduled", "schedule": { "interval": "2020-03-20T09:00:00Z/2020-03-20T15:00:00Z" } @@ -40,9 +39,7 @@ }] } ], - "end": { - "kind": "terminate" - } + "end": true } ] } \ No newline at end of file diff --git a/api/src/test/resources/examples/carauctionbids.yml b/api/src/test/resources/examples/carauctionbids.yml index 161d3c14..b6854aa7 100644 --- a/api/src/test/resources/examples/carauctionbids.yml +++ b/api/src/test/resources/examples/carauctionbids.yml @@ -13,7 +13,6 @@ states: - name: StoreCarAuctionBid type: event start: - kind: scheduled schedule: interval: 2020-03-20T09:00:00Z/2020-03-20T15:00:00Z exclusive: true @@ -26,4 +25,4 @@ states: parameters: bid: "{{ $.bid }}" end: - kind: terminate \ No newline at end of file + terminate: true \ No newline at end of file diff --git a/api/src/test/resources/examples/creditcheck.json b/api/src/test/resources/examples/creditcheck.json index 92c30506..046b64ac 100644 --- a/api/src/test/resources/examples/creditcheck.json +++ b/api/src/test/resources/examples/creditcheck.json @@ -29,9 +29,7 @@ { "name": "CheckCredit", "type": "callback", - "start": { - "kind": "default" - }, + "start": true, "action": { "functionRef": { "refName": "callCreditCheckMicroservice", @@ -75,9 +73,7 @@ "name": "StartApplication", "type": "subflow", "workflowId": "startApplicationWorkflowId", - "end": { - "kind": "default" - } + "end": true }, { "name": "RejectApplication", @@ -93,9 +89,7 @@ } } ], - "end": { - "kind": "default" - } + "end": true } ] } \ No newline at end of file diff --git a/api/src/test/resources/examples/creditcheck.yml b/api/src/test/resources/examples/creditcheck.yml index b275f719..65ad7c35 100644 --- a/api/src/test/resources/examples/creditcheck.yml +++ b/api/src/test/resources/examples/creditcheck.yml @@ -17,8 +17,7 @@ events: states: - name: CheckCredit type: callback - start: - kind: default + start: true action: functionRef: refName: callCreditCheckMicroservice @@ -45,8 +44,7 @@ states: - name: StartApplication type: subflow workflowId: startApplicationWorkflowId - end: - kind: default + end: true - name: RejectApplication type: operation actionMode: sequential @@ -55,5 +53,4 @@ states: refName: sendRejectionEmailFunction parameters: applicant: "{{ $.customer }}" - end: - kind: default + end: true diff --git a/api/src/test/resources/examples/eventbasedgreeting.json b/api/src/test/resources/examples/eventbasedgreeting.json index 3bdaffe0..d131099a 100644 --- a/api/src/test/resources/examples/eventbasedgreeting.json +++ b/api/src/test/resources/examples/eventbasedgreeting.json @@ -20,9 +20,7 @@ { "name":"Greet", "type":"event", - "start": { - "kind": "default" - }, + "start": true, "onEvents": [{ "eventRefs": ["GreetingEvent"], "eventDataFilter": { @@ -42,9 +40,7 @@ "stateDataFilter": { "dataOutputPath": "{{ $.payload.greeting }}" }, - "end": { - "kind": "default" - } + "end": true } ] } \ No newline at end of file diff --git a/api/src/test/resources/examples/eventbasedgreeting.yml b/api/src/test/resources/examples/eventbasedgreeting.yml index e624babc..592dc13b 100644 --- a/api/src/test/resources/examples/eventbasedgreeting.yml +++ b/api/src/test/resources/examples/eventbasedgreeting.yml @@ -12,8 +12,7 @@ functions: states: - name: Greet type: event - start: - kind: default + start: true onEvents: - eventRefs: - GreetingEvent @@ -26,5 +25,4 @@ states: name: "{{ $.greet.name }}" stateDataFilter: dataOutputPath: "{{ $.payload.greeting }}" - end: - kind: default \ No newline at end of file + end: true \ No newline at end of file diff --git a/api/src/test/resources/examples/eventbasedtransition.json b/api/src/test/resources/examples/eventbasedtransition.json index 8300135c..f5b4ffce 100644 --- a/api/src/test/resources/examples/eventbasedtransition.json +++ b/api/src/test/resources/examples/eventbasedtransition.json @@ -19,9 +19,7 @@ { "name":"CheckVisaStatus", "type":"switch", - "start": { - "kind": "default" - }, + "start": true, "eventConditions": [ { "eventRef": "visaApprovedEvent", @@ -47,25 +45,19 @@ "name": "HandleApprovedVisa", "type": "subflow", "workflowId": "handleApprovedVisaWorkflowID", - "end": { - "kind": "default" - } + "end": true }, { "name": "HandleRejectedVisa", "type": "subflow", "workflowId": "handleRejectedVisaWorkflowID", - "end": { - "kind": "default" - } + "end": true }, { "name": "HandleNoVisaDecision", "type": "subflow", "workflowId": "handleNoVisaDecisionWorkfowId", - "end": { - "kind": "default" - } + "end": true } ] } \ No newline at end of file diff --git a/api/src/test/resources/examples/eventbasedtransition.yml b/api/src/test/resources/examples/eventbasedtransition.yml index ef31466c..5f9dc8ed 100644 --- a/api/src/test/resources/examples/eventbasedtransition.yml +++ b/api/src/test/resources/examples/eventbasedtransition.yml @@ -13,8 +13,7 @@ events: states: - name: CheckVisaStatus type: switch - start: - kind: default + start: true eventConditions: - eventRef: visaApprovedEvent transition: @@ -29,15 +28,12 @@ states: - name: HandleApprovedVisa type: subflow workflowId: handleApprovedVisaWorkflowID - end: - kind: default + end: true - name: HandleRejectedVisa type: subflow workflowId: handleRejectedVisaWorkflowID - end: - kind: default + end: true - name: HandleNoVisaDecision type: subflow workflowId: handleNoVisaDecisionWorkfowId - end: - kind: default + end: true diff --git a/api/src/test/resources/examples/finalizecollegeapplication.json b/api/src/test/resources/examples/finalizecollegeapplication.json index 236ee6f3..b8af578c 100644 --- a/api/src/test/resources/examples/finalizecollegeapplication.json +++ b/api/src/test/resources/examples/finalizecollegeapplication.json @@ -44,9 +44,7 @@ { "name": "FinalizeApplication", "type": "event", - "start": { - "kind": "default" - }, + "start": true, "exclusive": false, "onEvents": [ { @@ -67,9 +65,7 @@ ] } ], - "end": { - "kind": "terminate" - } + "end": true } ] } \ No newline at end of file diff --git a/api/src/test/resources/examples/finalizecollegeapplication.yml b/api/src/test/resources/examples/finalizecollegeapplication.yml index c05634f8..1f228ae8 100644 --- a/api/src/test/resources/examples/finalizecollegeapplication.yml +++ b/api/src/test/resources/examples/finalizecollegeapplication.yml @@ -23,8 +23,7 @@ functions: states: - name: FinalizeApplication type: event - start: - kind: default + start: true exclusive: false onEvents: - eventRefs: @@ -37,4 +36,4 @@ states: parameters: student: "{{ $.applicantId }}" end: - kind: terminate \ No newline at end of file + terminate: true \ No newline at end of file diff --git a/api/src/test/resources/examples/foreachstatewithactions.json b/api/src/test/resources/examples/foreachstatewithactions.json index fc631578..bc52250a 100644 --- a/api/src/test/resources/examples/foreachstatewithactions.json +++ b/api/src/test/resources/examples/foreachstatewithactions.json @@ -25,9 +25,7 @@ } } }], - "end": { - "kind": "default" - } + "end": true } ] } \ No newline at end of file diff --git a/api/src/test/resources/examples/foreachstatewithactions.yml b/api/src/test/resources/examples/foreachstatewithactions.yml index cdb48871..55ae4513 100644 --- a/api/src/test/resources/examples/foreachstatewithactions.yml +++ b/api/src/test/resources/examples/foreachstatewithactions.yml @@ -17,5 +17,4 @@ states: parameters: orderNumber: "{{ $.completedorder.orderNumber }}" email: "{{ $.completedorder.email }}" - end: - kind: default + end: true diff --git a/api/src/test/resources/examples/greeting.json b/api/src/test/resources/examples/greeting.json index 25f89f3a..7c8b58da 100644 --- a/api/src/test/resources/examples/greeting.json +++ b/api/src/test/resources/examples/greeting.json @@ -13,9 +13,7 @@ { "name":"Greet", "type":"operation", - "start": { - "kind": "default" - }, + "start": true, "actions":[ { "functionRef": { @@ -29,9 +27,7 @@ } } ], - "end": { - "kind": "default" - } + "end": true } ] } \ No newline at end of file diff --git a/api/src/test/resources/examples/greeting.yml b/api/src/test/resources/examples/greeting.yml index fc791b9c..020617db 100644 --- a/api/src/test/resources/examples/greeting.yml +++ b/api/src/test/resources/examples/greeting.yml @@ -8,8 +8,7 @@ functions: states: - name: Greet type: operation - start: - kind: default + start: true actions: - functionRef: refName: greetingFunction @@ -17,5 +16,4 @@ states: name: "{{ $.person.name }}" actionDataFilter: dataResultsPath: "{{ $.greeting }}" - end: - kind: default \ No newline at end of file + end: true \ No newline at end of file diff --git a/api/src/test/resources/examples/helloworld.json b/api/src/test/resources/examples/helloworld.json index 5ffd0996..4643ec98 100644 --- a/api/src/test/resources/examples/helloworld.json +++ b/api/src/test/resources/examples/helloworld.json @@ -7,15 +7,11 @@ { "name":"Hello State", "type":"inject", - "start": { - "kind": "default" - }, + "start": true, "data": { "result": "Hello World!" }, - "end": { - "kind": "default" - } + "end": true } ] } \ No newline at end of file diff --git a/api/src/test/resources/examples/helloworld.yml b/api/src/test/resources/examples/helloworld.yml index 1b49b3b3..7bc87270 100644 --- a/api/src/test/resources/examples/helloworld.yml +++ b/api/src/test/resources/examples/helloworld.yml @@ -5,9 +5,7 @@ description: Inject Hello World states: - name: Hello State type: inject - start: - kind: default + start: true data: result: Hello World! - end: - kind: default \ No newline at end of file + end: true \ No newline at end of file diff --git a/api/src/test/resources/examples/jobmonitoring.json b/api/src/test/resources/examples/jobmonitoring.json index 3857cde8..3229e0c7 100644 --- a/api/src/test/resources/examples/jobmonitoring.json +++ b/api/src/test/resources/examples/jobmonitoring.json @@ -25,9 +25,7 @@ { "name":"SubmitJob", "type":"operation", - "start": { - "kind": "default" - }, + "start": true, "actionMode":"sequential", "actions":[ { @@ -61,9 +59,7 @@ "name": "SubmitError", "type": "subflow", "workflowId": "handleJobSubmissionErrorWorkflow", - "end": { - "kind": "default" - } + "end": true }, { "name": "WaitForCompletion", @@ -134,9 +130,7 @@ } } ], - "end": { - "kind": "default" - } + "end": true }, { "name":"JobFailed", @@ -152,9 +146,7 @@ } } ], - "end": { - "kind": "default" - } + "end": true } ] } \ No newline at end of file diff --git a/api/src/test/resources/examples/jobmonitoring.yml b/api/src/test/resources/examples/jobmonitoring.yml index 883eb974..d375a752 100644 --- a/api/src/test/resources/examples/jobmonitoring.yml +++ b/api/src/test/resources/examples/jobmonitoring.yml @@ -15,8 +15,7 @@ functions: states: - name: SubmitJob type: operation - start: - kind: default + start: true actionMode: sequential actions: - functionRef: @@ -36,8 +35,7 @@ states: - name: SubmitError type: subflow workflowId: handleJobSubmissionErrorWorkflow - end: - kind: default + end: true - name: WaitForCompletion type: delay timeDelay: PT5S @@ -77,8 +75,7 @@ states: refName: reportJobSuceeded parameters: name: "{{ $.jobuid }}" - end: - kind: default + end: true - name: JobFailed type: operation actionMode: sequential @@ -87,5 +84,4 @@ states: refName: reportJobFailed parameters: name: "{{ $.jobuid }}" - end: - kind: default + end: true diff --git a/api/src/test/resources/examples/monitorpatient.json b/api/src/test/resources/examples/monitorpatient.json index baf16d05..a799fa86 100644 --- a/api/src/test/resources/examples/monitorpatient.json +++ b/api/src/test/resources/examples/monitorpatient.json @@ -52,9 +52,7 @@ { "name": "MonitorVitals", "type": "event", - "start": { - "kind": "default" - }, + "start": true, "exclusive": true, "onEvents": [{ "eventRefs": ["HighBodyTemperature"], @@ -91,7 +89,7 @@ } ], "end": { - "kind": "terminate" + "terminate": true } }] } \ No newline at end of file diff --git a/api/src/test/resources/examples/monitorpatient.yml b/api/src/test/resources/examples/monitorpatient.yml index 343d87d3..3a85f0aa 100644 --- a/api/src/test/resources/examples/monitorpatient.yml +++ b/api/src/test/resources/examples/monitorpatient.yml @@ -27,8 +27,7 @@ functions: states: - name: MonitorVitals type: event - start: - kind: default + start: true exclusive: true onEvents: - eventRefs: @@ -53,4 +52,4 @@ states: parameters: patientid: "{{ $.patientId }}" end: - kind: terminate \ No newline at end of file + terminate: true \ No newline at end of file diff --git a/api/src/test/resources/examples/parallel.json b/api/src/test/resources/examples/parallel.json index 089c0801..c479e749 100644 --- a/api/src/test/resources/examples/parallel.json +++ b/api/src/test/resources/examples/parallel.json @@ -7,9 +7,7 @@ { "name": "ParallelExec", "type": "parallel", - "start": { - "kind": "default" - }, + "start": true, "completionType": "and", "branches": [ { @@ -21,9 +19,7 @@ "workflowId": "longdelayworkflowid" } ], - "end": { - "kind": "default" - } + "end": true } ] } \ No newline at end of file diff --git a/api/src/test/resources/examples/parallel.yml b/api/src/test/resources/examples/parallel.yml index d799cd78..6f086880 100644 --- a/api/src/test/resources/examples/parallel.yml +++ b/api/src/test/resources/examples/parallel.yml @@ -5,13 +5,11 @@ description: Executes two branches in parallel states: - name: ParallelExec type: parallel - start: - kind: default + start: true completionType: and branches: - name: ShortDelayBranch workflowId: shortdelayworkflowid - name: LongDelayBranch workflowId: longdelayworkflowid - end: - kind: default \ No newline at end of file + end: true \ No newline at end of file diff --git a/api/src/test/resources/examples/periodicinboxcheck.json b/api/src/test/resources/examples/periodicinboxcheck.json index 24752487..a2b6ecdd 100644 --- a/api/src/test/resources/examples/periodicinboxcheck.json +++ b/api/src/test/resources/examples/periodicinboxcheck.json @@ -18,7 +18,6 @@ "name": "CheckInbox", "type": "operation", "start": { - "kind": "scheduled", "schedule": { "cron": "0 0/15 * * * ?" } @@ -50,9 +49,7 @@ } } ], - "end": { - "kind": "default" - } + "end": true } ] } \ No newline at end of file diff --git a/api/src/test/resources/examples/periodicinboxcheck.yml b/api/src/test/resources/examples/periodicinboxcheck.yml index 9b4cdc55..117b4682 100644 --- a/api/src/test/resources/examples/periodicinboxcheck.yml +++ b/api/src/test/resources/examples/periodicinboxcheck.yml @@ -11,7 +11,6 @@ states: - name: CheckInbox type: operation start: - kind: scheduled schedule: cron: 0 0/15 * * * ? actionMode: sequential @@ -29,5 +28,4 @@ states: refName: sendTextFunction parameters: message: "{{ $.singlemessage }}" - end: - kind: default \ No newline at end of file + end: true \ No newline at end of file diff --git a/api/src/test/resources/examples/provisionorder.json b/api/src/test/resources/examples/provisionorder.json index f56c50ba..c7ab194f 100644 --- a/api/src/test/resources/examples/provisionorder.json +++ b/api/src/test/resources/examples/provisionorder.json @@ -13,9 +13,7 @@ { "name":"ProvisionOrder", "type":"operation", - "start": { - "kind": "default" - }, + "start": true, "actionMode":"sequential", "actions":[ { @@ -58,33 +56,25 @@ "name": "MissingId", "type": "subflow", "workflowId": "handleMissingIdExceptionWorkflow", - "end": { - "kind": "default" - } + "end": true }, { "name": "MissingItem", "type": "subflow", "workflowId": "handleMissingItemExceptionWorkflow", - "end": { - "kind": "default" - } + "end": true }, { "name": "MissingQuantity", "type": "subflow", "workflowId": "handleMissingQuantityExceptionWorkflow", - "end": { - "kind": "default" - } + "end": true }, { "name": "ApplyOrder", "type": "subflow", "workflowId": "applyOrderWorkflowId", - "end": { - "kind": "default" - } + "end": true } ] } \ No newline at end of file diff --git a/api/src/test/resources/examples/provisionorder.yml b/api/src/test/resources/examples/provisionorder.yml index 2031dd14..44777fe6 100644 --- a/api/src/test/resources/examples/provisionorder.yml +++ b/api/src/test/resources/examples/provisionorder.yml @@ -8,8 +8,7 @@ functions: states: - name: ProvisionOrder type: operation - start: - kind: default + start: true actionMode: sequential actions: - functionRef: @@ -33,20 +32,16 @@ states: - name: MissingId type: subflow workflowId: handleMissingIdExceptionWorkflow - end: - kind: default + end: true - name: MissingItem type: subflow workflowId: handleMissingItemExceptionWorkflow - end: - kind: default + end: true - name: MissingQuantity type: subflow workflowId: handleMissingQuantityExceptionWorkflow - end: - kind: default + end: true - name: ApplyOrder type: subflow workflowId: applyOrderWorkflowId - end: - kind: default \ No newline at end of file + end: true \ No newline at end of file diff --git a/api/src/test/resources/examples/sendcloudevent.json b/api/src/test/resources/examples/sendcloudevent.json index 40232d5b..861d90b6 100644 --- a/api/src/test/resources/examples/sendcloudevent.json +++ b/api/src/test/resources/examples/sendcloudevent.json @@ -19,9 +19,7 @@ { "name": "ProvisionOrdersState", "type": "foreach", - "start": { - "kind": "default" - }, + "start": true, "inputCollection": "{{ $.orders }}", "iterationParam": "singleorder", "outputCollection": "{{ $.provisionedOrders }}", @@ -36,7 +34,6 @@ } ], "end": { - "kind": "event", "produceEvents": [ { "eventRef": "provisioningCompleteEvent", diff --git a/api/src/test/resources/examples/sendcloudevent.yml b/api/src/test/resources/examples/sendcloudevent.yml index 275f6820..1a3c39d7 100644 --- a/api/src/test/resources/examples/sendcloudevent.yml +++ b/api/src/test/resources/examples/sendcloudevent.yml @@ -12,8 +12,7 @@ functions: states: - name: ProvisionOrdersState type: foreach - start: - kind: default + start: true inputCollection: "{{ $.orders }}" iterationParam: singleorder outputCollection: "{{ $.provisionedOrders }}" @@ -23,7 +22,6 @@ states: parameters: order: "{{ $.singleorder }}" end: - kind: event produceEvents: - eventRef: provisioningCompleteEvent data: "{{ $.provisionedOrders }}" diff --git a/api/src/test/resources/examples/solvemathproblems.json b/api/src/test/resources/examples/solvemathproblems.json index a629d6d3..ac51ef5f 100644 --- a/api/src/test/resources/examples/solvemathproblems.json +++ b/api/src/test/resources/examples/solvemathproblems.json @@ -12,9 +12,7 @@ "states":[ { "name":"Solve", - "start": { - "kind": "default" - }, + "start": true, "type":"foreach", "inputCollection": "{{ $.expressions }}", "iterationParam": "singleexpression", @@ -32,9 +30,7 @@ "stateDataFilter": { "dataOutputPath": "{{ $.results }}" }, - "end": { - "kind": "default" - } + "end": true } ] } \ No newline at end of file diff --git a/api/src/test/resources/examples/solvemathproblems.yml b/api/src/test/resources/examples/solvemathproblems.yml index 6dcf2481..53ec8aa4 100644 --- a/api/src/test/resources/examples/solvemathproblems.yml +++ b/api/src/test/resources/examples/solvemathproblems.yml @@ -7,8 +7,7 @@ functions: operation: http://myapis.org/mapthapis.json#solveExpression states: - name: Solve - start: - kind: default + start: true type: foreach inputCollection: "{{ $.expressions }}" iterationParam: singleexpression @@ -20,5 +19,4 @@ states: expression: "{{ $.singleexpression }}" stateDataFilter: dataOutputPath: "{{ $.results }}" - end: - kind: default \ No newline at end of file + end: true \ No newline at end of file diff --git a/api/src/test/resources/examples/vetappointmentservice.json b/api/src/test/resources/examples/vetappointmentservice.json index 3b567a6d..5432677e 100644 --- a/api/src/test/resources/examples/vetappointmentservice.json +++ b/api/src/test/resources/examples/vetappointmentservice.json @@ -19,9 +19,7 @@ { "name": "MakeVetAppointmentState", "type": "operation", - "start": { - "kind": "default" - }, + "start": true, "actions": [ { "name": "MakeAppointmentAction", @@ -36,9 +34,7 @@ "timeout": "PT15M" } ], - "end": { - "kind": "default" - } + "end": true } ] } \ No newline at end of file diff --git a/api/src/test/resources/examples/vetappointmentservice.yml b/api/src/test/resources/examples/vetappointmentservice.yml index 13f02648..08f7cfce 100644 --- a/api/src/test/resources/examples/vetappointmentservice.yml +++ b/api/src/test/resources/examples/vetappointmentservice.yml @@ -12,8 +12,7 @@ events: states: - name: MakeVetAppointmentState type: operation - start: - kind: default + start: true actions: - name: MakeAppointmentAction eventRef: @@ -23,5 +22,4 @@ states: actionDataFilter: dataResultsPath: "{{ $.appointmentInfo }}" timeout: PT15M - end: - kind: default \ No newline at end of file + end: true \ No newline at end of file diff --git a/api/src/test/resources/features/applicantrequest.json b/api/src/test/resources/features/applicantrequest.json index bf649ef6..09be71f1 100644 --- a/api/src/test/resources/features/applicantrequest.json +++ b/api/src/test/resources/features/applicantrequest.json @@ -9,9 +9,7 @@ { "name":"CheckApplication", "type":"switch", - "start": { - "kind": "default" - }, + "start": true, "dataConditions": [ { "condition": "{{ $.applicants[?(@.age >= 18)] }}", @@ -36,9 +34,7 @@ "name": "StartApplication", "type": "subflow", "workflowId": "startApplicationWorkflowId", - "end": { - "kind": "default" - } + "end": true }, { "name":"RejectApplication", @@ -59,14 +55,10 @@ "error": "TimeoutError", "code": "500", "retryRef": "TimeoutRetryStrategy", - "end": { - "kind": "default" - } + "end": true } ], - "end": { - "kind": "default" - } + "end": true } ] } \ No newline at end of file diff --git a/api/src/test/resources/features/applicantrequest.yml b/api/src/test/resources/features/applicantrequest.yml index 0ed37e99..2b688a70 100644 --- a/api/src/test/resources/features/applicantrequest.yml +++ b/api/src/test/resources/features/applicantrequest.yml @@ -7,8 +7,7 @@ retries: features/applicantrequestretries.yml states: - name: CheckApplication type: switch - start: - kind: default + start: true dataConditions: - condition: "{{ $.applicants[?(@.age >= 18)] }}" transition: @@ -22,8 +21,7 @@ states: - name: StartApplication type: subflow workflowId: startApplicationWorkflowId - end: - kind: default + end: true - name: RejectApplication type: operation actionMode: sequential @@ -36,7 +34,5 @@ states: - error: TimeoutError code: '500' retryRef: TimeoutRetryStrategy - end: - kind: default - end: - kind: default + end: true + end: true diff --git a/api/src/test/resources/features/vetappointment.json b/api/src/test/resources/features/vetappointment.json index 954d76df..86d7bd36 100644 --- a/api/src/test/resources/features/vetappointment.json +++ b/api/src/test/resources/features/vetappointment.json @@ -9,9 +9,7 @@ { "name": "MakeVetAppointmentState", "type": "operation", - "start": { - "kind": "default" - }, + "start": true, "actions": [ { "name": "MakeAppointmentAction", @@ -31,14 +29,10 @@ "error": "TimeoutError", "code": "500", "retryRef": "TimeoutRetryStrategy", - "end": { - "kind": "default" - } + "end": true } ], - "end": { - "kind": "default" - } + "end": true } ] } \ No newline at end of file diff --git a/api/src/test/resources/features/vetappointment.yml b/api/src/test/resources/features/vetappointment.yml index 143e85ad..36ef7d95 100644 --- a/api/src/test/resources/features/vetappointment.yml +++ b/api/src/test/resources/features/vetappointment.yml @@ -7,8 +7,7 @@ retries: features/vetappointmentretries.yml states: - name: MakeVetAppointmentState type: operation - start: - kind: default + start: true actions: - name: MakeAppointmentAction eventRef: @@ -22,7 +21,5 @@ states: - error: TimeoutError code: '500' retryRef: TimeoutRetryStrategy - end: - kind: default - end: - kind: default + end: true + end: true diff --git a/diagram/src/test/resources/examples/applicantrequest.json b/diagram/src/test/resources/examples/applicantrequest.json index 63ba80e1..a0f783b1 100644 --- a/diagram/src/test/resources/examples/applicantrequest.json +++ b/diagram/src/test/resources/examples/applicantrequest.json @@ -13,9 +13,7 @@ { "name":"CheckApplication", "type":"switch", - "start": { - "kind": "default" - }, + "start": true, "dataConditions": [ { "condition": "{{ $.applicants[?(@.age >= 18)] }}", @@ -40,9 +38,7 @@ "name": "StartApplication", "type": "subflow", "workflowId": "startApplicationWorkflowId", - "end": { - "kind": "default" - } + "end": true }, { "name":"RejectApplication", @@ -58,9 +54,7 @@ } } ], - "end": { - "kind": "default" - } + "end": true } ] } \ No newline at end of file diff --git a/diagram/src/test/resources/examples/applicantrequest.yml b/diagram/src/test/resources/examples/applicantrequest.yml index 25526873..2fc4d15b 100644 --- a/diagram/src/test/resources/examples/applicantrequest.yml +++ b/diagram/src/test/resources/examples/applicantrequest.yml @@ -9,8 +9,7 @@ functions: states: - name: CheckApplication type: switch - start: - kind: default + start: true dataConditions: - condition: "{{ $.applicants[?(@.age >= 18)] }}" transition: @@ -24,8 +23,7 @@ states: - name: StartApplication type: subflow workflowId: startApplicationWorkflowId - end: - kind: default + end: true - name: RejectApplication type: operation actionMode: sequential @@ -34,5 +32,4 @@ states: refName: sendRejectionEmailFunction parameters: applicant: "{{ $.applicant }}" - end: - kind: default + end: true diff --git a/diagram/src/test/resources/examples/carauctionbids.json b/diagram/src/test/resources/examples/carauctionbids.json index 10cd5680..f4d3d0e6 100644 --- a/diagram/src/test/resources/examples/carauctionbids.json +++ b/diagram/src/test/resources/examples/carauctionbids.json @@ -21,7 +21,6 @@ "name": "StoreCarAuctionBid", "type": "event", "start": { - "kind": "scheduled", "schedule": { "interval": "2020-03-20T09:00:00Z/2020-03-20T15:00:00Z" } @@ -40,9 +39,7 @@ }] } ], - "end": { - "kind": "terminate" - } + "end": true } ] } \ No newline at end of file diff --git a/diagram/src/test/resources/examples/carauctionbids.yml b/diagram/src/test/resources/examples/carauctionbids.yml index 161d3c14..b6854aa7 100644 --- a/diagram/src/test/resources/examples/carauctionbids.yml +++ b/diagram/src/test/resources/examples/carauctionbids.yml @@ -13,7 +13,6 @@ states: - name: StoreCarAuctionBid type: event start: - kind: scheduled schedule: interval: 2020-03-20T09:00:00Z/2020-03-20T15:00:00Z exclusive: true @@ -26,4 +25,4 @@ states: parameters: bid: "{{ $.bid }}" end: - kind: terminate \ No newline at end of file + terminate: true \ No newline at end of file diff --git a/diagram/src/test/resources/examples/creditcheck.json b/diagram/src/test/resources/examples/creditcheck.json index 92c30506..046b64ac 100644 --- a/diagram/src/test/resources/examples/creditcheck.json +++ b/diagram/src/test/resources/examples/creditcheck.json @@ -29,9 +29,7 @@ { "name": "CheckCredit", "type": "callback", - "start": { - "kind": "default" - }, + "start": true, "action": { "functionRef": { "refName": "callCreditCheckMicroservice", @@ -75,9 +73,7 @@ "name": "StartApplication", "type": "subflow", "workflowId": "startApplicationWorkflowId", - "end": { - "kind": "default" - } + "end": true }, { "name": "RejectApplication", @@ -93,9 +89,7 @@ } } ], - "end": { - "kind": "default" - } + "end": true } ] } \ No newline at end of file diff --git a/diagram/src/test/resources/examples/creditcheck.yml b/diagram/src/test/resources/examples/creditcheck.yml index b275f719..65ad7c35 100644 --- a/diagram/src/test/resources/examples/creditcheck.yml +++ b/diagram/src/test/resources/examples/creditcheck.yml @@ -17,8 +17,7 @@ events: states: - name: CheckCredit type: callback - start: - kind: default + start: true action: functionRef: refName: callCreditCheckMicroservice @@ -45,8 +44,7 @@ states: - name: StartApplication type: subflow workflowId: startApplicationWorkflowId - end: - kind: default + end: true - name: RejectApplication type: operation actionMode: sequential @@ -55,5 +53,4 @@ states: refName: sendRejectionEmailFunction parameters: applicant: "{{ $.customer }}" - end: - kind: default + end: true diff --git a/diagram/src/test/resources/examples/eventbasedgreeting.json b/diagram/src/test/resources/examples/eventbasedgreeting.json index 3bdaffe0..d131099a 100644 --- a/diagram/src/test/resources/examples/eventbasedgreeting.json +++ b/diagram/src/test/resources/examples/eventbasedgreeting.json @@ -20,9 +20,7 @@ { "name":"Greet", "type":"event", - "start": { - "kind": "default" - }, + "start": true, "onEvents": [{ "eventRefs": ["GreetingEvent"], "eventDataFilter": { @@ -42,9 +40,7 @@ "stateDataFilter": { "dataOutputPath": "{{ $.payload.greeting }}" }, - "end": { - "kind": "default" - } + "end": true } ] } \ No newline at end of file diff --git a/diagram/src/test/resources/examples/eventbasedgreeting.yml b/diagram/src/test/resources/examples/eventbasedgreeting.yml index e624babc..592dc13b 100644 --- a/diagram/src/test/resources/examples/eventbasedgreeting.yml +++ b/diagram/src/test/resources/examples/eventbasedgreeting.yml @@ -12,8 +12,7 @@ functions: states: - name: Greet type: event - start: - kind: default + start: true onEvents: - eventRefs: - GreetingEvent @@ -26,5 +25,4 @@ states: name: "{{ $.greet.name }}" stateDataFilter: dataOutputPath: "{{ $.payload.greeting }}" - end: - kind: default \ No newline at end of file + end: true \ No newline at end of file diff --git a/diagram/src/test/resources/examples/eventbasedtransition.json b/diagram/src/test/resources/examples/eventbasedtransition.json index 8300135c..f5b4ffce 100644 --- a/diagram/src/test/resources/examples/eventbasedtransition.json +++ b/diagram/src/test/resources/examples/eventbasedtransition.json @@ -19,9 +19,7 @@ { "name":"CheckVisaStatus", "type":"switch", - "start": { - "kind": "default" - }, + "start": true, "eventConditions": [ { "eventRef": "visaApprovedEvent", @@ -47,25 +45,19 @@ "name": "HandleApprovedVisa", "type": "subflow", "workflowId": "handleApprovedVisaWorkflowID", - "end": { - "kind": "default" - } + "end": true }, { "name": "HandleRejectedVisa", "type": "subflow", "workflowId": "handleRejectedVisaWorkflowID", - "end": { - "kind": "default" - } + "end": true }, { "name": "HandleNoVisaDecision", "type": "subflow", "workflowId": "handleNoVisaDecisionWorkfowId", - "end": { - "kind": "default" - } + "end": true } ] } \ No newline at end of file diff --git a/diagram/src/test/resources/examples/eventbasedtransition.yml b/diagram/src/test/resources/examples/eventbasedtransition.yml index ef31466c..5f9dc8ed 100644 --- a/diagram/src/test/resources/examples/eventbasedtransition.yml +++ b/diagram/src/test/resources/examples/eventbasedtransition.yml @@ -13,8 +13,7 @@ events: states: - name: CheckVisaStatus type: switch - start: - kind: default + start: true eventConditions: - eventRef: visaApprovedEvent transition: @@ -29,15 +28,12 @@ states: - name: HandleApprovedVisa type: subflow workflowId: handleApprovedVisaWorkflowID - end: - kind: default + end: true - name: HandleRejectedVisa type: subflow workflowId: handleRejectedVisaWorkflowID - end: - kind: default + end: true - name: HandleNoVisaDecision type: subflow workflowId: handleNoVisaDecisionWorkfowId - end: - kind: default + end: true diff --git a/diagram/src/test/resources/examples/finalizecollegeapplication.json b/diagram/src/test/resources/examples/finalizecollegeapplication.json index 236ee6f3..b8af578c 100644 --- a/diagram/src/test/resources/examples/finalizecollegeapplication.json +++ b/diagram/src/test/resources/examples/finalizecollegeapplication.json @@ -44,9 +44,7 @@ { "name": "FinalizeApplication", "type": "event", - "start": { - "kind": "default" - }, + "start": true, "exclusive": false, "onEvents": [ { @@ -67,9 +65,7 @@ ] } ], - "end": { - "kind": "terminate" - } + "end": true } ] } \ No newline at end of file diff --git a/diagram/src/test/resources/examples/finalizecollegeapplication.yml b/diagram/src/test/resources/examples/finalizecollegeapplication.yml index c05634f8..1f228ae8 100644 --- a/diagram/src/test/resources/examples/finalizecollegeapplication.yml +++ b/diagram/src/test/resources/examples/finalizecollegeapplication.yml @@ -23,8 +23,7 @@ functions: states: - name: FinalizeApplication type: event - start: - kind: default + start: true exclusive: false onEvents: - eventRefs: @@ -37,4 +36,4 @@ states: parameters: student: "{{ $.applicantId }}" end: - kind: terminate \ No newline at end of file + terminate: true \ No newline at end of file diff --git a/diagram/src/test/resources/examples/foreachstatewithactions.json b/diagram/src/test/resources/examples/foreachstatewithactions.json index 58f61c99..3862632d 100644 --- a/diagram/src/test/resources/examples/foreachstatewithactions.json +++ b/diagram/src/test/resources/examples/foreachstatewithactions.json @@ -13,7 +13,7 @@ { "name":"SendConfirmationForEachCompletedhOrder", "type":"foreach", - "start": {"kind": "default"}, + "start": true, "inputCollection": "{{ $.orders[?(@.completed == true)] }}", "iterationParam": "{{ $.completedorder }}", "actions":[ @@ -26,9 +26,7 @@ } } }], - "end": { - "kind": "default" - } + "end": true } ] } \ No newline at end of file diff --git a/diagram/src/test/resources/examples/foreachstatewithactions.yml b/diagram/src/test/resources/examples/foreachstatewithactions.yml index e16fb155..c3c9f6c2 100644 --- a/diagram/src/test/resources/examples/foreachstatewithactions.yml +++ b/diagram/src/test/resources/examples/foreachstatewithactions.yml @@ -9,8 +9,7 @@ functions: states: - name: SendConfirmationForEachCompletedhOrder type: foreach - start: - kind: default + start: true inputCollection: "{{ $.orders[?(@.completed == true)] }}" iterationParam: "{{ $.completedorder }}" actions: @@ -19,5 +18,4 @@ states: parameters: orderNumber: "{{ $.completedorder.orderNumber }}" email: "{{ $.completedorder.email }}" - end: - kind: default + end: true diff --git a/diagram/src/test/resources/examples/greeting.json b/diagram/src/test/resources/examples/greeting.json index 25f89f3a..7c8b58da 100644 --- a/diagram/src/test/resources/examples/greeting.json +++ b/diagram/src/test/resources/examples/greeting.json @@ -13,9 +13,7 @@ { "name":"Greet", "type":"operation", - "start": { - "kind": "default" - }, + "start": true, "actions":[ { "functionRef": { @@ -29,9 +27,7 @@ } } ], - "end": { - "kind": "default" - } + "end": true } ] } \ No newline at end of file diff --git a/diagram/src/test/resources/examples/greeting.yml b/diagram/src/test/resources/examples/greeting.yml index fc791b9c..020617db 100644 --- a/diagram/src/test/resources/examples/greeting.yml +++ b/diagram/src/test/resources/examples/greeting.yml @@ -8,8 +8,7 @@ functions: states: - name: Greet type: operation - start: - kind: default + start: true actions: - functionRef: refName: greetingFunction @@ -17,5 +16,4 @@ states: name: "{{ $.person.name }}" actionDataFilter: dataResultsPath: "{{ $.greeting }}" - end: - kind: default \ No newline at end of file + end: true \ No newline at end of file diff --git a/diagram/src/test/resources/examples/helloworld.json b/diagram/src/test/resources/examples/helloworld.json index 5ffd0996..4643ec98 100644 --- a/diagram/src/test/resources/examples/helloworld.json +++ b/diagram/src/test/resources/examples/helloworld.json @@ -7,15 +7,11 @@ { "name":"Hello State", "type":"inject", - "start": { - "kind": "default" - }, + "start": true, "data": { "result": "Hello World!" }, - "end": { - "kind": "default" - } + "end": true } ] } \ No newline at end of file diff --git a/diagram/src/test/resources/examples/helloworld.yml b/diagram/src/test/resources/examples/helloworld.yml index 1b49b3b3..7bc87270 100644 --- a/diagram/src/test/resources/examples/helloworld.yml +++ b/diagram/src/test/resources/examples/helloworld.yml @@ -5,9 +5,7 @@ description: Inject Hello World states: - name: Hello State type: inject - start: - kind: default + start: true data: result: Hello World! - end: - kind: default \ No newline at end of file + end: true \ No newline at end of file diff --git a/diagram/src/test/resources/examples/jobmonitoring.json b/diagram/src/test/resources/examples/jobmonitoring.json index 3857cde8..3229e0c7 100644 --- a/diagram/src/test/resources/examples/jobmonitoring.json +++ b/diagram/src/test/resources/examples/jobmonitoring.json @@ -25,9 +25,7 @@ { "name":"SubmitJob", "type":"operation", - "start": { - "kind": "default" - }, + "start": true, "actionMode":"sequential", "actions":[ { @@ -61,9 +59,7 @@ "name": "SubmitError", "type": "subflow", "workflowId": "handleJobSubmissionErrorWorkflow", - "end": { - "kind": "default" - } + "end": true }, { "name": "WaitForCompletion", @@ -134,9 +130,7 @@ } } ], - "end": { - "kind": "default" - } + "end": true }, { "name":"JobFailed", @@ -152,9 +146,7 @@ } } ], - "end": { - "kind": "default" - } + "end": true } ] } \ No newline at end of file diff --git a/diagram/src/test/resources/examples/jobmonitoring.yml b/diagram/src/test/resources/examples/jobmonitoring.yml index 883eb974..d375a752 100644 --- a/diagram/src/test/resources/examples/jobmonitoring.yml +++ b/diagram/src/test/resources/examples/jobmonitoring.yml @@ -15,8 +15,7 @@ functions: states: - name: SubmitJob type: operation - start: - kind: default + start: true actionMode: sequential actions: - functionRef: @@ -36,8 +35,7 @@ states: - name: SubmitError type: subflow workflowId: handleJobSubmissionErrorWorkflow - end: - kind: default + end: true - name: WaitForCompletion type: delay timeDelay: PT5S @@ -77,8 +75,7 @@ states: refName: reportJobSuceeded parameters: name: "{{ $.jobuid }}" - end: - kind: default + end: true - name: JobFailed type: operation actionMode: sequential @@ -87,5 +84,4 @@ states: refName: reportJobFailed parameters: name: "{{ $.jobuid }}" - end: - kind: default + end: true diff --git a/diagram/src/test/resources/examples/monitorpatient.json b/diagram/src/test/resources/examples/monitorpatient.json index baf16d05..1fdd774e 100644 --- a/diagram/src/test/resources/examples/monitorpatient.json +++ b/diagram/src/test/resources/examples/monitorpatient.json @@ -52,9 +52,7 @@ { "name": "MonitorVitals", "type": "event", - "start": { - "kind": "default" - }, + "start": true, "exclusive": true, "onEvents": [{ "eventRefs": ["HighBodyTemperature"], @@ -90,8 +88,6 @@ }] } ], - "end": { - "kind": "terminate" - } + "end": true }] } \ No newline at end of file diff --git a/diagram/src/test/resources/examples/monitorpatient.yml b/diagram/src/test/resources/examples/monitorpatient.yml index 343d87d3..3a85f0aa 100644 --- a/diagram/src/test/resources/examples/monitorpatient.yml +++ b/diagram/src/test/resources/examples/monitorpatient.yml @@ -27,8 +27,7 @@ functions: states: - name: MonitorVitals type: event - start: - kind: default + start: true exclusive: true onEvents: - eventRefs: @@ -53,4 +52,4 @@ states: parameters: patientid: "{{ $.patientId }}" end: - kind: terminate \ No newline at end of file + terminate: true \ No newline at end of file diff --git a/diagram/src/test/resources/examples/parallel.json b/diagram/src/test/resources/examples/parallel.json index 089c0801..c479e749 100644 --- a/diagram/src/test/resources/examples/parallel.json +++ b/diagram/src/test/resources/examples/parallel.json @@ -7,9 +7,7 @@ { "name": "ParallelExec", "type": "parallel", - "start": { - "kind": "default" - }, + "start": true, "completionType": "and", "branches": [ { @@ -21,9 +19,7 @@ "workflowId": "longdelayworkflowid" } ], - "end": { - "kind": "default" - } + "end": true } ] } \ No newline at end of file diff --git a/diagram/src/test/resources/examples/parallel.yml b/diagram/src/test/resources/examples/parallel.yml index d799cd78..6f086880 100644 --- a/diagram/src/test/resources/examples/parallel.yml +++ b/diagram/src/test/resources/examples/parallel.yml @@ -5,13 +5,11 @@ description: Executes two branches in parallel states: - name: ParallelExec type: parallel - start: - kind: default + start: true completionType: and branches: - name: ShortDelayBranch workflowId: shortdelayworkflowid - name: LongDelayBranch workflowId: longdelayworkflowid - end: - kind: default \ No newline at end of file + end: true \ No newline at end of file diff --git a/diagram/src/test/resources/examples/periodicinboxcheck.json b/diagram/src/test/resources/examples/periodicinboxcheck.json index 24752487..a2b6ecdd 100644 --- a/diagram/src/test/resources/examples/periodicinboxcheck.json +++ b/diagram/src/test/resources/examples/periodicinboxcheck.json @@ -18,7 +18,6 @@ "name": "CheckInbox", "type": "operation", "start": { - "kind": "scheduled", "schedule": { "cron": "0 0/15 * * * ?" } @@ -50,9 +49,7 @@ } } ], - "end": { - "kind": "default" - } + "end": true } ] } \ No newline at end of file diff --git a/diagram/src/test/resources/examples/periodicinboxcheck.yml b/diagram/src/test/resources/examples/periodicinboxcheck.yml index 9b4cdc55..117b4682 100644 --- a/diagram/src/test/resources/examples/periodicinboxcheck.yml +++ b/diagram/src/test/resources/examples/periodicinboxcheck.yml @@ -11,7 +11,6 @@ states: - name: CheckInbox type: operation start: - kind: scheduled schedule: cron: 0 0/15 * * * ? actionMode: sequential @@ -29,5 +28,4 @@ states: refName: sendTextFunction parameters: message: "{{ $.singlemessage }}" - end: - kind: default \ No newline at end of file + end: true \ No newline at end of file diff --git a/diagram/src/test/resources/examples/provisionorder.json b/diagram/src/test/resources/examples/provisionorder.json index f56c50ba..c7ab194f 100644 --- a/diagram/src/test/resources/examples/provisionorder.json +++ b/diagram/src/test/resources/examples/provisionorder.json @@ -13,9 +13,7 @@ { "name":"ProvisionOrder", "type":"operation", - "start": { - "kind": "default" - }, + "start": true, "actionMode":"sequential", "actions":[ { @@ -58,33 +56,25 @@ "name": "MissingId", "type": "subflow", "workflowId": "handleMissingIdExceptionWorkflow", - "end": { - "kind": "default" - } + "end": true }, { "name": "MissingItem", "type": "subflow", "workflowId": "handleMissingItemExceptionWorkflow", - "end": { - "kind": "default" - } + "end": true }, { "name": "MissingQuantity", "type": "subflow", "workflowId": "handleMissingQuantityExceptionWorkflow", - "end": { - "kind": "default" - } + "end": true }, { "name": "ApplyOrder", "type": "subflow", "workflowId": "applyOrderWorkflowId", - "end": { - "kind": "default" - } + "end": true } ] } \ No newline at end of file diff --git a/diagram/src/test/resources/examples/provisionorder.yml b/diagram/src/test/resources/examples/provisionorder.yml index 2031dd14..44777fe6 100644 --- a/diagram/src/test/resources/examples/provisionorder.yml +++ b/diagram/src/test/resources/examples/provisionorder.yml @@ -8,8 +8,7 @@ functions: states: - name: ProvisionOrder type: operation - start: - kind: default + start: true actionMode: sequential actions: - functionRef: @@ -33,20 +32,16 @@ states: - name: MissingId type: subflow workflowId: handleMissingIdExceptionWorkflow - end: - kind: default + end: true - name: MissingItem type: subflow workflowId: handleMissingItemExceptionWorkflow - end: - kind: default + end: true - name: MissingQuantity type: subflow workflowId: handleMissingQuantityExceptionWorkflow - end: - kind: default + end: true - name: ApplyOrder type: subflow workflowId: applyOrderWorkflowId - end: - kind: default \ No newline at end of file + end: true \ No newline at end of file diff --git a/diagram/src/test/resources/examples/sendcloudevent.json b/diagram/src/test/resources/examples/sendcloudevent.json index 40232d5b..861d90b6 100644 --- a/diagram/src/test/resources/examples/sendcloudevent.json +++ b/diagram/src/test/resources/examples/sendcloudevent.json @@ -19,9 +19,7 @@ { "name": "ProvisionOrdersState", "type": "foreach", - "start": { - "kind": "default" - }, + "start": true, "inputCollection": "{{ $.orders }}", "iterationParam": "singleorder", "outputCollection": "{{ $.provisionedOrders }}", @@ -36,7 +34,6 @@ } ], "end": { - "kind": "event", "produceEvents": [ { "eventRef": "provisioningCompleteEvent", diff --git a/diagram/src/test/resources/examples/sendcloudevent.yml b/diagram/src/test/resources/examples/sendcloudevent.yml index 275f6820..1a3c39d7 100644 --- a/diagram/src/test/resources/examples/sendcloudevent.yml +++ b/diagram/src/test/resources/examples/sendcloudevent.yml @@ -12,8 +12,7 @@ functions: states: - name: ProvisionOrdersState type: foreach - start: - kind: default + start: true inputCollection: "{{ $.orders }}" iterationParam: singleorder outputCollection: "{{ $.provisionedOrders }}" @@ -23,7 +22,6 @@ states: parameters: order: "{{ $.singleorder }}" end: - kind: event produceEvents: - eventRef: provisioningCompleteEvent data: "{{ $.provisionedOrders }}" diff --git a/diagram/src/test/resources/examples/singleeventstate.json b/diagram/src/test/resources/examples/singleeventstate.json index b26781fe..f343aae3 100644 --- a/diagram/src/test/resources/examples/singleeventstate.json +++ b/diagram/src/test/resources/examples/singleeventstate.json @@ -29,8 +29,8 @@ { "name": "EventState", "type": "event", - "start": {"kind":"default"}, - "end": {"kind":"default"}, + "start": true, + "end": true, "onEvents": [ { "eventRefs": ["event1", "event2"], diff --git a/diagram/src/test/resources/examples/singleeventstate.yml b/diagram/src/test/resources/examples/singleeventstate.yml index 9e47e408..f9e34aee 100644 --- a/diagram/src/test/resources/examples/singleeventstate.yml +++ b/diagram/src/test/resources/examples/singleeventstate.yml @@ -19,10 +19,8 @@ events: states: - name: EventState type: event - start: - kind: default - end: - kind: default + start: true + end: true onEvents: - eventRefs: - event1 diff --git a/diagram/src/test/resources/examples/singleswitchstate.json b/diagram/src/test/resources/examples/singleswitchstate.json index e8b4dc4d..82d38193 100644 --- a/diagram/src/test/resources/examples/singleswitchstate.json +++ b/diagram/src/test/resources/examples/singleswitchstate.json @@ -7,7 +7,7 @@ { "name": "SwitchIt", "type": "switch", - "start": {"kind":"default"}, + "start": true, "dataConditions": [ { "name": "first", @@ -26,16 +26,12 @@ { "name": "third", "condition": "", - "end": { - "kind":"default" - } + "end": true }, { "name": "fourth", "condition": "", - "end": { - "kind":"default" - } + "end": true } ] }, @@ -43,13 +39,13 @@ "name": "FromFirstCondition", "type": "delay", "timeDelay": "PT2M", - "end": {"kind":"default"} + "end": true }, { "name": "FromSecondCondition", "type": "inject", "data": {}, - "end": {"kind":"default"} + "end": true } ] } \ No newline at end of file diff --git a/diagram/src/test/resources/examples/singleswitchstate.yml b/diagram/src/test/resources/examples/singleswitchstate.yml index d8a7d273..cb6de3e0 100644 --- a/diagram/src/test/resources/examples/singleswitchstate.yml +++ b/diagram/src/test/resources/examples/singleswitchstate.yml @@ -6,8 +6,7 @@ version: '1.0' states: - name: SwitchIt type: switch - start: - kind: default + start: true dataConditions: - name: first condition: '' @@ -19,19 +18,15 @@ states: nextState: FromSecondCondition - name: third condition: '' - end: - kind: default + end: true - name: fourth condition: '' - end: - kind: default + end: true - name: FromFirstCondition type: delay timeDelay: PT2M - end: - kind: default + end: true - name: FromSecondCondition type: inject data: {} - end: - kind: default + end: true diff --git a/diagram/src/test/resources/examples/singleswitchstateeventconditions.json b/diagram/src/test/resources/examples/singleswitchstateeventconditions.json index bbf95669..47be5732 100644 --- a/diagram/src/test/resources/examples/singleswitchstateeventconditions.json +++ b/diagram/src/test/resources/examples/singleswitchstateeventconditions.json @@ -7,7 +7,7 @@ { "name": "SwitchIt", "type": "switch", - "start": {"kind":"default"}, + "start": true, "eventConditions": [ { "name": "first", @@ -26,16 +26,12 @@ { "name": "third", "eventRef": "thirdEvent", - "end": { - "kind":"default" - } + "end": true }, { "name": "fourth", "eventRef": "fourthEvent", - "end": { - "kind":"default" - } + "end": true } ] }, @@ -43,13 +39,13 @@ "name": "FromFirstCondition", "type": "delay", "timeDelay": "PT2M", - "end": {"kind":"default"} + "end": true }, { "name": "FromSecondCondition", "type": "inject", "data": {}, - "end": {"kind":"default"} + "end": true } ] } \ No newline at end of file diff --git a/diagram/src/test/resources/examples/singleswitchstateeventconditions.yml b/diagram/src/test/resources/examples/singleswitchstateeventconditions.yml index e44fb218..0a3fe653 100644 --- a/diagram/src/test/resources/examples/singleswitchstateeventconditions.yml +++ b/diagram/src/test/resources/examples/singleswitchstateeventconditions.yml @@ -6,8 +6,7 @@ version: '1.0' states: - name: SwitchIt type: switch - start: - kind: default + start: true eventConditions: - name: first eventRef: firstEvent @@ -19,19 +18,15 @@ states: nextState: FromSecondCondition - name: third eventRef: thirdEvent - end: - kind: default + end: true - name: fourth eventRef: fourthEvent - end: - kind: default + end: true - name: FromFirstCondition type: delay timeDelay: PT2M - end: - kind: default + end: true - name: FromSecondCondition type: inject data: {} - end: - kind: default + end: true diff --git a/diagram/src/test/resources/examples/solvemathproblems.json b/diagram/src/test/resources/examples/solvemathproblems.json index a629d6d3..ac51ef5f 100644 --- a/diagram/src/test/resources/examples/solvemathproblems.json +++ b/diagram/src/test/resources/examples/solvemathproblems.json @@ -12,9 +12,7 @@ "states":[ { "name":"Solve", - "start": { - "kind": "default" - }, + "start": true, "type":"foreach", "inputCollection": "{{ $.expressions }}", "iterationParam": "singleexpression", @@ -32,9 +30,7 @@ "stateDataFilter": { "dataOutputPath": "{{ $.results }}" }, - "end": { - "kind": "default" - } + "end": true } ] } \ No newline at end of file diff --git a/diagram/src/test/resources/examples/solvemathproblems.yml b/diagram/src/test/resources/examples/solvemathproblems.yml index 6dcf2481..53ec8aa4 100644 --- a/diagram/src/test/resources/examples/solvemathproblems.yml +++ b/diagram/src/test/resources/examples/solvemathproblems.yml @@ -7,8 +7,7 @@ functions: operation: http://myapis.org/mapthapis.json#solveExpression states: - name: Solve - start: - kind: default + start: true type: foreach inputCollection: "{{ $.expressions }}" iterationParam: singleexpression @@ -20,5 +19,4 @@ states: expression: "{{ $.singleexpression }}" stateDataFilter: dataOutputPath: "{{ $.results }}" - end: - kind: default \ No newline at end of file + end: true \ No newline at end of file diff --git a/diagram/src/test/resources/examples/vetappointmentservice.json b/diagram/src/test/resources/examples/vetappointmentservice.json index 3b567a6d..5432677e 100644 --- a/diagram/src/test/resources/examples/vetappointmentservice.json +++ b/diagram/src/test/resources/examples/vetappointmentservice.json @@ -19,9 +19,7 @@ { "name": "MakeVetAppointmentState", "type": "operation", - "start": { - "kind": "default" - }, + "start": true, "actions": [ { "name": "MakeAppointmentAction", @@ -36,9 +34,7 @@ "timeout": "PT15M" } ], - "end": { - "kind": "default" - } + "end": true } ] } \ No newline at end of file diff --git a/diagram/src/test/resources/examples/vetappointmentservice.yml b/diagram/src/test/resources/examples/vetappointmentservice.yml index 13f02648..08f7cfce 100644 --- a/diagram/src/test/resources/examples/vetappointmentservice.yml +++ b/diagram/src/test/resources/examples/vetappointmentservice.yml @@ -12,8 +12,7 @@ events: states: - name: MakeVetAppointmentState type: operation - start: - kind: default + start: true actions: - name: MakeAppointmentAction eventRef: @@ -23,5 +22,4 @@ states: actionDataFilter: dataResultsPath: "{{ $.appointmentInfo }}" timeout: PT15M - end: - kind: default \ No newline at end of file + end: true \ No newline at end of file diff --git a/validation/src/test/java/io/serverlessworkflow/validation/test/WorkflowValidationTest.java b/validation/src/test/java/io/serverlessworkflow/validation/test/WorkflowValidationTest.java index 9a947ee3..efa08039 100644 --- a/validation/src/test/java/io/serverlessworkflow/validation/test/WorkflowValidationTest.java +++ b/validation/src/test/java/io/serverlessworkflow/validation/test/WorkflowValidationTest.java @@ -58,10 +58,10 @@ public void testFromIncompleteWorkflow() { .withStates(Arrays.asList( new DelayState().withName("delayState").withType(DELAY) .withStart( - new Start().withKind(Start.Kind.DEFAULT) + new Start() ) .withEnd( - new End().withKind(End.Kind.DEFAULT) + new End() ) .withTimeDelay("PT1M") ) From ce9c0f227f6c1ecbce428fc4eb9097b1a2b94fa2 Mon Sep 17 00:00:00 2001 From: Ricardo Zanini Date: Fri, 15 Jan 2021 10:55:35 -0300 Subject: [PATCH 08/12] Removing dependency from JitPack repository Signed-off-by: Ricardo Zanini --- api/pom.xml | 6 +++--- pom.xml | 11 ++--------- validation/pom.xml | 6 +++--- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 020334db..fcb204ec 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -41,8 +41,8 @@ json - com.github.everit-org.json-schema - org.everit.json.schema + com.github.erosb + everit-json-schema @@ -110,4 +110,4 @@ - \ No newline at end of file + diff --git a/pom.xml b/pom.xml index 132a2047..b8957da7 100644 --- a/pom.xml +++ b/pom.xml @@ -111,8 +111,8 @@ ${commons.lang.version} - com.github.everit-org.json-schema - org.everit.json.schema + com.github.erosb + everit-json-schema ${json.schema.validation.version} @@ -329,11 +329,4 @@ - - - - jitpack.io - https://jitpack.io - - diff --git a/validation/pom.xml b/validation/pom.xml index b706f298..59fac3b0 100644 --- a/validation/pom.xml +++ b/validation/pom.xml @@ -33,8 +33,8 @@ - com.github.everit-org.json-schema - org.everit.json.schema + com.github.erosb + everit-json-schema @@ -79,4 +79,4 @@ test - \ No newline at end of file + From 036c7b1923f6e9dc1dec2881e5e9cd043eeefa47 Mon Sep 17 00:00:00 2001 From: Ricardo Zanini <1538000+ricardozanini@users.noreply.github.com> Date: Fri, 15 Jan 2021 13:04:38 -0300 Subject: [PATCH 09/12] Removing JitPack repo from the doc Signed-off-by: Ricardo Zanini --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 15714e42..e4492ea5 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,6 @@ a) Add the following repositories to your build.gradle `repositories` section: ```text maven { url "https://oss.sonatype.org/content/repositories/snapshots" } -maven{ url "https://jitpack.io" } ``` b) Add the following dependencies to your build.gradle `dependencies` section: From 6ba32e2ea8a5c56e1b6a62403b042ed554f9b943 Mon Sep 17 00:00:00 2001 From: Tihomir Surdilovic Date: Thu, 21 Jan 2021 16:01:24 -0500 Subject: [PATCH 10/12] update to schedule def cron Signed-off-by: Tihomir Surdilovic --- .../main/resources/schema/cron/crondef.json | 18 ++++++++++++++++++ .../resources/schema/schedule/schedule.json | 4 ++-- .../resources/examples/periodicinboxcheck.json | 4 +++- .../resources/examples/periodicinboxcheck.yml | 3 ++- .../resources/examples/periodicinboxcheck.json | 4 +++- .../resources/examples/periodicinboxcheck.yml | 3 ++- 6 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 api/src/main/resources/schema/cron/crondef.json diff --git a/api/src/main/resources/schema/cron/crondef.json b/api/src/main/resources/schema/cron/crondef.json new file mode 100644 index 00000000..67bb43c5 --- /dev/null +++ b/api/src/main/resources/schema/cron/crondef.json @@ -0,0 +1,18 @@ +{ + "type": "object", + "javaType": "io.serverlessworkflow.api.cron.Cron", + "description": "Schedule cron definition", + "properties": { + "expression": { + "type": "string", + "description": "Repeating interval (cron expression) describing when the workflow instance should be created" + }, + "validUntil": { + "type": "string", + "description": "Specific date and time (ISO 8601 format) when the cron expression invocation is no longer valid" + } + }, + "required": [ + "expression" + ] +} \ No newline at end of file diff --git a/api/src/main/resources/schema/schedule/schedule.json b/api/src/main/resources/schema/schedule/schedule.json index cbff7bde..d80d9908 100644 --- a/api/src/main/resources/schema/schedule/schedule.json +++ b/api/src/main/resources/schema/schedule/schedule.json @@ -8,8 +8,8 @@ "description": "Time interval (ISO 8601 format) describing when the workflow starting state is active" }, "cron": { - "type": "string", - "description": "Repeating interval (cron expression) describing when the workflow starting state should be triggered" + "description": "Schedule cron definition", + "$ref": "../cron/crondef.json" }, "directInvoke": { "description": "Define if workflow instances can be created outside of the defined interval/cron", diff --git a/api/src/test/resources/examples/periodicinboxcheck.json b/api/src/test/resources/examples/periodicinboxcheck.json index a2b6ecdd..1c5cdfc6 100644 --- a/api/src/test/resources/examples/periodicinboxcheck.json +++ b/api/src/test/resources/examples/periodicinboxcheck.json @@ -19,7 +19,9 @@ "type": "operation", "start": { "schedule": { - "cron": "0 0/15 * * * ?" + "cron": { + "expression": "0 0/15 * * * ?" + } } }, "actionMode": "sequential", diff --git a/api/src/test/resources/examples/periodicinboxcheck.yml b/api/src/test/resources/examples/periodicinboxcheck.yml index 117b4682..162a29ff 100644 --- a/api/src/test/resources/examples/periodicinboxcheck.yml +++ b/api/src/test/resources/examples/periodicinboxcheck.yml @@ -12,7 +12,8 @@ states: type: operation start: schedule: - cron: 0 0/15 * * * ? + cron: + expression: 0 0/15 * * * ? actionMode: sequential actions: - functionRef: diff --git a/diagram/src/test/resources/examples/periodicinboxcheck.json b/diagram/src/test/resources/examples/periodicinboxcheck.json index a2b6ecdd..1c5cdfc6 100644 --- a/diagram/src/test/resources/examples/periodicinboxcheck.json +++ b/diagram/src/test/resources/examples/periodicinboxcheck.json @@ -19,7 +19,9 @@ "type": "operation", "start": { "schedule": { - "cron": "0 0/15 * * * ?" + "cron": { + "expression": "0 0/15 * * * ?" + } } }, "actionMode": "sequential", diff --git a/diagram/src/test/resources/examples/periodicinboxcheck.yml b/diagram/src/test/resources/examples/periodicinboxcheck.yml index 117b4682..162a29ff 100644 --- a/diagram/src/test/resources/examples/periodicinboxcheck.yml +++ b/diagram/src/test/resources/examples/periodicinboxcheck.yml @@ -12,7 +12,8 @@ states: type: operation start: schedule: - cron: 0 0/15 * * * ? + cron: + expression: 0 0/15 * * * ? actionMode: sequential actions: - functionRef: From d6015c1d043cfceb6657573b1451d729bdf37acb Mon Sep 17 00:00:00 2001 From: Tihomir Surdilovic Date: Fri, 22 Jan 2021 16:27:52 -0500 Subject: [PATCH 11/12] 1.0.3 release update Signed-off-by: Tihomir Surdilovic --- README.md | 17 +++++++++-------- api/pom.xml | 2 +- diagram/pom.xml | 2 +- pom.xml | 2 +- spi/pom.xml | 2 +- validation/pom.xml | 2 +- 6 files changed, 14 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index e4492ea5..9ad0d0dc 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ to parse and validate workflow definitions as well as generate the workflow diag | :---: | :---: | | [1.0.1.Final](https://github.com/serverlessworkflow/sdk-java/releases/) | [v0.5](https://github.com/serverlessworkflow/specification/tree/0.5.x) | | [1.0.2.Final](https://github.com/serverlessworkflow/sdk-java/releases/) | [v0.5](https://github.com/serverlessworkflow/specification/tree/0.5.x) + [Compensation support](https://github.com/serverlessworkflow/specification/blob/master/specification.md#Workflow-Compensation) | +| [1.0.3.Final](https://github.com/serverlessworkflow/sdk-java/releases/) | [v0.5](https://github.com/serverlessworkflow/specification/tree/0.5.x) + [Update to start/end definitions](https://github.com/serverlessworkflow/sdk-java/commit/1addf8d66450830cbc3542c8dfb968b3791aba6f) | ### Getting Started @@ -57,25 +58,25 @@ b) Add the following dependencies to your pom.xml `dependencies` section: io.serverlessworkflow serverlessworkflow-api - 1.0.2.Final + 1.0.3.Final io.serverlessworkflow serverlessworkflow-spi - 1.0.2.Final + 1.0.3.Final io.serverlessworkflow serverlessworkflow-validation - 1.0.2.Final + 1.0.3.Final io.serverlessworkflow serverlessworkflow-diagram - 1.0.2.Final + 1.0.3.Final ``` @@ -90,10 +91,10 @@ maven { url "https://oss.sonatype.org/content/repositories/snapshots" } b) Add the following dependencies to your build.gradle `dependencies` section: ```text -implementation("io.serverlessworkflow:serverlessworkflow-api:1.0.2.Final") -implementation("io.serverlessworkflow:serverlessworkflow-spi:1.0.2.Final") -implementation("io.serverlessworkflow:serverlessworkflow-validation:1.0.2.Final") -implementation("io.serverlessworkflow:serverlessworkflow-diagram:1.0.2.Final") +implementation("io.serverlessworkflow:serverlessworkflow-api:1.0.3.Final") +implementation("io.serverlessworkflow:serverlessworkflow-spi:1.0.3.Final") +implementation("io.serverlessworkflow:serverlessworkflow-validation:1.0.3.Final") +implementation("io.serverlessworkflow:serverlessworkflow-diagram:1.0.3.Final") ``` ### How to Use diff --git a/api/pom.xml b/api/pom.xml index fcb204ec..c8bc6778 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -6,7 +6,7 @@ io.serverlessworkflow serverlessworkflow-parent - 1.0.2.Final + 1.0.3.Final serverlessworkflow-api diff --git a/diagram/pom.xml b/diagram/pom.xml index e603b50d..06bf7841 100644 --- a/diagram/pom.xml +++ b/diagram/pom.xml @@ -6,7 +6,7 @@ io.serverlessworkflow serverlessworkflow-parent - 1.0.2.Final + 1.0.3.Final serverlessworkflow-diagram diff --git a/pom.xml b/pom.xml index b8957da7..d3a14206 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ io.serverlessworkflow serverlessworkflow-parent - 1.0.2.Final + 1.0.3.Final pom Serverless Workflow :: Parent diff --git a/spi/pom.xml b/spi/pom.xml index eaf1069a..2401200d 100644 --- a/spi/pom.xml +++ b/spi/pom.xml @@ -6,7 +6,7 @@ io.serverlessworkflow serverlessworkflow-parent - 1.0.2.Final + 1.0.3.Final serverlessworkflow-spi diff --git a/validation/pom.xml b/validation/pom.xml index 59fac3b0..ee2cb993 100644 --- a/validation/pom.xml +++ b/validation/pom.xml @@ -6,7 +6,7 @@ io.serverlessworkflow serverlessworkflow-parent - 1.0.2.Final + 1.0.3.Final serverlessworkflow-validation From 02b102b4bb0f47806663db83742fad4dc7743790 Mon Sep 17 00:00:00 2001 From: Tihomir Surdilovic Date: Fri, 22 Jan 2021 16:35:49 -0500 Subject: [PATCH 12/12] setting 1.0.x branch version Signed-off-by: Tihomir Surdilovic --- api/pom.xml | 2 +- diagram/pom.xml | 2 +- pom.xml | 2 +- spi/pom.xml | 2 +- validation/pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index c8bc6778..93ae853f 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -6,7 +6,7 @@ io.serverlessworkflow serverlessworkflow-parent - 1.0.3.Final + 1.0.x serverlessworkflow-api diff --git a/diagram/pom.xml b/diagram/pom.xml index 06bf7841..467acc58 100644 --- a/diagram/pom.xml +++ b/diagram/pom.xml @@ -6,7 +6,7 @@ io.serverlessworkflow serverlessworkflow-parent - 1.0.3.Final + 1.0.x serverlessworkflow-diagram diff --git a/pom.xml b/pom.xml index d3a14206..6e451ae2 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ io.serverlessworkflow serverlessworkflow-parent - 1.0.3.Final + 1.0.x pom Serverless Workflow :: Parent diff --git a/spi/pom.xml b/spi/pom.xml index 2401200d..cd187639 100644 --- a/spi/pom.xml +++ b/spi/pom.xml @@ -6,7 +6,7 @@ io.serverlessworkflow serverlessworkflow-parent - 1.0.3.Final + 1.0.x serverlessworkflow-spi diff --git a/validation/pom.xml b/validation/pom.xml index ee2cb993..e8eceb88 100644 --- a/validation/pom.xml +++ b/validation/pom.xml @@ -6,7 +6,7 @@ io.serverlessworkflow serverlessworkflow-parent - 1.0.3.Final + 1.0.x serverlessworkflow-validation pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy