From a19285034b541e315d100d3ae0ae637336edc43c Mon Sep 17 00:00:00 2001 From: Tihomir Surdilovic Date: Sun, 28 Nov 2021 13:54:05 -0500 Subject: [PATCH] updates for 0.8 Signed-off-by: Tihomir Surdilovic --- README.md | 2 +- comparisons/comparison-argo.md | 18 +-- comparisons/comparison-bpmn.md | 18 +-- comparisons/comparison-brigade.md | 14 +-- .../comparison-google-cloud-workflows.md | 10 +- comparisons/comparison-temporal.md | 8 +- examples/README.md | 118 +++++++++--------- extensions/kpi.md | 2 +- extensions/ratelimiting.md | 2 +- roadmap/README.md | 39 +++--- schema/auth.json | 2 +- schema/common.json | 2 +- schema/errors.json | 2 +- schema/events.json | 2 +- schema/extensions/kpi.json | 2 +- schema/extensions/ratelimiting.json | 2 +- schema/functions.json | 2 +- schema/odata.json | 2 +- schema/retries.json | 2 +- schema/secrets.json | 2 +- schema/timeouts.json | 2 +- schema/workflow.json | 2 +- specification.md | 28 ++--- 23 files changed, 138 insertions(+), 145 deletions(-) diff --git a/README.md b/README.md index 76171f35..9c0d40d0 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ Check out our project DevStats [here](https://serverlessworkflow.devstats.cncf.i | | Latest release | Latest release branch | Working branch | | --- | :---: | :---: | :---: | | **Core Specification** | | -| [Serverless Workflow](https://github.com/serverlessworkflow/specification) | [v0.7](https://github.com/serverlessworkflow/specification/releases) | [0.7.x](https://github.com/serverlessworkflow/specification/tree/0.7.x) | [main](https://github.com/serverlessworkflow/specification) | +| [Serverless Workflow](https://github.com/serverlessworkflow/specification) | [v0.8](https://github.com/serverlessworkflow/specification/releases) | [0.8.x](https://github.com/serverlessworkflow/specification/tree/0.8.x) | [main](https://github.com/serverlessworkflow/specification) | | **Additional Components** | | | [Synapse](https://github.com/serverlessworkflow/synapse) | [0.1.0-alpha1](https://github.com/serverlessworkflow/synapse/releases) | | [main](https://github.com/serverlessworkflow/synapse) | | [GO SDK](https://github.com/serverlessworkflow/sdk-go) | [v2.0.0](https://github.com/serverlessworkflow/sdk-go/releases) | [1.0.x](https://github.com/serverlessworkflow/sdk-go/tree/1.0.x) | [main](https://github.com/serverlessworkflow/sdk-go) | diff --git a/comparisons/comparison-argo.md b/comparisons/comparison-argo.md index 93d1f12e..532829b7 100644 --- a/comparisons/comparison-argo.md +++ b/comparisons/comparison-argo.md @@ -77,7 +77,7 @@ spec: id: hello-world-parameters name: Hello World with parameters version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: whalesay functions: - name: whalesayimage @@ -156,7 +156,7 @@ spec: id: hello-hello-hello name: Multi Step Hello version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: hello1 functions: - name: whalesayimage @@ -258,7 +258,7 @@ spec: id: dag-diamond- name: DAG Diamond Example version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: A functions: - name: echo @@ -377,7 +377,7 @@ spec: id: scripts-bash- name: Scripts and Results Example version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: generate functions: - name: gen-random-int-bash @@ -473,7 +473,7 @@ spec: id: loops- name: Loop over data example version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: injectdata functions: - name: whalesay @@ -568,7 +568,7 @@ spec: id: coinflip- name: Conditionals Example version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: flip-coin functions: - name: flip-coin-function @@ -661,7 +661,7 @@ spec: id: retry-backoff- name: Retry Example version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: retry-backoff functions: - name: fail-function @@ -747,7 +747,7 @@ spec: id: coinflip-recursive- name: Recursion Example version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: flip-coin-state functions: - name: heads-function @@ -857,7 +857,7 @@ spec: id: exit-handlers- name: Exit/Error Handling Example version: '1.0' -specVersion: '0.7' +specVersion: '0.8' autoRetries: true start: intentional-fail-state functions: diff --git a/comparisons/comparison-bpmn.md b/comparisons/comparison-bpmn.md index 027531bf..167aeefa 100644 --- a/comparisons/comparison-bpmn.md +++ b/comparisons/comparison-bpmn.md @@ -52,7 +52,7 @@ For this reason, the event, function, retry, and data mapping defined in the ass id: processfile name: Process File Workflow version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: Process File states: - name: Process File @@ -88,7 +88,7 @@ functions: id: processapplication name: Process Application version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: ProcessNewApplication states: - name: ProcessNewApplication @@ -142,7 +142,7 @@ events: id: simplecompensation name: Simple Compensation version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: Step 1 states: - name: Step 1 @@ -204,7 +204,7 @@ functions: id: errorwithretries name: Error Handling With Retries Workflow version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: Make Coffee states: - name: Make Coffee @@ -268,7 +268,7 @@ functions: id: executiontimeout name: Execution Timeout Workflow version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: Purchase Parts timeouts: workflowExecTimeout: @@ -322,7 +322,7 @@ functions: id: foreachWorkflow name: ForEach State Workflow version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: ForEachItem states: - name: ForEachItem @@ -361,7 +361,7 @@ a starting "operation" state transitioning to an "event" state which waits for t id: subflowloop name: SubFlow Loop Workflow version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: SubflowRepeat states: - name: SubflowRepeat @@ -411,7 +411,7 @@ control-flow logic to check email and make a decision to reply to it or wait an id: approvereport name: Approve Report Workflow version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: Approve Report states: - name: Approve Report @@ -474,7 +474,7 @@ functions: id: eventdecision name: Event Decision workflow version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: A states: - name: A diff --git a/comparisons/comparison-brigade.md b/comparisons/comparison-brigade.md index a577f404..f5bb9f2d 100644 --- a/comparisons/comparison-brigade.md +++ b/comparisons/comparison-brigade.md @@ -65,7 +65,7 @@ function exec(e, p) { id: greeting name: Greeting Workflow version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: GreetingState events: - name: execEvent @@ -145,7 +145,7 @@ async function exec(e, p) { id: greetingwitherrorcheck name: Greeting Workflow With Error Check version: '1.0' -specVersion: '0.7' +specVersion: '0.8' autoRetries: true start: GreetingState events: @@ -240,7 +240,7 @@ events.on("push", () => { id: multieventworkflow name: Multiple Events Workflow version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: GreetingState events: - name: execEvent @@ -325,7 +325,7 @@ events.on("exec", () => { id: groupActionsWorkflow name: Group Actions Workflow version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: FirstGreetGroup events: - name: execEvent @@ -404,7 +404,7 @@ events.on("exec", (e, p) => { id: eventDataWorkflow name: Event Data Workflow version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: LogEventData events: - name: execEvent @@ -481,7 +481,7 @@ events.on("exec", (e, p) => { id: actionResultsWorkflow name: Action Results Workflow version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: ExecActionsAndStoreResults events: - name: execEvent @@ -572,7 +572,7 @@ events.on("next", (e) => { id: eventDataWorkflow name: Event Data Workflow version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: ExecEventState events: - name: execEvent diff --git a/comparisons/comparison-google-cloud-workflows.md b/comparisons/comparison-google-cloud-workflows.md index 023cbfce..fa8d3996 100644 --- a/comparisons/comparison-google-cloud-workflows.md +++ b/comparisons/comparison-google-cloud-workflows.md @@ -86,7 +86,7 @@ languages. { "id": "greetingwithargs", "name": "Greeting With Args", - "specVersion": "0.7", + "specVersion": "0.8", "start": "Set Output", "states": [ { @@ -195,7 +195,7 @@ instance is created. See the Serverless Workflow ["Workflow Data"](../specificat "id": "concatarray", "name": "Concatenating array values", "start": "DoConcat", - "specVersion": "0.7", + "specVersion": "0.8", "states": [ { "name": "DoConcat", @@ -285,7 +285,7 @@ array values, however it would just unnecessarily complicate things. { "id": "stopcomputeengine", "name": "Stop Compute Engine", - "specVersion": "0.7", + "specVersion": "0.8", "start": "DoStop", "states": [ { @@ -416,7 +416,7 @@ as service invocations, where as Google Workflow uses the "call" keyword. { "id": "publishtotopicwitherrorhandling", "name": "Publish To Topic With Error Handling", - "specVersion": "0.7", + "specVersion": "0.8", "start": "DoPublish", "errors": [ { @@ -577,7 +577,7 @@ to interested parties via events (CloudEvents specification format), which we ar "id": "errorhandlingwithretries", "name": "Error Handling with Retries", "start": "ReadItem", - "specVersion": "0.7", + "specVersion": "0.8", "states": [ { "name": "ReadItem", diff --git a/comparisons/comparison-temporal.md b/comparisons/comparison-temporal.md index 9056e502..31f2029f 100644 --- a/comparisons/comparison-temporal.md +++ b/comparisons/comparison-temporal.md @@ -83,7 +83,7 @@ public static class GreetingWorkflowImpl implements GreetingWorkflow { "id": "greetingworkflow", "name": "Greeting Workflow", "version": "1.0", - "specVersion": "0.7", + "specVersion": "0.8", "autoRetries": true, "states": [ { @@ -165,7 +165,7 @@ WorkflowOptions workflowOptions = "id": "greetingworkflow", "name": "Greeting Workflow", "version": "1.0", - "specVersion": "0.7", + "specVersion": "0.8", "autoRetries": true, "timeouts": { "workflowExecTimeout": "PT10M" @@ -269,7 +269,7 @@ WorkflowOptions workflowOptions = "id": "HelloSaga", "name": "Hello SAGA compensation Workflow", "version": "1.0", - "specVersion": "0.7" + "specVersion": "0.8", "states": [ { "name": "ExecuteState", @@ -393,7 +393,7 @@ static class GreetingActivitiesImpl implements GreetingActivities { "id": "HelloActivityRetry", "name": "Hello Activity with Retries Workflow", "version": "1.0", - "specVersion": "0.7", + "specVersion": "0.8", "autoRetries": true, "start": "GreetingState", "states": [ diff --git a/examples/README.md b/examples/README.md index 252383ca..a964cea0 100644 --- a/examples/README.md +++ b/examples/README.md @@ -68,7 +68,7 @@ data output, which is: { "id": "helloworld", "version": "1.0", -"specVersion": "0.7", +"specVersion": "0.8", "name": "Hello World Workflow", "description": "Inject Hello World", "start": "Hello State", @@ -91,7 +91,7 @@ data output, which is: ```yaml id: helloworld version: '1.0' -specVersion: '0.7' +specVersion: '0.8' name: Hello World Workflow description: Inject Hello World start: Hello State @@ -152,7 +152,7 @@ Which is added to the states data and becomes the workflow data output. { "id": "greeting", "version": "1.0", -"specVersion": "0.7", +"specVersion": "0.8", "name": "Greeting Workflow", "description": "Greet Someone", "start": "Greet", @@ -191,7 +191,7 @@ Which is added to the states data and becomes the workflow data output. ```yaml id: greeting version: '1.0' -specVersion: '0.7' +specVersion: '0.8' name: Greeting Workflow description: Greet Someone start: Greet @@ -297,7 +297,7 @@ filters what is selected to be the state data output which then becomes the work { "id": "eventbasedgreeting", "version": "1.0", -"specVersion": "0.7", +"specVersion": "0.8", "name": "Event Based Greeting Workflow", "description": "Event Based Greeting", "start": "Greet", @@ -350,7 +350,7 @@ filters what is selected to be the state data output which then becomes the work ```yaml id: eventbasedgreeting version: '1.0' -specVersion: '0.7' +specVersion: '0.8' name: Event Based Greeting Workflow description: Event Based Greeting start: Greet @@ -425,7 +425,7 @@ result of the workflow execution. { "id": "solvemathproblems", "version": "1.0", -"specVersion": "0.7", +"specVersion": "0.8", "name": "Solve Math Problems Workflow", "description": "Solve math problems", "start": "Solve", @@ -467,7 +467,7 @@ result of the workflow execution. ```yaml id: solvemathproblems version: '1.0' -specVersion: '0.7' +specVersion: '0.8' name: Solve Math Problems Workflow description: Solve math problems start: Solve @@ -522,7 +522,7 @@ to finish execution before it can transition (end workflow execution in this cas { "id": "parallelexec", "version": "1.0", -"specVersion": "0.7", +"specVersion": "0.8", "name": "Parallel Execution Workflow", "description": "Executes two branches in parallel", "start": "ParallelExec", @@ -557,7 +557,7 @@ to finish execution before it can transition (end workflow execution in this cas ```yaml id: parallelexec version: '1.0' -specVersion: '0.7' +specVersion: '0.8' name: Parallel Execution Workflow description: Executes two branches in parallel start: ParallelExec @@ -612,7 +612,7 @@ does not wait for its results. { "id": "sendcustomeremail", "version": "1.0", - "specVersion": "0.7", + "specVersion": "0.8", "name": "Send customer email workflow", "description": "Send email to a customer", "start": "Send Email", @@ -649,7 +649,7 @@ does not wait for its results. ```yaml id: sendcustomeremail version: '1.0' -specVersion: '0.7' +specVersion: '0.8' name: Send customer email workflow description: Send email to a customer start: Send Email @@ -703,7 +703,7 @@ property to `continue`. { "id": "onboardcustomer", "version": "1.0", - "specVersion": "0.7", + "specVersion": "0.8", "name": "Onboard Customer", "description": "Onboard a Customer", "start": "Onboard", @@ -733,7 +733,7 @@ property to `continue`. ```yaml id: onboardcustomer version: '1.0' -specVersion: '0.7' +specVersion: '0.8' name: Onboard Customer description: Onboard a Customer start: Onboard @@ -785,7 +785,7 @@ period, the workflow transitions to the "HandleNoVisaDecision" state. { "id": "eventbasedswitchstate", "version": "1.0", -"specVersion": "0.7", +"specVersion": "0.8", "name": "Event Based Switch Transitions", "description": "Event Based Switch Transitions", "start": "CheckVisaStatus", @@ -860,7 +860,7 @@ period, the workflow transitions to the "HandleNoVisaDecision" state. ```yaml id: eventbasedswitchstate version: '1.0' -specVersion: '0.7' +specVersion: '0.8' name: Event Based Switch Transitions description: Event Based Switch Transitions start: CheckVisaStatus @@ -944,7 +944,7 @@ If the applicants age is over 18 we start the application (subflow action). Othe { "id": "applicantrequest", "version": "1.0", - "specVersion": "0.7", + "specVersion": "0.8", "name": "Applicant Request Decision Workflow", "description": "Determine if applicant request is valid", "start": "CheckApplication", @@ -1008,7 +1008,7 @@ If the applicants age is over 18 we start the application (subflow action). Othe ```yaml id: applicantrequest version: '1.0' -specVersion: '0.7' +specVersion: '0.8' name: Applicant Request Decision Workflow description: Determine if applicant request is valid start: CheckApplication @@ -1088,7 +1088,7 @@ The data output of the workflow contains the information of the exception caught { "id": "provisionorders", "version": "1.0", -"specVersion": "0.7", +"specVersion": "0.8", "name": "Provision Orders", "description": "Provision Orders and handle errors thrown", "start": "ProvisionOrder", @@ -1193,7 +1193,7 @@ The data output of the workflow contains the information of the exception caught ```yaml id: provisionorders version: '1.0' -specVersion: '0.7' +specVersion: '0.8' name: Provision Orders description: Provision Orders and handle errors thrown start: ProvisionOrder @@ -1284,7 +1284,7 @@ In the case job submission raises a runtime error, we transition to an Operation { "id": "jobmonitoring", "version": "1.0", - "specVersion": "0.7", + "specVersion": "0.8", "name": "Job Monitoring", "description": "Monitor finished execution of a submitted job", "start": "SubmitJob", @@ -1416,7 +1416,7 @@ In the case job submission raises a runtime error, we transition to an Operation ```yaml id: jobmonitoring version: '1.0' -specVersion: '0.7' +specVersion: '0.8' name: Job Monitoring description: Monitor finished execution of a submitted job start: SubmitJob @@ -1575,7 +1575,7 @@ CloudEvent upon completion of the workflow could look like: { "id": "sendcloudeventonprovision", "version": "1.0", -"specVersion": "0.7", +"specVersion": "0.8", "name": "Send CloudEvent on provision completion", "start": "ProvisionOrdersState", "events": [ @@ -1625,7 +1625,7 @@ CloudEvent upon completion of the workflow could look like: ```yaml id: sendcloudeventonprovision version: '1.0' -specVersion: '0.7' +specVersion: '0.8' name: Send CloudEvent on provision completion start: ProvisionOrdersState events: @@ -1709,7 +1709,7 @@ have the matching patient id. "id": "patientVitalsWorkflow", "name": "Monitor Patient Vitals", "version": "1.0", -"specVersion": "0.7", +"specVersion": "0.8", "start": "MonitorVitals", "events": [ { @@ -1810,7 +1810,7 @@ have the matching patient id. id: patientVitalsWorkflow name: Monitor Patient Vitals version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: MonitorVitals events: - name: HighBodyTemperature @@ -1904,7 +1904,7 @@ when all three of these events happened (in no particular order). "id": "finalizeCollegeApplication", "name": "Finalize College Application", "version": "1.0", -"specVersion": "0.7", +"specVersion": "0.8", "start": "FinalizeApplication", "events": [ { @@ -1983,7 +1983,7 @@ when all three of these events happened (in no particular order). id: finalizeCollegeApplication name: Finalize College Application version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: FinalizeApplication events: - name: ApplicationSubmitted @@ -2115,7 +2115,7 @@ And for denied credit check, for example: { "id": "customercreditcheck", "version": "1.0", - "specVersion": "0.7", + "specVersion": "0.8", "name": "Customer Credit Check Workflow", "description": "Perform Customer Credit Check", "start": "CheckCredit", @@ -2212,7 +2212,7 @@ And for denied credit check, for example: ```yaml id: customercreditcheck version: '1.0' -specVersion: '0.7' +specVersion: '0.8' name: Customer Credit Check Workflow description: Perform Customer Credit Check start: CheckCredit @@ -2320,7 +2320,7 @@ Bidding is done via an online application and bids are received as events are as { "id": "handleCarAuctionBid", "version": "1.0", - "specVersion": "0.7", + "specVersion": "0.8", "name": "Car Auction Bidding Workflow", "description": "Store a single bid whole the car auction is active", "start": { @@ -2370,7 +2370,7 @@ Bidding is done via an online application and bids are received as events are as ```yaml id: handleCarAuctionBid version: '1.0' -specVersion: '0.7' +specVersion: '0.8' name: Car Auction Bidding Workflow description: Store a single bid whole the car auction is active start: @@ -2450,7 +2450,7 @@ The results of the inbox service called is expected to be for example: "id": "checkInbox", "name": "Check Inbox Workflow", "version": "1.0", -"specVersion": "0.7", +"specVersion": "0.8", "description": "Periodically Check Inbox", "start": { "stateName": "CheckInbox", @@ -2509,7 +2509,7 @@ id: checkInbox name: Check Inbox Workflow description: Periodically Check Inbox version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: stateName: CheckInbox schedule: @@ -2594,7 +2594,7 @@ For this example we assume that the workflow instance is started given the follo "name": "Vet Appointment Workflow", "description": "Vet service call via events", "version": "1.0", - "specVersion": "0.7", + "specVersion": "0.8", "start": "MakeVetAppointmentState", "events": [ { @@ -2644,7 +2644,7 @@ id: VetAppointmentWorkflow name: Vet Appointment Workflow description: Vet service call via events version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: MakeVetAppointmentState events: - name: MakeVetAppointment @@ -2745,7 +2745,7 @@ In our workflow definition then we can reference these files rather than definin { "id": "paymentconfirmation", "version": "1.0", - "specVersion": "0.7", + "specVersion": "0.8", "name": "Payment Confirmation Workflow", "description": "Performs Payment Confirmation", "functions": "functiondefs.json", @@ -2846,7 +2846,7 @@ In our workflow definition then we can reference these files rather than definin ```yaml id: paymentconfirmation version: '1.0' -specVersion: '0.7' +specVersion: '0.8' name: Payment Confirmation Workflow description: Performs Payment Confirmation functions: functiondefs.json @@ -2949,7 +2949,7 @@ If the retries are not successful, we want to just gracefully end workflow execu "id": "patientonboarding", "name": "Patient Onboarding Workflow", "version": "1.0", - "specVersion": "0.7", + "specVersion": "0.8", "start": "Onboard", "states": [ { @@ -3032,7 +3032,7 @@ If the retries are not successful, we want to just gracefully end workflow execu id: patientonboarding name: Patient Onboarding Workflow version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: Onboard states: - name: Onboard @@ -3121,7 +3121,7 @@ This example shows the use of the workflow [execTimeout definition](../specifica "id": "order", "name": "Purchase Order Workflow", "version": "1.0", - "specVersion": "0.7", + "specVersion": "0.8", "start": "StartNewOrder", "timeouts": { "workflowExecTimeout": { @@ -3282,7 +3282,7 @@ This example shows the use of the workflow [execTimeout definition](../specifica id: order name: Purchase Order Workflow version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: StartNewOrder timeouts: @@ -3405,7 +3405,7 @@ the data for an hour, send report, and so on. "id": "roomreadings", "name": "Room Temp and Humidity Workflow", "version": "1.0", - "specVersion": "0.7", + "specVersion": "0.8", "start": "ConsumeReading", "timeouts": { "workflowExecTimeout": { @@ -3495,7 +3495,7 @@ the data for an hour, send report, and so on. id: roomreadings name: Room Temp and Humidity Workflow version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: ConsumeReading timeouts: workflowExecTimeout: @@ -3579,7 +3579,7 @@ We fist define our top-level workflow for this example: "id": "checkcarvitals", "name": "Check Car Vitals Workflow", "version": "1.0", - "specVersion": "0.7", + "specVersion": "0.8", "start": "WhenCarIsOn", "states": [ { @@ -3642,7 +3642,7 @@ We fist define our top-level workflow for this example: id: checkcarvitals name: Check Car Vitals Workflow version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: WhenCarIsOn states: - name: WhenCarIsOn @@ -3694,7 +3694,7 @@ And then our reusable sub-workflow which performs the checking of our car vitals "id": "vitalscheck", "name": "Car Vitals Check", "version": "1.0", - "specVersion": "0.7", + "specVersion": "0.8", "start": "CheckVitals", "states": [ { @@ -3753,7 +3753,7 @@ And then our reusable sub-workflow which performs the checking of our car vitals id: vitalscheck name: Car Vitals Check version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: CheckVitals states: - name: CheckVitals @@ -3834,7 +3834,7 @@ For the sake of the example we assume the functions and event definitions are de "id": "booklending", "name": "Book Lending Workflow", "version": "1.0", - "specVersion": "0.7", + "specVersion": "0.8", "start": "Book Lending Request", "states": [ { @@ -3975,7 +3975,7 @@ For the sake of the example we assume the functions and event definitions are de id: booklending name: Book Lending Workflow version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: Book Lending Request states: - name: Book Lending Request @@ -4101,7 +4101,7 @@ Its results are then merged back into the state data according to the "toStateDa "id": "fillglassofwater", "name": "Fill glass of water workflow", "version": "1.0", - "specVersion": "0.7", + "specVersion": "0.8", "start": "Check if full", "functions": [ { @@ -4154,7 +4154,7 @@ Its results are then merged back into the state data according to the "toStateDa id: fillglassofwater name: Fill glass of water workflow version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: Check if full functions: - name: Increment Current Count Function @@ -4301,7 +4301,7 @@ With the function and event definitions in place we can now start writing our ma id: foodorderworkflow name: Food Order Workflow version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: Place Order functions: file://orderfunctions.yml events: file://orderevents.yml @@ -4349,7 +4349,7 @@ With this in place we can start defining our sub-workflows: id: placeorderworkflow name: Place Order Workflow version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: Submit Order states: - name: Submit Order @@ -4383,7 +4383,7 @@ states: id: deliverorderworkflow name: Deliver Order Workflow version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: Dispatch Courier states: - name: Dispatch Courier @@ -4472,7 +4472,7 @@ We assume that our workflow input has the runtime-imposed quota: "id":"notifycustomerworkflow", "name":"Notify Customer", "version":"1.0", - "specVersion":"0.7", + "specVersion": "0.8", "start":"WaitForCustomerEvent", "states":[ { @@ -4547,7 +4547,7 @@ We assume that our workflow input has the runtime-imposed quota: id: notifycustomerworkflow name: Notify Customer version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: WaitForCustomerEvent states: - name: WaitForCustomerEvent @@ -4634,7 +4634,7 @@ decide which activity to perform based on the transaction value. "id": "customerbankingtransactions", "name": "Customer Banking Transactions Workflow", "version": "1.0", - "specVersion": "0.7", + "specVersion": "0.8", "autoRetries": true, "constants": { "largetxamount" : 5000 @@ -4682,7 +4682,7 @@ decide which activity to perform based on the transaction value. id: bankingtransactions name: Customer Banking Transactions Workflow version: '1.0' -specVersion: '0.7' +specVersion: '0.8' autoRetries: true constants: largetxamount: 5000 diff --git a/extensions/kpi.md b/extensions/kpi.md index a3b68eca..c83d6c74 100644 --- a/extensions/kpi.md +++ b/extensions/kpi.md @@ -126,7 +126,7 @@ an associated sample KPIs extension definition on the right. id: patientVitalsWorkflow name: Monitor Patient Vitals version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: MonitorVitals events: - name: HighBodyTemperature diff --git a/extensions/ratelimiting.md b/extensions/ratelimiting.md index aad99d91..3f57c71c 100644 --- a/extensions/ratelimiting.md +++ b/extensions/ratelimiting.md @@ -60,7 +60,7 @@ an associated sample Rate Limiting extension definition on the right. id: processapplication name: Process Application version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: ProcessNewApplication states: - name: ProcessNewApplication diff --git a/roadmap/README.md b/roadmap/README.md index 04a85bb3..f576c9b0 100644 --- a/roadmap/README.md +++ b/roadmap/README.md @@ -12,34 +12,27 @@ _Status description:_ ## Releases -- [Roadmap for next planned release](#v8) +- [v0.8 released Dec 2021](#v08) - [v0.7 released Aug 2021](#v07) - [v0.6 released March 2021](#v06) - [v0.5 released November 2020](#v05) - [v0.1 released April 2020](#v01) -## Next planned release +## Release Version 0.8 | Status | Description | Comments | | --- | --- | --- | -| ✔️| Support custom function `type` definition | [spec doc](https://github.com/serverlessworkflow/specification/blob/main/specification.md) | -| ✔️| Workflow "name" no longer a required property | [spec doc](https://github.com/serverlessworkflow/specification/blob/main/specification.md) | -| ✔️| Workflow "start" no longer a required property | [spec doc](https://github.com/serverlessworkflow/specification/blob/main/specification.md) | -| ✔️| ForEach state "iterationParam" no longer a required property | [spec doc](https://github.com/serverlessworkflow/specification/blob/main/specification.md) | -| ✔️| Added "useData" for eventDataFilter, and "useResults" for actionDataFilter | [spec doc](https://github.com/serverlessworkflow/specification/blob/main/specification.md) | -| ✔️| Added "resultEventTimeout" for action eventref | [spec doc](https://github.com/serverlessworkflow/specification/blob/main/specification.md) | -| ✔️| Added example for "continueAs" | [examples doc](https://github.com/serverlessworkflow/specification/blob/main/examples/README.md) | -| ✔️️| Support for async action invocation | [spec doc](https://github.com/serverlessworkflow/specification/blob/main/specification.md) | -| ✔️️| Support for action condition | [spec doc](https://github.com/serverlessworkflow/specification/blob/main/specification.md) | -| ✏️️| Add "completedBy" functionality | | -| ✏️️| Define workflow context | | -| ✏️️| Start work on TCK | | -| ✏️️| Add integration with open-source runtimes | | -| ✏️️| Add SDKs for more languages (Python, PHP, Rust, etc) | | -| ✏️️| Add more samples | | - - -## v0.7 +| ✔️| Support custom function `type` definition | [spec doc](https://github.com/serverlessworkflow/specification/blob/0.8.x/specification.md) | +| ✔️| Workflow "name" no longer a required property | [spec doc](https://github.com/serverlessworkflow/specification/blob/0.8.x/specification.md) | +| ✔️| Workflow "start" no longer a required property | [spec doc](https://github.com/serverlessworkflow/specification/blob/0.8.x/specification.md) | +| ✔️| ForEach state "iterationParam" no longer a required property | [spec doc](https://github.com/serverlessworkflow/specification/blob/0.8.x/specification.md) | +| ✔️| Added "useData" for eventDataFilter, and "useResults" for actionDataFilter | [spec doc](https://github.com/serverlessworkflow/specification/blob/0.8.x/specification.md) | +| ✔️| Added "resultEventTimeout" for action eventref | [spec doc](https://github.com/serverlessworkflow/specification/blob/0.8.x/specification.md) | +| ✔️| Added example for "continueAs" | [examples doc](https://github.com/serverlessworkflow/specification/blob/0.8.x/examples/README.md) | +| ✔️️| Support for async action invocation | [spec doc](https://github.com/serverlessworkflow/specification/blob/0.8.x/specification.md) | +| ✔️️| Support for action condition | [spec doc](https://github.com/serverlessworkflow/specification/blob/0.8.x/specification.md) | + +## Release Version 0.7 | Status | Description | Comments | | --- | --- | --- | @@ -69,7 +62,7 @@ _Status description:_ | ✔️| Update to error handling and retries. Retries are now per action rather than per state. Added option of automatic retries for actions | [spec doc](https://github.com/serverlessworkflow/specification/blob/0.7.x/specification.md) | | ✔️| Added "continueAs" property to end definitions | [spec doc](hhttps://github.com/serverlessworkflow/specification/blob/0.7.x/specification.md) | -## v0.6 +## Release Version 0.6 | Status | Description | Comments | | --- | --- | --- | @@ -93,7 +86,7 @@ _Status description:_ | ✔️| Updated schedule definition | [spec doc](https://github.com/serverlessworkflow/specification/blob/0.6.x/specification.md) | | ✔️| Update data filters | [spec doc](https://github.com/serverlessworkflow/specification/blob/0.6.x/specification.md) | -## v0.5 +## Release Version 0.5 | Status | Description | Comments | | --- | --- | --- | @@ -126,7 +119,7 @@ _Status description:_ | ✔️| Enforce use of OpenAPI specification in function definitions for portability | [spec doc](https://github.com/serverlessworkflow/specification/blob/0.5.x/specification.md) | | ✔️| Update workflow Error Handling | [spec doc](../specification.md) | -## v0.1 +## Release Version 0.1 | Status | Description | Comments | | :--: | --- | --- | diff --git a/schema/auth.json b/schema/auth.json index 8678bb91..896bbd3a 100644 --- a/schema/auth.json +++ b/schema/auth.json @@ -1,5 +1,5 @@ { - "$id": "https://serverlessworkflow.io/schemas/0.7/auth.json", + "$id": "https://serverlessworkflow.io/schemas/0.8/auth.json", "$schema": "http://json-schema.org/draft-07/schema#", "description": "Serverless Workflow specification - auth schema", "type": "object", diff --git a/schema/common.json b/schema/common.json index 60224c55..5a3593e1 100644 --- a/schema/common.json +++ b/schema/common.json @@ -1,5 +1,5 @@ { - "$id": "https://serverlessworkflow.io/schemas/0.7/common.json", + "$id": "https://serverlessworkflow.io/schemas/0.8/common.json", "$schema": "http://json-schema.org/draft-07/schema#", "description": "Serverless Workflow specification - common schema", "type": "object", diff --git a/schema/errors.json b/schema/errors.json index 2edacf1b..52088967 100644 --- a/schema/errors.json +++ b/schema/errors.json @@ -1,5 +1,5 @@ { - "$id": "https://serverlessworkflow.io/schemas/0.7/errors.json", + "$id": "https://serverlessworkflow.io/schemas/0.8/errors.json", "$schema": "http://json-schema.org/draft-07/schema#", "description": "Serverless Workflow specification - errors schema", "type": "object", diff --git a/schema/events.json b/schema/events.json index c5c72aee..61d16e1c 100644 --- a/schema/events.json +++ b/schema/events.json @@ -1,5 +1,5 @@ { - "$id": "https://serverlessworkflow.io/schemas/0.7/events.json", + "$id": "https://serverlessworkflow.io/schemas/0.8/events.json", "$schema": "http://json-schema.org/draft-07/schema#", "description": "Serverless Workflow specification - events schema", "type": "object", diff --git a/schema/extensions/kpi.json b/schema/extensions/kpi.json index 86a9464f..08a81382 100644 --- a/schema/extensions/kpi.json +++ b/schema/extensions/kpi.json @@ -1,5 +1,5 @@ { - "$id": "https://serverlessworkflow.io/schemas/0.7/extensions/kpi.json", + "$id": "https://serverlessworkflow.io/schemas/0.8/extensions/kpi.json", "$schema": "http://json-schema.org/draft-07/schema#", "description": "Serverless Workflow specification - KPIs Extension Schema", "type": "object", diff --git a/schema/extensions/ratelimiting.json b/schema/extensions/ratelimiting.json index 930ba0cf..a7bc6f2c 100644 --- a/schema/extensions/ratelimiting.json +++ b/schema/extensions/ratelimiting.json @@ -1,5 +1,5 @@ { - "$id": "https://serverlessworkflow.io/schemas/0.7/extensions/ratelimiting.json", + "$id": "https://serverlessworkflow.io/schemas/0.8/extensions/ratelimiting.json", "$schema": "http://json-schema.org/draft-07/schema#", "description": "Serverless Workflow specification - Various workflow rate limiting settings", "type": "object", diff --git a/schema/functions.json b/schema/functions.json index 85d70b5a..08f3b345 100644 --- a/schema/functions.json +++ b/schema/functions.json @@ -1,5 +1,5 @@ { - "$id": "https://serverlessworkflow.io/schemas/0.7/functions.json", + "$id": "https://serverlessworkflow.io/schemas/0.8/functions.json", "$schema": "http://json-schema.org/draft-07/schema#", "description": "Serverless Workflow specification - functions schema", "type": "object", diff --git a/schema/odata.json b/schema/odata.json index 27febab9..958cd99c 100644 --- a/schema/odata.json +++ b/schema/odata.json @@ -1,5 +1,5 @@ { - "$id": "https://serverlessworkflow.io/schemas/0.7/odata.json", + "$id": "https://serverlessworkflow.io/schemas/0.8/odata.json", "$schema": "http://json-schema.org/draft-07/schema#", "description": "Serverless Workflow specification - OData command options schema", "type": "object", diff --git a/schema/retries.json b/schema/retries.json index ba1fd35c..1690abd7 100644 --- a/schema/retries.json +++ b/schema/retries.json @@ -1,5 +1,5 @@ { - "$id": "https://serverlessworkflow.io/schemas/0.7/retries.json", + "$id": "https://serverlessworkflow.io/schemas/0.8/retries.json", "$schema": "http://json-schema.org/draft-07/schema#", "description": "Serverless Workflow specification - retries schema", "type": "object", diff --git a/schema/secrets.json b/schema/secrets.json index 427d68ed..dc553cc1 100644 --- a/schema/secrets.json +++ b/schema/secrets.json @@ -1,5 +1,5 @@ { - "$id": "https://serverlessworkflow.io/schemas/0.7/secrets.json", + "$id": "https://serverlessworkflow.io/schemas/0.8/secrets.json", "$schema": "http://json-schema.org/draft-07/schema#", "description": "Serverless Workflow specification - secrets schema", "type": "object", diff --git a/schema/timeouts.json b/schema/timeouts.json index c99ef6b2..0e0e1b2d 100644 --- a/schema/timeouts.json +++ b/schema/timeouts.json @@ -1,5 +1,5 @@ { - "$id": "https://serverlessworkflow.io/schemas/0.7/timeouts.json", + "$id": "https://serverlessworkflow.io/schemas/0.8/timeouts.json", "$schema": "http://json-schema.org/draft-07/schema#", "description": "Serverless Workflow specification - functions schema", "type": "object", diff --git a/schema/workflow.json b/schema/workflow.json index 4d89f7e6..2d11730a 100644 --- a/schema/workflow.json +++ b/schema/workflow.json @@ -1,5 +1,5 @@ { - "$id": "https://serverlessworkflow.io/schemas/0.7/workflow.json", + "$id": "https://serverlessworkflow.io/schemas/0.8/workflow.json", "$schema": "http://json-schema.org/draft-07/schema#", "description": "Serverless Workflow specification - workflow schema", "type": "object", diff --git a/specification.md b/specification.md index 656a4713..fc683170 100644 --- a/specification.md +++ b/specification.md @@ -1,4 +1,4 @@ -# Serverless Workflow Specification +# Serverless Workflow Specification - Version 0.8 ## Table of Contents @@ -642,7 +642,7 @@ a workflow with a single event state and show how data filters can be combined. "id": "GreetCustomersWorkflow", "name": "Greet Customers when they arrive", "version": "1.0", - "specVersion": "0.7", + "specVersion": "0.8", "start": "WaitForCustomerToArrive", "states":[ { @@ -1808,7 +1808,7 @@ we can use this expression in the workflow "version" parameter: "id": "MySampleWorkflow", "name": "Sample Workflow", "version": "${ .inputVersion }", - "specVersion": "0.7" + "specVersion": "0.8" } ``` @@ -1858,7 +1858,7 @@ definition "id" must be a constant value. { "id": "sampleWorkflow", "version": "1.0", - "specVersion": "0.7", + "specVersion": "0.8", "name": "Sample Workflow", "description": "Sample Workflow", "start": "MyStartingState", @@ -1876,7 +1876,7 @@ definition "id" must be a constant value. ```yaml id: sampleWorkflow version: '1.0' -specVersion: '0.7' +specVersion: '0.8' name: Sample Workflow description: Sample Workflow start: MyStartingState @@ -1990,8 +1990,8 @@ the very first state defined in the [workflow states array](#Workflow-States). The `specVersion` property is used to set the Serverless Workflow specification release version the workflow markup adheres to. It has to follow the specification release versions (excluding the leading "v"), meaning that for -the [release version v0.7](https://github.com/serverlessworkflow/specification/releases/tag/v0.7) -its value should be set to `"0.7"`. +the [release version v0.8](https://github.com/serverlessworkflow/specification/releases/tag/v0.8) +its value should be set to `"0.8"`. The `expressionLang` property can be used to identify the expression language used for all expressions in the workflow definition. The default value of this property is ["jq"](https://stedolan.github.io/jq/). @@ -2039,7 +2039,7 @@ Here is an example of using external resource for function definitions: { "id": "sampleWorkflow", "version": "1.0", - "specVersion": "0.7", + "specVersion": "0.8", "name": "Sample Workflow", "description": "Sample Workflow", "start": "MyStartingState", @@ -2076,7 +2076,7 @@ Here is an example of using external resource for event definitions: { "id": "sampleWorkflow", "version": "1.0", - "specVersion": "0.7", + "specVersion": "0.8", "name": "Sample Workflow", "description": "Sample Workflow", "start": "MyStartingState", @@ -3010,7 +3010,7 @@ and our workflow is defined as: "id": "sendConfirmWorkflow", "name": "SendConfirmationForCompletedOrders", "version": "1.0", - "specVersion": "0.7", + "specVersion": "0.8", "start": "SendConfirmState", "functions": [ { @@ -3047,7 +3047,7 @@ and our workflow is defined as: id: sendConfirmWorkflow name: SendConfirmationForCompletedOrders version: '1.0' -specVersion: '0.7' +specVersion: '0.8' start: SendConfirmState functions: - name: sendConfirmationFunction @@ -4941,7 +4941,7 @@ Let's take a look at an example of additional properties: { "id": "myworkflow", "version": "1.0", - "specVersion": "0.7", + "specVersion": "0.8", "name": "My Test Workflow", "start": "My First State", "loglevel": "Info", @@ -4959,7 +4959,7 @@ Note the same can be also specified using workflow metadata, which is the prefer { "id": "myworkflow", "version": "1.0", - "specVersion": "0.7", + "specVersion": "0.8", "name": "Py Test Workflow", "start": "My First State", "metadata": { @@ -6127,7 +6127,7 @@ Here is an example of metadata attached to the core workflow definition: "id": "processSalesOrders", "name": "Process Sales Orders", "version": "1.0", - "specVersion": "0.7", + "specVersion": "0.8", "start": "MyStartingState", "metadata": { "loglevel": "Info",