From 5d2f236a97fa4c01c1b3f272b8e889baa7685982 Mon Sep 17 00:00:00 2001 From: sharanf Date: Tue, 19 Sep 2023 22:07:51 +0200 Subject: [PATCH 1/6] Create Community Spotlight Blog Update for August 2023 (#162) --- ...3-08-31-community-spotlight-august-2023.md | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 src/blog/_posts/2023-08-31-community-spotlight-august-2023.md diff --git a/src/blog/_posts/2023-08-31-community-spotlight-august-2023.md b/src/blog/_posts/2023-08-31-community-spotlight-august-2023.md new file mode 100644 index 000000000..a99f942e8 --- /dev/null +++ b/src/blog/_posts/2023-08-31-community-spotlight-august-2023.md @@ -0,0 +1,76 @@ +--- +title: Cadence Community Spotlight Update - August 2023 + +date: 2023-08-31 +author: Sharan Foga +authorlink: https://www.linkedin.com/in/sfoga/ +--- +Welcome to the latest of our regular monthly Community Spotlight updates that gives you news from in and around the Cadence community! + +Please see below for a roundup of the highlights: + +## More Cadence How To's ## + +You might have noticed that we have had a few more contributions to our blog from [Chris Qin](https://www.linkedin.com/in/chrisqin0610). Chris has been busy sharing insights, and tips on a few important Cadence topics. The objective is to help the community with any potential problems. + +Here are the latest topics: + +- [Bad Practices and Anti-Patterns with Cadence - Part 1](https://cadenceworkflow.io/blog/2023/07/10/cadence-bad-practices-part-1/) + +- [Non-Determistic Errors, Replayers and Shadowers](https://cadenceworkflow.io/blog/2023/08/27/nondeterministic-errors-replayers-shadowers/) + +Even if you have not encountered these use cases - it is good to be prepared and have a solution ready.Please take a look and let us have your feedback. + +Chris is also going to take a look at the [Cadence Samples](https://cadenceworkflow.io/docs/java-client/client-overview/#samples) to make sure they are all working and if not - he's going to re-write them so that they do! + +Thanks very much Chris for all the work you are doing to help improve the project! + +## More iWF Examaples ## + +Community member [Quanzheng Long](https://www.linkedin.com/in/prclqz/) has also been busy writing this month. In previous blogs Long has told us about [iWF](https://github.com/indeedeng/iwf) that is a layer implemented over of Cadence. + +During August Long has published a couple of articles on using the 'ContinueAsNew' functionality in iWF. Links to Part 1 and Part are below: + +- [Guide to ContinueAsNew in Cadence/Temporal Workflow Using iWF as an example - Part 1](https://medium.com/@qlong/guide-to-continueasnew-in-cadence-temporal-workflow-using-iwf-as-an-example-part-2-cedabd732bec) + +- [Guide to ContinueAsNew in Cadence/Temporal Workflow Using iWF as an example - Part 2](https://medium.com/@qlong/guide-to-continueasnew-in-cadence-temporal-workflow-using-iwf-as-an-example-part-1-c24ae5266f07) + +Please take a look and if you've enjoyed reading them then let Long and us know! + +## Cadence At the Helm! ## + +Last month we mentioned the Cadence Helm charts and all the previous work that had been done by [Mark Sagi-Kazar](https://www.linkedin.com/in/sagikazarmark/). We were looking to ensure they are maintained. + +So a special thanks goes out this month to [Edmondo](ttps://github.com/edmondop ) for contributing some work on the [Cadence Helm Chart](https://github.com/edmondop/cadence-helm-chart/). + +## Community Support! ## + +Our [Slack](http://t.uber.com/cadence-slack) channel continues to be the main place where people are asking for help and support with Cadence. During August (which is supposed to be holiday season), we still had 9 questions raised around various topics. + +Huge thanks to the following community members who took time to respond and help others: David, Edmondo, Chris Qin, Rony Rahman and Ben Slater. + +It's good to see that we are continuing to support each other - doing exactly what communities do! + +## Cadence in the News! + +Below are a selection of Cadence related articles, blogs and whitepapers. +Please take a look and feel free to share via your own social media channels. + + +- [Guide to ContinueAsNew in Cadence/Temporal Workflow Using iWF as an example - Part 1](https://medium.com/@qlong/guide-to-continueasnew-in-cadence-temporal-workflow-using-iwf-as-an-example-part-2-cedabd732bec) + +- [Guide to ContinueAsNew in Cadence/Temporal Workflow Using iWF as an example - Part 2](https://medium.com/@qlong/guide-to-continueasnew-in-cadence-temporal-workflow-using-iwf-as-an-example-part-1-c24ae5266f07) + +- [AWS PrivateLink Connectivity is now Available with Instaclustr for Cadence](https://www.instaclustr.com/blog/aws-privatelink-for-cadence-on-instaclustr-by-netapp/) + +## Upcoming Events + +- [Webinar: Introducing the Cadence Workflow HTTP API - 21st September 2023 ](https://netapp.zoom.us/webinar/register/WN_Uh9Y6ruiQSS5EiylNlsMug#/registration) + +- [On Demand Webinar: Microservices - A Modern Orchestration Approach with Cadence](https://netapp.zoom.us/webinar/register/WN_Hv9lO9QtSqyPPWkSAIRj5g#/registration) + +- [On Demand Webinar: Spinning Your Drones with Cadence and Apache Kafka](https://www.instaclustr.com/events/spinning-your-drones-with-cadence-and-apache-kafka/) + +If you have any news or topics you'd like us to include in our next update then please join our [Slack](http://t.uber.com/cadence-slack) #community channel. + +Please remember that this update is for you - so if you have any comments or feedback that could help us improve it then please share it with us in the #community [Slack](http://t.uber.com/cadence-slack) channel. From c2cb1c8be47779aa1d6053852e22a564a836dddc Mon Sep 17 00:00:00 2001 From: Jakob Haahr Taankvist Date: Wed, 20 Sep 2023 07:18:37 +0200 Subject: [PATCH 2/6] Added docs on how to start workflows from the go client (#161) * Added docs on how to start workflows from the go client This includes docs on how to add jitter to the workflows. * Empty commit to trigger github CI * Added section on JitterStart --- src/.vuepress/config.js | 1 + .../05-go-client/02.5-starting-workflows.md | 185 ++++++++++++++++++ 2 files changed, 186 insertions(+) create mode 100644 src/docs/05-go-client/02.5-starting-workflows.md diff --git a/src/.vuepress/config.js b/src/.vuepress/config.js index 3bc5491b1..3951b5a24 100644 --- a/src/.vuepress/config.js +++ b/src/.vuepress/config.js @@ -130,6 +130,7 @@ module.exports = { '05-go-client/', '05-go-client/01-workers', '05-go-client/02-create-workflows', + '05-go-client/02.5-starting-workflows', '05-go-client/03-activities', '05-go-client/04-execute-activity', '05-go-client/05-child-workflows', diff --git a/src/docs/05-go-client/02.5-starting-workflows.md b/src/docs/05-go-client/02.5-starting-workflows.md new file mode 100644 index 000000000..e4c10163c --- /dev/null +++ b/src/docs/05-go-client/02.5-starting-workflows.md @@ -0,0 +1,185 @@ +--- +layout: default +title: Starting workflows +permalink: /docs/go-client/start-workflows +--- + +# Starting workflows + +Starting workflows can be done from any service that can send requests to +the Cadence server. There is no requirement for workflows to be started from the +worker services. + +Generally workflows can either be started using a direct reference to the +workflow code, or by referring to the registered name of the function. In +[Workflow Registration](/docs/go-client/create-workflows/#registration) we show +how to register the workflows. + +## Starting a workflow + +After [creating a workflow](/docs/go-client/create-workflows) we can start it. +This can be done [from the cli](/docs/cli/#start-workflow), but typically +we want to start workflow programmatically e.g. from an http handler. We can do +this using the +[`client.StartWorkflow`](https://pkg.go.dev/go.uber.org/cadence/client#Client) +function: + +```go +import "go.uber.org/cadence/client" + +var cadenceClient client.Client +# Initialize cadenceClient + +cadenceClient.StartWorkflow( + ctx, + client.StartWorkflowOptions{ + TaskList: "workflow-task-list", + ExecutionStartToCloseTimeout: 10 * time.Second, + }, + WorkflowFunc, + workflowArg1, + workflowArg2, + workflowArg3, + ... +) +``` + +The will start the workflow defined in the function `WorkflowFunc`, note that +for named workflows `WorkflowFunc` could be replaced by the name e.g. +`"WorkflowFuncName"`. + +`workflowArg1`, `workflowArg2`, `workflowArg3` are arguments to the workflow, as +specified in `WorkflowFunc`, note that the arguments needs to be _serializable_. + +## Jitter Start and Batches of Workflows +Below we list all the `startWorkflowOptions`, however a particularly useful option is +`JitterStart`. + +Starting many workflows at the same time will have Cadence trying to schedule +all the workflows immediately. This can result in overloading Cadence and the +database backing Cadence, as well as the workers processing the workflows. + +This is especially bad when the workflow starts comes in batches, such as an end +of month load. These sudden loads can lead to both Cadence and the workers +needing to immediately scale up. Scaling up often takes some time, causing +queues in Cadence, delaying the execution of all workflows, potentially causing +workflows to timeout. + +To solve this we can start our workflows with `JitterStart`. `JitterStart` will start +the workflow at a random point between `now` and `now + JitterStart`, so if we +e.g. start 1000 workflows at 12:00 AM with a `JitterStart` of 6 hours, the +workflows will be randomly started between 12:00 AM and 6:00 PM. + +This makes the sudden load of 1000 workflows much more manageable. + +For many batch-like workloads a random delay is completely acceptable as the +batch just needs to be processed e.g. before the end of the day. + +Adding a JitterStart of 6 hours in the example above is as simple as adding + +```go +JitterStart: 6 * time.Hour, +``` + +to the options like so, + +```go +import "go.uber.org/cadence/client" + +var cadenceClient client.Client +# Initialize cadenceClient + +cadenceClient.StartWorkflow( + ctx, + client.StartWorkflowOptions{ + TaskList: "workflow-task-list", + ExecutionStartToCloseTimeout: 10 * time.Second, + JitterStart: 6 * time.Hour, // Added JitterStart + }, + WorkflowFunc, + workflowArg1, + workflowArg2, + workflowArg3, + ... +) +``` + +now the workflow will start at a random point between now and six hours from now. + +## StartWorkflowOptions + +The +[client.StartWorkflowOptions](https://pkg.go.dev/go.uber.org/cadence/internal#StartWorkflowOptions) +specifies the behavior of this particular workflow. The invocation above only +specifies the two mandatory options; `TaskList` and +`ExecutionStartToCloseTimeout`, all the options are described in the [inline +documentation](https://pkg.go.dev/go.uber.org/cadence/internal#StartWorkflowOptions): + +```go +type StartWorkflowOptions struct { + // ID - The business identifier of the workflow execution. + // Optional: defaulted to a uuid. + ID string + + // TaskList - The decisions of the workflow are scheduled on this queue. + // This is also the default task list on which activities are scheduled. The workflow author can choose + // to override this using activity options. + // Mandatory: No default. + TaskList string + + // ExecutionStartToCloseTimeout - The timeout for duration of workflow execution. + // The resolution is seconds. + // Mandatory: No default. + ExecutionStartToCloseTimeout time.Duration + + // DecisionTaskStartToCloseTimeout - The timeout for processing decision task from the time the worker + // pulled this task. If a decision task is lost, it is retried after this timeout. + // The resolution is seconds. + // Optional: defaulted to 10 secs. + DecisionTaskStartToCloseTimeout time.Duration + + // WorkflowIDReusePolicy - Whether server allow reuse of workflow ID, can be useful + // for dedup logic if set to WorkflowIdReusePolicyRejectDuplicate. + // Optional: defaulted to WorkflowIDReusePolicyAllowDuplicateFailedOnly. + WorkflowIDReusePolicy WorkflowIDReusePolicy + + // RetryPolicy - Optional retry policy for workflow. If a retry policy is specified, in case of workflow failure + // server will start new workflow execution if needed based on the retry policy. + RetryPolicy *RetryPolicy + + // CronSchedule - Optional cron schedule for workflow. If a cron schedule is specified, the workflow will run + // as a cron based on the schedule. The scheduling will be based on UTC time. Schedule for next run only happen + // after the current run is completed/failed/timeout. If a RetryPolicy is also supplied, and the workflow failed + // or timeout, the workflow will be retried based on the retry policy. While the workflow is retrying, it won't + // schedule its next run. If next schedule is due while workflow is running (or retrying), then it will skip that + // schedule. Cron workflow will not stop until it is terminated or cancelled (by returning cadence.CanceledError). + // The cron spec is as following: + // ┌───────────── minute (0 - 59) + // │ ┌───────────── hour (0 - 23) + // │ │ ┌───────────── day of the month (1 - 31) + // │ │ │ ┌───────────── month (1 - 12) + // │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday) + // │ │ │ │ │ + // │ │ │ │ │ + // * * * * * + CronSchedule string + + // Memo - Optional non-indexed info that will be shown in list workflow. + Memo map[string]interface{} + + // SearchAttributes - Optional indexed info that can be used in query of List/Scan/Count workflow APIs (only + // supported when Cadence server is using ElasticSearch). The key and value type must be registered on Cadence server side. + // Use GetSearchAttributes API to get valid key and corresponding value type. + SearchAttributes map[string]interface{} + + // DelayStartSeconds - Seconds to delay the workflow start + // The resolution is seconds. + // Optional: defaulted to 0 seconds + DelayStart time.Duration + + // JitterStart - Seconds to jitter the workflow start. For example, if set to 10, the workflow will start some time between 0-10 seconds. + // This works with CronSchedule and with DelayStart. + // Optional: defaulted to 0 seconds + JitterStart time.Duration +} +``` \ No newline at end of file From c72a01a04836be46964bf850f1b887693055144e Mon Sep 17 00:00:00 2001 From: Justin Weng Date: Tue, 3 Oct 2023 12:35:47 +1100 Subject: [PATCH 3/6] Add HTTP API documentation (#165) * Add HTTP API documentation * Add reference to file --------- Co-authored-by: Shijie Sheng --- src/.vuepress/config.js | 1 + src/docs/03-concepts/10-http-api.md | 2185 +++++++++++++++++++++++++++ src/docs/03-concepts/index.md | 2 + 3 files changed, 2188 insertions(+) create mode 100644 src/docs/03-concepts/10-http-api.md diff --git a/src/.vuepress/config.js b/src/.vuepress/config.js index 3951b5a24..e00110252 100644 --- a/src/.vuepress/config.js +++ b/src/.vuepress/config.js @@ -96,6 +96,7 @@ module.exports = { '03-concepts/07-archival', '03-concepts/08-cross-dc-replication', '03-concepts/09-search-workflows', + '03-concepts/10-http-api', ], }, { diff --git a/src/docs/03-concepts/10-http-api.md b/src/docs/03-concepts/10-http-api.md new file mode 100644 index 000000000..76f3f6d57 --- /dev/null +++ b/src/docs/03-concepts/10-http-api.md @@ -0,0 +1,2185 @@ +--- +layout: default +title: HTTP API +permalink: /docs/concepts/http-api +--- + +# Using HTTP API + +## Introduction + +From **version 1.2.0** onwards, Cadence has introduced HTTP API support, which allows you to interact with the Cadence server +using the HTTP protocol. To put this into perspective, HTTP/JSON communication is a flexible method for server interaction. +In the context of Cadence, this implies that a range of RPC methods can be exposed and invoked using the HTTP protocol. +This enhancement broadens the scope of interaction with the Cadence server, enabling the use of any programming language that supports HTTP. +Consequently, you can leverage this functionality to initiate or terminate workflows from your bash scripts, monitor the +status of your cluster, or execute any other operation that the Cadence RPC declaration supports. + +## Setup + +### Updating Cadence configuration files + +To enable “start workflow” HTTP API, add `http` section to Cadence RPC configuration settings (e.g., in `base.yaml` or `development.yaml`): + +```yaml +services: + frontend: + rpc: + <...> + http: + port: 8800 + procedures: + - uber.cadence.api.v1.WorkflowAPI::StartWorkflowExecution +``` + +Then you can run Cadence server in the following ways to use HTTP API. + +### Using local binaries + +Build and run `./cadence-server` as described in [Developing Cadence](https://github.com/uber/cadence/blob/master/CONTRIBUTING.md). + +### Using “docker run” command + +Refer to instructions described +in [Using docker image for production](https://github.com/uber/cadence/tree/master/docker#using-docker-image-for-production). + +Additionally add two more environment variables: + +```bash +docker run +<...> + -e FRONTEND_HTTP_PORT=8800 -- HTTP PORT TO LISTEN + -e FRONTEND_HTTP_PROCEDURES=uber.cadence.api.v1.WorkflowAPI::StartWorkflowExecution -- List of API methods exposed + ubercadence/server: +``` + +### Using docker-compose + +Add HTTP environment variables to `docker/docker-compose.yml` configuration: + +```yaml +cadence: + image: ubercadence/server:master-auto-setup + ports: + - "8000:8000" + - "8001:8001" + - "8002:8002" + - "8003:8003" + - "7933:7933" + - "7934:7934" + - "7935:7935" + - "7939:7939" + - "7833:7833" + - "8800:8800" + environment: + - "CASSANDRA_SEEDS=cassandra" + - "PROMETHEUS_ENDPOINT_0=0.0.0.0:8000" + - "PROMETHEUS_ENDPOINT_1=0.0.0.0:8001" + - "PROMETHEUS_ENDPOINT_2=0.0.0.0:8002" + - "PROMETHEUS_ENDPOINT_3=0.0.0.0:8003" + - "DYNAMIC_CONFIG_FILE_PATH=config/dynamicconfig/development.yaml" + - "FRONTEND_HTTP_PORT=8800" + - "FRONTEND_HTTP_PROCEDURES=uber.cadence.api.v1.WorkflowAPI::StartWorkflowExecution" +``` + +## Using HTTP API + +Start a workflow using curl command + +```bash +curl -X POST http://0.0.0.0:8800 \ + -H 'context-ttl-ms: 2000' \ + -H 'rpc-caller: rpc-client-name' \ + -H 'rpc-service: cadence-frontend' \ + -H 'rpc-encoding: json' \ + -H 'rpc-procedure: uber.cadence.api.v1.WorkflowAPI::StartWorkflowExecution' \ + -d @data.json +``` + +Where `data.json` content looks something like this: + +```json +{ + "domain": "sample-domain", + "workflowId": "workflowid123", + "execution_start_to_close_timeout": "11s", + "task_start_to_close_timeout": "10s", + "workflowType": { + "name": "workflow_type" + }, + "taskList": { + "name": "tasklist-name" + }, + "identity": "My custom caller identity", + "requestId": "4D1E4058-6FCF-4BA8-BF16-8FA8B02F9651" +} +``` + +## HTTP API Reference + +### Admin API + +------------------------------------------------------------------------------------------ + +
+POST uber.cadence.admin.v1.AdminAPI::AddSearchAttribute + +#### Add search attributes to whitelist + +##### Headers + +| name | example | +|----------------|----------------------------------------------------| +| context-ttl-ms | 2000 | +| rpc-caller | curl-client | +| rpc-service | cadence-frontend | +| rpc-encoding | json | +| rpc-procedure | uber.cadence.admin.v1.AdminAPI::AddSearchAttribute | + +##### Example payload + +```json +{ + "search_attribute": { + "custom_key": 1 + } +} +``` + +Search attribute types + +| type | value | +|----------|-------| +| String | 1 | +| Keyword | 2 | +| Int | 3 | +| Double | 4 | +| DateTime | 5 | + +##### Example cURL + +```bash +curl -X POST http://0.0.0.0:8800 \ + -H 'context-ttl-ms: 2000' \ + -H 'rpc-caller: curl-client' \ + -H 'rpc-service: cadence-frontend' \ + -H 'rpc-encoding: json' \ + -H 'rpc-procedure: uber.cadence.admin.v1.AdminAPI::AddSearchAttribute' \ + -d \ + '{ + "search_attribute": { + "custom_key": 1 + } + }' +``` + +##### Example successful response + +HTTP code: 200 + +```json +{} +``` + +
+ +------------------------------------------------------------------------------------------ + +
+POST uber.cadence.admin.v1.AdminAPI::CloseShard + +#### Close a shard given a shard ID + +##### Headers + +| name | example | +|----------------|--------------------------------------------| +| context-ttl-ms | 2000 | +| rpc-caller | curl-client | +| rpc-service | cadence-frontend | +| rpc-encoding | json | +| rpc-procedure | uber.cadence.admin.v1.AdminAPI::CloseShard | + +##### Example payload + +```json +{ + "shard_id": 0 +} +``` + +##### Example cURL + +```bash +curl -X POST http://0.0.0.0:8800 \ + -H 'context-ttl-ms: 2000' \ + -H 'rpc-caller: curl-client' \ + -H 'rpc-service: cadence-frontend' \ + -H 'rpc-encoding: json' \ + -H 'rpc-procedure: uber.cadence.admin.v1.AdminAPI::CloseShard' \ + -d \ + '{ + "shard_id": 0 + }' +``` + +##### Example successful response + +HTTP code: 200 + +```json +{} +``` + +
+ +------------------------------------------------------------------------------------------ + +
+POST uber.cadence.admin.v1.AdminAPI::CountDLQMessages + +#### Count DLQ messages + +##### Headers + +| name | example | +|----------------|--------------------------------------------------| +| context-ttl-ms | 2000 | +| rpc-caller | curl-client | +| rpc-service | cadence-frontend | +| rpc-encoding | json | +| rpc-procedure | uber.cadence.admin.v1.AdminAPI::CountDLQMessages | + +##### Example payload + +None + +##### Example cURL + +```bash +curl -X POST http://0.0.0.0:8800 \ + -H 'context-ttl-ms: 2000' \ + -H 'rpc-caller: curl-client' \ + -H 'rpc-service: cadence-frontend' \ + -H 'rpc-encoding: json' \ + -H 'rpc-procedure: uber.cadence.admin.v1.AdminAPI::CountDLQMessages' +``` + +##### Example successful response + +HTTP code: 200 + +```json +{ + "history": [] +} +``` + +
+ +------------------------------------------------------------------------------------------ + +
+POST uber.cadence.admin.v1.AdminAPI::DescribeCluster + +#### Describe cluster information + +##### Headers + +| name | example | +|----------------|-------------------------------------------------| +| context-ttl-ms | 2000 | +| rpc-caller | curl-client | +| rpc-service | cadence-frontend | +| rpc-encoding | json | +| rpc-procedure | uber.cadence.admin.v1.AdminAPI::DescribeCluster | + +##### Example payload + +None + +##### Example cURL + +```bash +curl -X POST http://0.0.0.0:8800 \ + -H 'context-ttl-ms: 2000' \ + -H 'rpc-caller: curl-client' \ + -H 'rpc-service: cadence-frontend' \ + -H 'rpc-encoding: json' \ + -H 'rpc-procedure: uber.cadence.admin.v1.AdminAPI::DescribeCluster' +``` + +##### Example successful response + +HTTP code: 200 + +```json +{ + "supportedClientVersions": { + "goSdk": "1.7.0", + "javaSdk": "1.5.0" + }, + "membershipInfo": { + "currentHost": { + "identity": "127.0.0.1:7933" + }, + "reachableMembers": [ + "127.0.0.1:7933", + "127.0.0.1:7934", + "127.0.0.1:7935", + "127.0.0.1:7939" + ], + "rings": [ + { + "role": "cadence-frontend", + "memberCount": 1, + "members": [ + { + "identity": "127.0.0.1:7933" + } + ] + }, + { + "role": "cadence-history", + "memberCount": 1, + "members": [ + { + "identity": "127.0.0.1:7934" + } + ] + }, + { + "role": "cadence-matching", + "memberCount": 1, + "members": [ + { + "identity": "127.0.0.1:7935" + } + ] + }, + { + "role": "cadence-worker", + "memberCount": 1, + "members": [ + { + "identity": "127.0.0.1:7939" + } + ] + } + ] + }, + "persistenceInfo": { + "historyStore": { + "backend": "shardedNosql" + }, + "visibilityStore": { + "backend": "cassandra", + "features": [ + { + "key": "advancedVisibilityEnabled" + } + ] + } + } +} +``` + +
+ +------------------------------------------------------------------------------------------ + +
+POST uber.cadence.admin.v1.AdminAPI::DescribeHistoryHost + +#### Describe internal information of history host + +##### Headers + +| name | example | +|----------------|-----------------------------------------------------| +| context-ttl-ms | 2000 | +| rpc-caller | curl-client | +| rpc-service | cadence-frontend | +| rpc-encoding | json | +| rpc-procedure | uber.cadence.admin.v1.AdminAPI::DescribeHistoryHost | + +##### Example payload + +```json +{ + "host_address": "127.0.0.1:7934" +} +``` + +##### Example cURL + +```bash +curl -X POST http://0.0.0.0:8800 \ + -H 'context-ttl-ms: 2000' \ + -H 'rpc-caller: curl-client' \ + -H 'rpc-service: cadence-frontend' \ + -H 'rpc-encoding: json' \ + -H 'rpc-procedure: uber.cadence.admin.v1.AdminAPI::DescribeHistoryHost' \ + -d \ + '{ + "host_address": "127.0.0.1:7934" + }' +``` + +##### Example successful response + +HTTP code: 200 + +```json +{ + "numberOfShards": 4, + "domainCache": { + "numOfItemsInCacheByID": 5, + "numOfItemsInCacheByName": 5 + }, + "shardControllerStatus": "started", + "address": "127.0.0.1:7934" +} +``` + +
+ +------------------------------------------------------------------------------------------ + +
+POST uber.cadence.admin.v1.AdminAPI::DescribeShardDistribution + +#### List shard distribution + +##### Headers + +| name | example | +|----------------|-----------------------------------------------------------| +| context-ttl-ms | 2000 | +| rpc-caller | curl-client | +| rpc-service | cadence-frontend | +| rpc-encoding | json | +| rpc-procedure | uber.cadence.admin.v1.AdminAPI::DescribeShardDistribution | + +##### Example payload + +```json +{ + "page_size": 100, + "page_id": 0 +} +``` + +##### Example cURL + +```bash +curl -X POST http://0.0.0.0:8800 \ + -H 'context-ttl-ms: 2000' \ + -H 'rpc-caller: curl-client' \ + -H 'rpc-service: cadence-frontend' \ + -H 'rpc-encoding: json' \ + -H 'rpc-procedure: uber.cadence.admin.v1.AdminAPI::DescribeShardDistribution' \ + -d \ + '{ + "page_size": 100, + "page_id": 0 + }' +``` + +##### Example successful response + +HTTP code: 200 + +```json +{ + "numberOfShards": 4, + "shards": { + "0": "127.0.0.1:7934", + "1": "127.0.0.1:7934", + "2": "127.0.0.1:7934", + "3": "127.0.0.1:7934" + } +} +``` + +
+ +------------------------------------------------------------------------------------------ + +
+POST uber.cadence.admin.v1.AdminAPI::DescribeWorkflowExecution + +#### Describe internal information of workflow execution + +##### Headers + +| name | example | +|----------------|-----------------------------------------------------------| +| context-ttl-ms | 2000 | +| rpc-caller | curl-client | +| rpc-service | cadence-frontend | +| rpc-encoding | json | +| rpc-procedure | uber.cadence.admin.v1.AdminAPI::DescribeWorkflowExecution | + +##### Example payload + +```json +{ + "domain": "sample-domain", + "workflow_execution": { + "workflow_id": "sample-workflow-id", + "run_id": "cc09d5dd-b2fa-46d8-b426-54c96b12d18f" + } +} +``` + +`run_id` is optional and allows to describe a specific run. + +##### Example cURL + +```bash +curl -X POST http://0.0.0.0:8800 \ + -H 'context-ttl-ms: 2000' \ + -H 'rpc-caller: curl-client' \ + -H 'rpc-service: cadence-frontend' \ + -H 'rpc-encoding: json' \ + -H 'rpc-procedure: uber.cadence.admin.v1.AdminAPI::DescribeWorkflowExecution' \ + -d \ + '{ + "domain": "sample-domain", + "workflow_execution": { + "workflow_id": "sample-workflow-id", + "run_id": "cc09d5dd-b2fa-46d8-b426-54c96b12d18f" + } + }' | tr -d '\' +``` + +##### Example successful response + +HTTP code: 200 + +```json +{ + "shardId": 3, + "historyAddr": "127.0.0.1:7934", + "mutableStateInDatabase": { + "ActivityInfos": {}, + "TimerInfos": {}, + "ChildExecutionInfos": {}, + "RequestCancelInfos": {}, + "SignalInfos": {}, + "SignalRequestedIDs": {}, + "ExecutionInfo": { + "DomainID": "d7aff879-f524-43a8-b340-5a223a69d75b", + "WorkflowID": "sample-workflow-id", + "RunID": "cc09d5dd-b2fa-46d8-b426-54c96b12d18f", + "FirstExecutionRunID": "cc09d5dd-b2fa-46d8-b426-54c96b12d18f", + "ParentDomainID": "", + "ParentWorkflowID": "", + "ParentRunID": "", + "InitiatedID": -7, + "CompletionEventBatchID": 3, + "CompletionEvent": null, + "TaskList": "sample-task-list", + "WorkflowTypeName": "sample-workflow-type", + "WorkflowTimeout": 11, + "DecisionStartToCloseTimeout": 10, + "ExecutionContext": null, + "State": 2, + "CloseStatus": 6, + "LastFirstEventID": 3, + "LastEventTaskID": 8388614, + "NextEventID": 4, + "LastProcessedEvent": -23, + "StartTimestamp": "2023-09-08T05:13:04.24Z", + "LastUpdatedTimestamp": "2023-09-08T05:13:15.247Z", + "CreateRequestID": "8049b932-6c2f-415a-9bb2-241dcf4cfc9c", + "SignalCount": 0, + "DecisionVersion": 0, + "DecisionScheduleID": 2, + "DecisionStartedID": -23, + "DecisionRequestID": "emptyUuid", + "DecisionTimeout": 10, + "DecisionAttempt": 0, + "DecisionStartedTimestamp": 0, + "DecisionScheduledTimestamp": 1694149984240504000, + "DecisionOriginalScheduledTimestamp": 1694149984240503000, + "CancelRequested": false, + "CancelRequestID": "", + "StickyTaskList": "", + "StickyScheduleToStartTimeout": 0, + "ClientLibraryVersion": "", + "ClientFeatureVersion": "", + "ClientImpl": "", + "AutoResetPoints": {}, + "Memo": null, + "SearchAttributes": null, + "PartitionConfig": null, + "Attempt": 0, + "HasRetryPolicy": false, + "InitialInterval": 0, + "BackoffCoefficient": 0, + "MaximumInterval": 0, + "ExpirationTime": "0001-01-01T00:00:00Z", + "MaximumAttempts": 0, + "NonRetriableErrors": null, + "BranchToken": null, + "CronSchedule": "", + "IsCron": false, + "ExpirationSeconds": 0 + }, + "ExecutionStats": null, + "BufferedEvents": [], + "VersionHistories": { + "CurrentVersionHistoryIndex": 0, + "Histories": [ + { + "BranchToken": "WQsACgAAACRjYzA5ZDVkZC1iMmZhLTQ2ZDgtYjQyNi01NGM5NmIxMmQxOGYLABQAAAAkYWM5YmIwMmUtMjllYy00YWEyLTlkZGUtZWQ0YWU1NWRhMjlhDwAeDAAAAAAA", + "Items": [ + { + "EventID": 3, + "Version": 0 + } + ] + } + ] + }, + "ReplicationState": null, + "Checksum": { + "Version": 0, + "Flavor": 0, + "Value": null + } + } +} +``` + +
+ +------------------------------------------------------------------------------------------ + +### Domain API + +------------------------------------------------------------------------------------------ + +
+POST uber.cadence.api.v1.DomainAPI::DescribeDomain + +#### Describe existing workflow domain + +##### Headers + +| name | example | +|----------------|-----------------------------------------------| +| context-ttl-ms | 2000 | +| rpc-caller | curl-client | +| rpc-service | cadence-frontend | +| rpc-encoding | json | +| rpc-procedure | uber.cadence.api.v1.DomainAPI::DescribeDomain | + +##### Example payload + +```json +{ + "name": "sample-domain", + "uuid": "d7aff879-f524-43a8-b340-5a223a69d75b" +} +``` + +`uuid` of the domain is optional. + +##### Example cURL + +```bash +curl -X POST http://0.0.0.0:8800 \ + -H 'context-ttl-ms: 2000' \ + -H 'rpc-caller: curl-client' \ + -H 'rpc-service: cadence-frontend' \ + -H 'rpc-encoding: json' \ + -H 'rpc-procedure: uber.cadence.api.v1.DomainAPI::DescribeDomain' \ + -d \ + '{ + "name": "sample-domain" + }' +``` + +##### Example successful response + +HTTP code: 200 + +```json +{ + "domain": { + "id": "d7aff879-f524-43a8-b340-5a223a69d75b", + "name": "sample-domain", + "status": "DOMAIN_STATUS_REGISTERED", + "data": {}, + "workflowExecutionRetentionPeriod": "259200s", + "badBinaries": { + "binaries": {} + }, + "historyArchivalStatus": "ARCHIVAL_STATUS_ENABLED", + "historyArchivalUri": "file:///tmp/cadence_archival/development", + "visibilityArchivalStatus": "ARCHIVAL_STATUS_ENABLED", + "visibilityArchivalUri": "file:///tmp/cadence_vis_archival/development", + "activeClusterName": "cluster0", + "clusters": [ + { + "clusterName": "cluster0" + } + ], + "isGlobalDomain": true, + "isolationGroups": {} + } +} +``` + +
+ +------------------------------------------------------------------------------------------ + +
+POST uber.cadence.api.v1.DomainAPI::ListDomains + +#### List all domains in the cluster + +##### Headers + +| name | example | +|----------------|--------------------------------------------| +| context-ttl-ms | 2000 | +| rpc-caller | curl-client | +| rpc-service | cadence-frontend | +| rpc-encoding | json | +| rpc-procedure | uber.cadence.api.v1.DomainAPI::ListDomains | + +##### Example payload + +```json +{ + "page_size": 100 +} +``` + +##### Example cURL + +```bash +curl -X POST http://0.0.0.0:8800 \ + -H 'context-ttl-ms: 2000' \ + -H 'rpc-caller: curl-client' \ + -H 'rpc-service: cadence-frontend' \ + -H 'rpc-encoding: json' \ + -H 'rpc-procedure: uber.cadence.api.v1.DomainAPI::ListDomains' \ + -d \ + '{ + "page_size": 100 + }' +``` + +##### Example successful response + +HTTP code: 200 + +```json +{ + "domains": [ + { + "id": "3116607e-419b-4783-85fc-47726a4c3fe9", + "name": "cadence-batcher", + "status": "DOMAIN_STATUS_REGISTERED", + "description": "Cadence internal system domain", + "data": {}, + "workflowExecutionRetentionPeriod": "604800s", + "badBinaries": { + "binaries": {} + }, + "historyArchivalStatus": "ARCHIVAL_STATUS_DISABLED", + "visibilityArchivalStatus": "ARCHIVAL_STATUS_DISABLED", + "activeClusterName": "cluster0", + "clusters": [ + { + "clusterName": "cluster0" + } + ], + "failoverVersion": "-24", + "isolationGroups": {} + }, + { + "id": "59c51119-1b41-4a28-986d-d6e377716f82", + "name": "cadence-shadower", + "status": "DOMAIN_STATUS_REGISTERED", + "description": "Cadence internal system domain", + "data": {}, + "workflowExecutionRetentionPeriod": "604800s", + "badBinaries": { + "binaries": {} + }, + "historyArchivalStatus": "ARCHIVAL_STATUS_DISABLED", + "visibilityArchivalStatus": "ARCHIVAL_STATUS_DISABLED", + "activeClusterName": "cluster0", + "clusters": [ + { + "clusterName": "cluster0" + } + ], + "failoverVersion": "-24", + "isolationGroups": {} + }, + { + "id": "32049b68-7872-4094-8e63-d0dd59896a83", + "name": "cadence-system", + "status": "DOMAIN_STATUS_REGISTERED", + "description": "cadence system workflow domain", + "ownerEmail": "cadence-dev-group@uber.com", + "data": {}, + "workflowExecutionRetentionPeriod": "259200s", + "badBinaries": { + "binaries": {} + }, + "historyArchivalStatus": "ARCHIVAL_STATUS_DISABLED", + "visibilityArchivalStatus": "ARCHIVAL_STATUS_DISABLED", + "activeClusterName": "cluster0", + "clusters": [ + { + "clusterName": "cluster0" + } + ], + "failoverVersion": "-24", + "isolationGroups": {} + }, + { + "id": "d7aff879-f524-43a8-b340-5a223a69d75b", + "name": "sample-domain", + "status": "DOMAIN_STATUS_REGISTERED", + "data": {}, + "workflowExecutionRetentionPeriod": "259200s", + "badBinaries": { + "binaries": {} + }, + "historyArchivalStatus": "ARCHIVAL_STATUS_ENABLED", + "historyArchivalUri": "file:///tmp/cadence_archival/development", + "visibilityArchivalStatus": "ARCHIVAL_STATUS_ENABLED", + "visibilityArchivalUri": "file:///tmp/cadence_vis_archival/development", + "activeClusterName": "cluster0", + "clusters": [ + { + "clusterName": "cluster0" + } + ], + "isGlobalDomain": true, + "isolationGroups": {} + } + ], + "nextPageToken": "" +} +``` + +
+ +------------------------------------------------------------------------------------------ + +### Meta API + +------------------------------------------------------------------------------------------ + +
+POST uber.cadence.api.v1.MetaAPI::Health + +#### Health check + +##### Headers + +| name | example | +|----------------|-------------------------------------| +| context-ttl-ms | 2000 | +| rpc-caller | curl-client | +| rpc-service | cadence-frontend | +| rpc-encoding | json | +| rpc-procedure | uber.cadence.api.v1.MetaAPI::Health | + +##### Example payload + +None + +##### Example cURL + +```bash +curl -X POST http://0.0.0.0:8800 \ + -H 'context-ttl-ms: 2000' \ + -H 'rpc-caller: curl-client' \ + -H 'rpc-service: cadence-frontend' \ + -H 'rpc-encoding: json' \ + -H 'rpc-procedure: uber.cadence.api.v1.MetaAPI::Health' +``` + +##### Example successful response + +HTTP code: 200 + +```json +{ + "ok": true, + "message": "OK" +} +``` + +
+ +------------------------------------------------------------------------------------------ + +### Visibility API + +------------------------------------------------------------------------------------------ + +
+POST uber.cadence.api.v1.VisibilityAPI::GetSearchAttributes + +#### Get search attributes + +##### Headers + +| name | example | +|----------------|--------------------------------------------------------| +| context-ttl-ms | 2000 | +| rpc-caller | curl-client | +| rpc-service | cadence-frontend | +| rpc-encoding | json | +| rpc-procedure | uber.cadence.api.v1.VisibilityAPI::GetSearchAttributes | + +##### Example payload + +None + +##### Example cURL + +```bash +curl -X POST http://0.0.0.0:8800 \ + -H 'context-ttl-ms: 2000' \ + -H 'rpc-caller: curl-client' \ + -H 'rpc-service: cadence-frontend' \ + -H 'rpc-encoding: json' \ + -H 'rpc-procedure: uber.cadence.api.v1.VisibilityAPI::GetSearchAttributes' +``` + +##### Example successful response + +HTTP code: 200 + +```json +{ + "keys": { + "BinaryChecksums": "INDEXED_VALUE_TYPE_KEYWORD", + "CadenceChangeVersion": "INDEXED_VALUE_TYPE_KEYWORD", + "CloseStatus": "INDEXED_VALUE_TYPE_INT", + "CloseTime": "INDEXED_VALUE_TYPE_INT", + "CustomBoolField": "INDEXED_VALUE_TYPE_BOOL", + "CustomDatetimeField": "INDEXED_VALUE_TYPE_DATETIME", + "CustomDomain": "INDEXED_VALUE_TYPE_KEYWORD", + "CustomDoubleField": "INDEXED_VALUE_TYPE_DOUBLE", + "CustomIntField": "INDEXED_VALUE_TYPE_INT", + "CustomKeywordField": "INDEXED_VALUE_TYPE_KEYWORD", + "CustomStringField": "INDEXED_VALUE_TYPE_STRING", + "DomainID": "INDEXED_VALUE_TYPE_KEYWORD", + "ExecutionTime": "INDEXED_VALUE_TYPE_INT", + "HistoryLength": "INDEXED_VALUE_TYPE_INT", + "IsCron": "INDEXED_VALUE_TYPE_KEYWORD", + "NewKey": "INDEXED_VALUE_TYPE_KEYWORD", + "NumClusters": "INDEXED_VALUE_TYPE_INT", + "Operator": "INDEXED_VALUE_TYPE_KEYWORD", + "Passed": "INDEXED_VALUE_TYPE_BOOL", + "RolloutID": "INDEXED_VALUE_TYPE_KEYWORD", + "RunID": "INDEXED_VALUE_TYPE_KEYWORD", + "ShardID": "INDEXED_VALUE_TYPE_INT", + "StartTime": "INDEXED_VALUE_TYPE_INT", + "TaskList": "INDEXED_VALUE_TYPE_KEYWORD", + "TestNewKey": "INDEXED_VALUE_TYPE_STRING", + "UpdateTime": "INDEXED_VALUE_TYPE_INT", + "WorkflowID": "INDEXED_VALUE_TYPE_KEYWORD", + "WorkflowType": "INDEXED_VALUE_TYPE_KEYWORD", + "addon": "INDEXED_VALUE_TYPE_KEYWORD", + "addon-type": "INDEXED_VALUE_TYPE_KEYWORD", + "environment": "INDEXED_VALUE_TYPE_KEYWORD", + "project": "INDEXED_VALUE_TYPE_KEYWORD", + "service": "INDEXED_VALUE_TYPE_KEYWORD", + "user": "INDEXED_VALUE_TYPE_KEYWORD" + } +} +``` + +
+ +------------------------------------------------------------------------------------------ + +
+POST uber.cadence.api.v1.VisibilityAPI::ListClosedWorkflowExecutions + +#### List closed workflow executions in a domain + +##### Headers + +| name | example | +|----------------|-----------------------------------------------------------------| +| context-ttl-ms | 2000 | +| rpc-caller | curl-client | +| rpc-service | cadence-frontend | +| rpc-encoding | json | +| rpc-procedure | uber.cadence.api.v1.VisibilityAPI::ListClosedWorkflowExecutions | + +##### Example payloads + +`startTimeFilter` is required while `executionFilter` and `typeFilter` are optional. + +```json +{ + "domain": "sample-domain", + "start_time_filter": { + "earliest_time": "2023-01-01T00:00:00Z", + "latest_time": "2023-12-31T00:00:00Z" + } +} +``` + +```json +{ + "domain": "sample-domain", + "start_time_filter": { + "earliest_time": "2023-01-01T00:00:00Z", + "latest_time": "2023-12-31T00:00:00Z" + }, + "execution_filter": { + "workflow_id": "sample-workflow-id", + "run_id": "71c3d47b-454a-4315-97c7-15355140094b" + } +} +``` + +```json +{ + "domain": "sample-domain", + "start_time_filter": { + "earliest_time": "2023-01-01T00:00:00Z", + "latest_time": "2023-12-31T00:00:00Z" + }, + "type_filter": { + "name": "sample-workflow-type" + } +} +``` + +##### Example cURL + +```bash +curl -X POST http://0.0.0.0:8800 \ + -H 'context-ttl-ms: 2000' \ + -H 'rpc-caller: curl-client' \ + -H 'rpc-service: cadence-frontend' \ + -H 'rpc-encoding: json' \ + -H 'rpc-procedure: uber.cadence.api.v1.VisibilityAPI::ListClosedWorkflowExecutions' \ + -d \ + '{ + "domain": "sample-domain", + "start_time_filter": { + "earliest_time": "2023-01-01T00:00:00Z", + "latest_time": "2023-12-31T00:00:00Z" + } + }' +``` + +##### Example successful response + +HTTP code: 200 + +```json +{ + "executions": [ + { + "workflowExecution": { + "workflowId": "sample-workflow-id", + "runId": "71c3d47b-454a-4315-97c7-15355140094b" + }, + "type": { + "name": "sample-workflow-type" + }, + "startTime": "2023-09-08T06:31:18.778Z", + "closeTime": "2023-09-08T06:32:18.782Z", + "closeStatus": "WORKFLOW_EXECUTION_CLOSE_STATUS_TIMED_OUT", + "historyLength": "5", + "executionTime": "2023-09-08T06:31:18.778Z", + "memo": {}, + "searchAttributes": { + "indexedFields": {} + }, + "taskList": "sample-task-list" + } + ], + "nextPageToken": "" +} +``` + +
+ +------------------------------------------------------------------------------------------ + +
+POST uber.cadence.api.v1.VisibilityAPI::ListOpenWorkflowExecutions + +#### List open workflow executions in a domain + +##### Headers + +| name | example | +|----------------|---------------------------------------------------------------| +| context-ttl-ms | 2000 | +| rpc-caller | curl-client | +| rpc-service | cadence-frontend | +| rpc-encoding | json | +| rpc-procedure | uber.cadence.api.v1.VisibilityAPI::ListOpenWorkflowExecutions | + +##### Example payloads + +`startTimeFilter` is required while `executionFilter` and `typeFilter` are optional. + +```json +{ + "domain": "sample-domain", + "start_time_filter": { + "earliest_time": "2023-01-01T00:00:00Z", + "latest_time": "2023-12-31T00:00:00Z" + } +} +``` + +```json +{ + "domain": "sample-domain", + "start_time_filter": { + "earliest_time": "2023-01-01T00:00:00Z", + "latest_time": "2023-12-31T00:00:00Z" + }, + "execution_filter": { + "workflow_id": "sample-workflow-id", + "run_id": "71c3d47b-454a-4315-97c7-15355140094b" + } +} +``` + +```json +{ + "domain": "sample-domain", + "start_time_filter": { + "earliest_time": "2023-01-01T00:00:00Z", + "latest_time": "2023-12-31T00:00:00Z" + }, + "type_filter": { + "name": "sample-workflow-type" + } +} +``` + +##### Example cURL + +```bash +curl -X POST http://0.0.0.0:8800 \ + -H 'context-ttl-ms: 2000' \ + -H 'rpc-caller: curl-client' \ + -H 'rpc-service: cadence-frontend' \ + -H 'rpc-encoding: json' \ + -H 'rpc-procedure: uber.cadence.api.v1.VisibilityAPI::ListOpenWorkflowExecutions' \ + -d \ + '{ + "domain": "sample-domain", + "start_time_filter": { + "earliest_time": "2023-01-01T00:00:00Z", + "latest_time": "2023-12-31T00:00:00Z" + } + }' +``` + +##### Example successful response + +HTTP code: 200 + +```json +{ + "executions": [ + { + "workflowExecution": { + "workflowId": "sample-workflow-id", + "runId": "5dbabeeb-82a2-41ed-bf55-dc732a4d46ce" + }, + "type": { + "name": "sample-workflow-type" + }, + "startTime": "2023-09-12T02:17:46.596Z", + "executionTime": "2023-09-12T02:17:46.596Z", + "memo": {}, + "searchAttributes": { + "indexedFields": {} + }, + "taskList": "sample-task-list" + } + ], + "nextPageToken": "" +} +``` + +
+ +------------------------------------------------------------------------------------------ + +### Workflow API + +------------------------------------------------------------------------------------------ + +
+POST uber.cadence.api.v1.WorkflowAPI::DescribeTaskList + +#### Describe pollers info of tasklist + +##### Headers + +| name | example | +|----------------|---------------------------------------------------| +| context-ttl-ms | 2000 | +| rpc-caller | curl-client | +| rpc-service | cadence-frontend | +| rpc-encoding | json | +| rpc-procedure | uber.cadence.api.v1.WorkflowAPI::DescribeTaskList | + +##### Example payload + +```json +{ + "domain": "sample-domain", + "task_list": { + "name": "sample-task-list", + "kind": 1 + }, + "task_list_type": 1, + "include_task_list_status": true +} +``` + +`task_list` kind is optional. + +Task list kinds + +| type | value | +|--------------------|-------| +| TaskListKindNormal | 1 | +| TaskListKindSticky | 2 | + +Task list types + +| type | value | +|----------------------|-------| +| TaskListTypeDecision | 1 | +| TaskListTypeActivity | 2 | + +##### Example cURL + +```bash +curl -X POST http://0.0.0.0:8800 \ + -H 'context-ttl-ms: 2000' \ + -H 'rpc-caller: curl-client' \ + -H 'rpc-service: cadence-frontend' \ + -H 'rpc-encoding: json' \ + -H 'rpc-procedure: uber.cadence.api.v1.WorkflowAPI::DescribeTaskList' \ + -d \ + '{ + "domain": "sample-domain", + "task_list": { + "name": "sample-task-list", + "kind": 1 + }, + "task_list_type": 1, + "include_task_list_status": true + }' +``` + +##### Example successful response + +HTTP code: 200 + +```json +{ + "taskListStatus": { + "readLevel": "200000", + "ratePerSecond": 100000, + "taskIdBlock": { + "startId": "200001", + "endId": "300000" + } + } +} +``` + +
+ +------------------------------------------------------------------------------------------ + +
+POST uber.cadence.api.v1.WorkflowAPI::DescribeWorkflowExecution + +#### Describe a workflow execution + +##### Headers + +| name | example | +|----------------|------------------------------------------------------------| +| context-ttl-ms | 2000 | +| rpc-caller | curl-client | +| rpc-service | cadence-frontend | +| rpc-encoding | json | +| rpc-procedure | uber.cadence.api.v1.WorkflowAPI::DescribeWorkflowExecution | + +##### Example payload + +```json +{ + "domain": "sample-domain", + "workflow_execution": { + "workflow_id": "sample-workflow-id", + "run_id": "5dbabeeb-82a2-41ed-bf55-dc732a4d46ce" + } +} +``` + +`run_id` is optional and allows to describe a specific run. + +##### Example cURL + +```bash +curl -X POST http://0.0.0.0:8800 \ + -H 'context-ttl-ms: 2000' \ + -H 'rpc-caller: curl-client' \ + -H 'rpc-service: cadence-frontend' \ + -H 'rpc-encoding: json' \ + -H 'rpc-procedure: uber.cadence.api.v1.WorkflowAPI::DescribeWorkflowExecution' \ + -d \ + '{ + "domain": "sample-domain", + "workflow_execution": { + "workflow_id": "sample-workflow-id", + "run_id": "5dbabeeb-82a2-41ed-bf55-dc732a4d46ce" + } + }' +``` + +##### Example successful response + +HTTP code: 200 + +```json +{ + "executionConfiguration": { + "taskList": { + "name": "sample-task-list" + }, + "executionStartToCloseTimeout": "11s", + "taskStartToCloseTimeout": "10s" + }, + "workflowExecutionInfo": { + "workflowExecution": { + "workflowId": "sample-workflow-id", + "runId": "5dbabeeb-82a2-41ed-bf55-dc732a4d46ce" + }, + "type": { + "name": "sample-workflow-type" + }, + "startTime": "2023-09-12T02:17:46.596Z", + "closeTime": "2023-09-12T02:17:57.602707Z", + "closeStatus": "WORKFLOW_EXECUTION_CLOSE_STATUS_TIMED_OUT", + "historyLength": "3", + "executionTime": "2023-09-12T02:17:46.596Z", + "memo": {}, + "searchAttributes": {}, + "autoResetPoints": {} + }, + "pendingDecision": { + "state": "PENDING_DECISION_STATE_SCHEDULED", + "scheduledTime": "2023-09-12T02:17:46.596982Z", + "originalScheduledTime": "2023-09-12T02:17:46.596982Z" + } +} +``` + +
+ +------------------------------------------------------------------------------------------ + +
+POST uber.cadence.api.v1.WorkflowAPI::GetClusterInfo + +#### Get supported client versions for the cluster + +##### Headers + +| name | example | +|----------------|-------------------------------------------------| +| context-ttl-ms | 2000 | +| rpc-caller | curl-client | +| rpc-service | cadence-frontend | +| rpc-encoding | json | +| rpc-procedure | uber.cadence.api.v1.WorkflowAPI::GetClusterInfo | + +##### Example payload + +None + +##### Example cURL + +```bash +curl -X POST http://0.0.0.0:8800 \ + -H 'context-ttl-ms: 2000' \ + -H 'rpc-caller: curl-client' \ + -H 'rpc-service: cadence-frontend' \ + -H 'rpc-encoding: json' \ + -H 'rpc-procedure: uber.cadence.api.v1.WorkflowAPI::GetClusterInfo' +``` + +##### Example successful response + +HTTP code: 200 + +```json +{ + "supportedClientVersions": { + "goSdk": "1.7.0", + "javaSdk": "1.5.0" + } +} +``` + +
+ +------------------------------------------------------------------------------------------ + +
+POST uber.cadence.api.v1.WorkflowAPI::GetTaskListsByDomain + +#### Get the task lists in a domain + +##### Headers + +| name | example | +|----------------|-------------------------------------------------------| +| context-ttl-ms | 2000 | +| rpc-caller | curl-client | +| rpc-service | cadence-frontend | +| rpc-encoding | json | +| rpc-procedure | uber.cadence.api.v1.WorkflowAPI::GetTaskListsByDomain | + +##### Example payload + +```json +{ + "domain": "sample-domain" +} +``` + +##### Example cURL + +```bash +curl -X POST http://0.0.0.0:8800 \ + -H 'context-ttl-ms: 2000' \ + -H 'rpc-caller: curl-client' \ + -H 'rpc-service: cadence-frontend' \ + -H 'rpc-encoding: json' \ + -H 'rpc-procedure: uber.cadence.api.v1.WorkflowAPI::GetTaskListsByDomain' \ + -d \ + '{ + "domain": "sample-domain" + }' +``` + +##### Example successful response + +HTTP code: 200 + +```json +{ + "decisionTaskListMap": {}, + "activityTaskListMap": {} +} +``` + +
+ +------------------------------------------------------------------------------------------ + +
+POST uber.cadence.api.v1.WorkflowAPI::GetWorkflowExecutionHistory + +#### Get the history of workflow executions + +##### Headers + +| name | example | +|----------------|--------------------------------------------------------------| +| context-ttl-ms | 2000 | +| rpc-caller | curl-client | +| rpc-service | cadence-frontend | +| rpc-encoding | json | +| rpc-procedure | uber.cadence.api.v1.WorkflowAPI::GetWorkflowExecutionHistory | + +##### Example payload + +```json +{ + "domain": "sample-domain", + "workflow_execution": { + "workflow_id": "sample-workflow-id" + } +} +``` + +##### Example cURL + +```bash +curl -X POST http://0.0.0.0:8800 \ + -H 'context-ttl-ms: 2000' \ + -H 'rpc-caller: curl-client' \ + -H 'rpc-service: cadence-frontend' \ + -H 'rpc-encoding: json' \ + -H 'rpc-procedure: uber.cadence.api.v1.WorkflowAPI::GetWorkflowExecutionHistory' \ + -d \ + '{ + "domain": "sample-domain", + "workflow_execution": { + "workflow_id": "sample-workflow-id" + } + }' +``` + +##### Example successful response + +HTTP code: 200 + +```json +{ + "history": { + "events": [ + { + "eventId": "1", + "eventTime": "2023-09-12T05:34:46.107550Z", + "taskId": "9437321", + "workflowExecutionStartedEventAttributes": { + "workflowType": { + "name": "sample-workflow-type" + }, + "taskList": { + "name": "sample-task-list" + }, + "input": { + "data": "IkN1cmwhIg==" + }, + "executionStartToCloseTimeout": "61s", + "taskStartToCloseTimeout": "60s", + "originalExecutionRunId": "fd7c2283-79dd-458c-8306-e2d1d8217613", + "identity": "client-name-visible-in-history", + "firstExecutionRunId": "fd7c2283-79dd-458c-8306-e2d1d8217613", + "firstDecisionTaskBackoff": "0s" + } + }, + { + "eventId": "2", + "eventTime": "2023-09-12T05:34:46.107565Z", + "taskId": "9437322", + "decisionTaskScheduledEventAttributes": { + "taskList": { + "name": "sample-task-list" + }, + "startToCloseTimeout": "60s" + } + }, + { + "eventId": "3", + "eventTime": "2023-09-12T05:34:59.184511Z", + "taskId": "9437330", + "workflowExecutionCancelRequestedEventAttributes": { + "cause": "dummy", + "identity": "client-name-visible-in-history" + } + }, + { + "eventId": "4", + "eventTime": "2023-09-12T05:35:47.112156Z", + "taskId": "9437332", + "workflowExecutionTimedOutEventAttributes": { + "timeoutType": "TIMEOUT_TYPE_START_TO_CLOSE" + } + } + ] + } +} +``` + +
+ +------------------------------------------------------------------------------------------ + +
+POST uber.cadence.api.v1.WorkflowAPI::ListTaskListPartitions + +#### List all the task list partitions and the hostname for partitions + +##### Headers + +| name | example | +|----------------|---------------------------------------------------------| +| context-ttl-ms | 2000 | +| rpc-caller | curl-client | +| rpc-service | cadence-frontend | +| rpc-encoding | json | +| rpc-procedure | uber.cadence.api.v1.WorkflowAPI::ListTaskListPartitions | + +##### Example payload + +```json +{ + "domain": "sample-domain", + "task_list": { + "name": "sample-task-list" + } +} +``` + +##### Example cURL + +```bash +curl -X POST http://0.0.0.0:8800 \ + -H 'context-ttl-ms: 2000' \ + -H 'rpc-caller: curl-client' \ + -H 'rpc-service: cadence-frontend' \ + -H 'rpc-encoding: json' \ + -H 'rpc-procedure: uber.cadence.api.v1.WorkflowAPI::ListTaskListPartitions' \ + -d \ + '{ + "domain": "sample-domain", + "task_list": { + "name": "sample-task-list" + } + }' +``` + +##### Example successful response + +HTTP code: 200 + +```json +{ + "activityTaskListPartitions": [ + { + "key": "sample-task-list", + "ownerHostName": "127.0.0.1:7935" + } + ], + "decisionTaskListPartitions": [ + { + "key": "sample-task-list", + "ownerHostName": "127.0.0.1:7935" + } + ] +} +``` + +
+ +------------------------------------------------------------------------------------------ + +
+POST uber.cadence.api.v1.WorkflowAPI::RefreshWorkflowTasks + +#### Refresh all the tasks of a workflow + +##### Headers + +| name | example | +|----------------|-------------------------------------------------------| +| context-ttl-ms | 2000 | +| rpc-caller | curl-client | +| rpc-service | cadence-frontend | +| rpc-encoding | json | +| rpc-procedure | uber.cadence.api.v1.WorkflowAPI::RefreshWorkflowTasks | + +##### Example payload + +```json +{ + "domain": "sample-domain", + "workflow_execution": { + "workflow_id": "sample-workflow-id", + "run_id": "b7973fb8-2229-4fe7-ad70-c919c1ae8774" + } +} +``` + +##### Example cURL + +```bash +curl -X POST http://0.0.0.0:8800 \ + -H 'context-ttl-ms: 2000' \ + -H 'rpc-caller: curl-client' \ + -H 'rpc-service: cadence-frontend' \ + -H 'rpc-encoding: json' \ + -H 'rpc-procedure: uber.cadence.api.v1.WorkflowAPI::RefreshWorkflowTasks' \ + -d \ + '{ + "domain": "sample-domain", + "workflow_execution": { + "workflow_id": "sample-workflow-id", + "run_id": "b7973fb8-2229-4fe7-ad70-c919c1ae8774" + } + }' +``` + +##### Example successful response + +HTTP code: 200 + +```json +{} +``` + +
+ +------------------------------------------------------------------------------------------ + +
+POST uber.cadence.api.v1.WorkflowAPI::RequestCancelWorkflowExecution + +#### Cancel a workflow execution + +##### Headers + +| name | example | +|----------------|-----------------------------------------------------------------| +| context-ttl-ms | 2000 | +| rpc-caller | curl-client | +| rpc-service | cadence-frontend | +| rpc-encoding | json | +| rpc-procedure | uber.cadence.api.v1.WorkflowAPI::RequestCancelWorkflowExecution | + +##### Example payload + +```json +{ + "domain": "sample-domain", + "workflow_execution": { + "workflow_id": "sample-workflow-id", + "run_id": "b7973fb8-2229-4fe7-ad70-c919c1ae8774" + }, + "request_id": "8049B932-6C2F-415A-9BB2-241DCF4CFC9C", + "cause": "dummy", + "identity": "client-name-visible-in-history", + "first_execution_run_id": "b7973fb8-2229-4fe7-ad70-c919c1ae8774" +} +``` + +##### Example cURL + +```bash +curl -X POST http://0.0.0.0:8800 \ + -H 'context-ttl-ms: 2000' \ + -H 'rpc-caller: curl-client' \ + -H 'rpc-service: cadence-frontend' \ + -H 'rpc-encoding: json' \ + -H 'rpc-procedure: uber.cadence.api.v1.WorkflowAPI::RequestCancelWorkflowExecution' \ + -d \ + '{ + "domain": "sample-domain", + "workflow_execution": { + "workflow_id": "sample-workflow-id", + "run_id": "fd7c2283-79dd-458c-8306-e2d1d8217613" + }, + "request_id": "8049B932-6C2F-415A-9BB2-241DCF4CFC9C", + "cause": "dummy", + "identity": "client-name-visible-in-history", + "first_execution_run_id": "fd7c2283-79dd-458c-8306-e2d1d8217613" + }' +``` + +##### Example successful response + +HTTP code: 200 + +```json +{} +``` + +
+ +------------------------------------------------------------------------------------------ + +
+POST uber.cadence.api.v1.WorkflowAPI::RestartWorkflowExecution + +#### Restart a previous workflow execution + +##### Headers + +| name | example | +|----------------|-----------------------------------------------------------| +| context-ttl-ms | 2000 | +| rpc-caller | curl-client | +| rpc-service | cadence-frontend | +| rpc-encoding | json | +| rpc-procedure | uber.cadence.api.v1.WorkflowAPI::RestartWorkflowExecution | + +##### Example payload + +```json +{ + "domain": "sample-domain", + "workflow_execution": { + "workflow_id": "sample-workflow-id", + "run_id": "0f95ad5b-03bc-4c6b-8cf0-1f3ea08eb86a" + }, + "identity": "client-name-visible-in-history", + "reason": "dummy" +} +``` + +##### Example cURL + +```bash +curl -X POST http://0.0.0.0:8800 \ + -H 'context-ttl-ms: 2000' \ + -H 'rpc-caller: curl-client' \ + -H 'rpc-service: cadence-frontend' \ + -H 'rpc-encoding: json' \ + -H 'rpc-procedure: uber.cadence.api.v1.WorkflowAPI::RestartWorkflowExecution' \ + -d \ + '{ + "domain": "sample-domain", + "workflow_execution": { + "workflow_id": "sample-workflow-id", + "run_id": "0f95ad5b-03bc-4c6b-8cf0-1f3ea08eb86a" + }, + "identity": "client-name-visible-in-history", + "reason": "dummy" + }' +``` + +##### Example successful response + +HTTP code: 200 + +```json +{ + "runId": "82914458-3221-42b4-ae54-2e66dff864f7" +} +``` + +
+ +------------------------------------------------------------------------------------------ + +
+POST uber.cadence.api.v1.WorkflowAPI::SignalWithStartWorkflowExecution + +#### Signal the current open workflow if exists, or attempt to start a new run based on IDResuePolicy and signals it + +##### Headers + +| name | example | +|----------------|-------------------------------------------------------------------| +| context-ttl-ms | 2000 | +| rpc-caller | curl-client | +| rpc-service | cadence-frontend | +| rpc-encoding | json | +| rpc-procedure | uber.cadence.api.v1.WorkflowAPI::SignalWithStartWorkflowExecution | + +##### Example payload + +```json +{ + "start_request": { + "domain": "sample-domain", + "workflow_id": "sample-workflow-id", + "execution_start_to_close_timeout": "61s", + "task_start_to_close_timeout": "60s", + "workflow_type": { + "name": "sample-workflow-type" + }, + "task_list": { + "name": "sample-task-list" + }, + "identity": "client-name-visible-in-history", + "request_id": "8049B932-6C2F-415A-9BB2-241DCF4CFC9C", + "input": { + "data": "IkN1cmwhIg==" + } + }, + "signal_name": "channelA", + "signal_input": { + "data": "MTA=" + } +} +``` + +##### Example cURL + +```bash +curl -X POST http://0.0.0.0:8800 \ + -H 'context-ttl-ms: 2000' \ + -H 'rpc-caller: curl-client' \ + -H 'rpc-service: cadence-frontend' \ + -H 'rpc-encoding: json' \ + -H 'rpc-procedure: uber.cadence.api.v1.WorkflowAPI::SignalWithStartWorkflowExecution' \ + -d \ + '{ + "start_request": { + "domain": "sample-domain", + "workflow_id": "sample-workflow-id", + "execution_start_to_close_timeout": "61s", + "task_start_to_close_timeout": "60s", + "workflow_type": { + "name": "sample-workflow-type" + }, + "task_list": { + "name": "sample-task-list" + }, + "identity": "client-name-visible-in-history", + "request_id": "8049B932-6C2F-415A-9BB2-241DCF4CFC9C", + "input": { + "data": "IkN1cmwhIg==" + } + }, + "signal_name": "channelA", + "signal_input": { + "data": "MTA=" + } + }' +``` + +##### Example successful response + +HTTP code: 200 + +```json +{ + "runId": "cc09d5dd-b2fa-46d8-b426-54c96b12d18f" +} +``` + +
+ +------------------------------------------------------------------------------------------ + +
+POST uber.cadence.api.v1.WorkflowAPI::SignalWorkflowExecution + +#### Signal a workflow execution + +##### Headers + +| name | example | +|----------------|----------------------------------------------------------| +| context-ttl-ms | 2000 | +| rpc-caller | curl-client | +| rpc-service | cadence-frontend | +| rpc-encoding | json | +| rpc-procedure | uber.cadence.api.v1.WorkflowAPI::SignalWorkflowExecution | + +##### Example payload + +```json +{ + "domain": "sample-domain", + "workflow_execution": { + "workflow_id": "sample-workflow-id", + "run_id": "cc09d5dd-b2fa-46d8-b426-54c96b12d18f" + }, + "signal_name": "channelA", + "signal_input": { + "data": "MTA=" + } +} +``` + +`run_id` is optional and allows to signal a specific run. + +##### Example cURL + +```bash +curl -X POST http://0.0.0.0:8800 \ + -H 'context-ttl-ms: 2000' \ + -H 'rpc-caller: curl-client' \ + -H 'rpc-service: cadence-frontend' \ + -H 'rpc-encoding: json' \ + -H 'rpc-procedure: uber.cadence.api.v1.WorkflowAPI::SignalWorkflowExecution' \ + -d \ + '{ + "domain": "sample-domain", + "workflow_execution": { + "workflow_id": "sample-workflow-id" + }, + "signal_name": "channelA", + "signal_input": { + "data": "MTA=" + } + }' +``` + +##### Example successful response + +HTTP code: 200 + +```json +{} +``` + +
+ +------------------------------------------------------------------------------------------ + +
+POST uber.cadence.api.v1.WorkflowAPI::StartWorkflowExecution + +#### Start a new workflow execution + +##### Headers + +| name | example | +|----------------|---------------------------------------------------------| +| context-ttl-ms | 2000 | +| rpc-caller | curl-client | +| rpc-service | cadence-frontend | +| rpc-encoding | json | +| rpc-procedure | uber.cadence.api.v1.WorkflowAPI::StartWorkflowExecution | + +##### Example payload + +```json +{ + "domain": "sample-domain", + "workflow_id": "sample-workflow-id", + "execution_start_to_close_timeout": "61s", + "task_start_to_close_timeout": "60s", + "workflow_type": { + "name": "sample-workflow-type" + }, + "task_list": { + "name": "sample-task-list" + }, + "identity": "client-name-visible-in-history", + "request_id": "8049B932-6C2F-415A-9BB2-241DCF4CFC9C", + "input": { + "data": "IkN1cmwhIg==" + } +} +``` + +##### Example cURL + +```bash +curl -X POST http://0.0.0.0:8800 \ + -H 'context-ttl-ms: 2000' \ + -H 'rpc-caller: curl-client' \ + -H 'rpc-service: cadence-frontend' \ + -H 'rpc-encoding: json' \ + -H 'rpc-procedure: uber.cadence.api.v1.WorkflowAPI::StartWorkflowExecution' \ + -d \ + '{ + "domain": "sample-domain", + "workflow_id": "sample-workflow-id", + "execution_start_to_close_timeout": "61s", + "task_start_to_close_timeout": "60s", + "workflow_type": { + "name": "sample-workflow-type" + }, + "task_list": { + "name": "sample-task-list" + }, + "identity": "client-name-visible-in-history", + "request_id": "8049B932-6C2F-415A-9BB2-241DCF4CFC9C", + "input": { + "data": "IkN1cmwhIg==" + } + }' +``` + +##### Example successful response + +HTTP code: 200 + +```json +{ + "runId": "cc09d5dd-b2fa-46d8-b426-54c96b12d18f" +} +``` + +
+ +------------------------------------------------------------------------------------------ + +
+POST uber.cadence.api.v1.WorkflowAPI::TerminateWorkflowExecution + +#### Terminate a new workflow execution + +##### Headers + +| name | example | +|----------------|-------------------------------------------------------------| +| context-ttl-ms | 2000 | +| rpc-caller | curl-client | +| rpc-service | cadence-frontend | +| rpc-encoding | json | +| rpc-procedure | uber.cadence.api.v1.WorkflowAPI::TerminateWorkflowExecution | + +##### Example payloads + +```json +{ + "domain": "sample-domain", + "workflow_execution": { + "workflow_id": "sample-workflow-id" + } +} +``` + +```json +{ + "domain": "sample-domain", + "workflow_execution": { + "workflow_id": "sample-workflow-id", + "run_id": "0f95ad5b-03bc-4c6b-8cf0-1f3ea08eb86a" + }, + "reason": "dummy", + "identity": "client-name-visible-in-history", + "first_execution_run_id": "0f95ad5b-03bc-4c6b-8cf0-1f3ea08eb86a" +} +``` + +##### Example cURL + +```bash +curl -X POST http://0.0.0.0:8800 \ + -H 'context-ttl-ms: 2000' \ + -H 'rpc-caller: curl-client' \ + -H 'rpc-service: cadence-frontend' \ + -H 'rpc-encoding: json' \ + -H 'rpc-procedure: uber.cadence.api.v1.WorkflowAPI::TerminateWorkflowExecution' \ + -d \ + '{ + "domain": "sample-domain", + "workflow_execution": { + "workflow_id": "sample-workflow-id" + } + }' +``` + +##### Example successful response + +HTTP code: 200 + +```json +{} +``` + +
+ +------------------------------------------------------------------------------------------ diff --git a/src/docs/03-concepts/index.md b/src/docs/03-concepts/index.md index 17ccd72e3..4d1497619 100644 --- a/src/docs/03-concepts/index.md +++ b/src/docs/03-concepts/index.md @@ -11,3 +11,5 @@ Cadence is a new developer friendly way to develop distributed applications. It borrows the core terminology from the workflow-automation space. So its concepts include [workflows](01-workflows/) and [activities](02-activities/). :workflow:Workflows: can react to [events](03-events/) and return internal state through [queries](04-queries/). The [deployment topology](05-topology/) explains how all these concepts are mapped to deployable software components. + +The [HTTP API reference](10-http-api/) describes how to use HTTP API to interact with Cadence server. From 34faea4a8a026ae76fa60597f390bbe6d726ffbd Mon Sep 17 00:00:00 2001 From: sharanf Date: Tue, 28 Nov 2023 23:37:56 +0100 Subject: [PATCH 4/6] Create Community Spotlight Blog Update for November 2023 (#169) --- ...ommunity-spotlight-update-november-2023.md | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 src/blog/_posts/2023-11-30-community-spotlight-update-november-2023.md diff --git a/src/blog/_posts/2023-11-30-community-spotlight-update-november-2023.md b/src/blog/_posts/2023-11-30-community-spotlight-update-november-2023.md new file mode 100644 index 000000000..899d41ef6 --- /dev/null +++ b/src/blog/_posts/2023-11-30-community-spotlight-update-november-2023.md @@ -0,0 +1,75 @@ +--- +title: Cadence Community Spotlight Update - November 2023 + +date: 2023-11-30 +author: Sharan Foga +authorlink: https://www.linkedin.com/in/sfoga/ +--- +Welcome to the latest of our regular monthly Community Spotlight updates that gives you news from in and around the Cadence community! + +It's been a couple of months since our last update so we have a lot of updates to share with you. + +Please see below for a roundup of the highlights: + +## Proposal for Cadence Native Authentication ## + +Community member [Mantas Sidlauskas](https://lt.linkedin.com/in/mantassidlauskas) has drafted a proposal around Cadence native authentication and is asking for community feedback. If you are interested in reviewing the current proposal and providing comments or feedback then please find the proposal details at the link below: + +- [Cadence Native Authentication Proposal](https://docs.google.com/document/d/13GxRBZfQkLyhDCrpFaZmRcw7DJJG-zdy0_mPXy3CcWw/edit#heading=h.c8u99ansg7ma) + + This is a great example of how we can focus on collaborating together to find a collective solution. A big thank you to Mantas for initiating this work and we hope to see the results of the community input soon! + +## iWF Deep Dive and More! ## + +During the last few months community member [Quanzheng Long](https://www.linkedin.com/in/prclqz/) has continued to share his thoughts about [iWF](https://github.com/indeedeng/iwf), a layer implemented on top of Cadence. Since our last update iWF now has a[Python SDK](https://github.com/indeedeng/iwf-python-sdk). Long has been busy writing articles to share iWF tips and tricks as well as some general ideas about workflows and processes. Links to Long's articles can be found below: + +- [iWF Deep Dive: workflowState+Durable Timer#1](https://medium.com/@qlong/iwf-deep-dive-workflowstate-durable-timer-1-0bb89e6d6fd4) + +- [Gotchas About SignalWithStart in Cadence/Temporal](https://medium.com/@qlong/gotchas-about-signalwithstart-in-cadence-temporal-c3783fe1cc2e) + +- ["Workflow" could be "Process" in WorkflowAsCode frameworks](https://medium.com/@qlong/workflow-could-be-process-in-workflowascode-frameworks-63dcb632c248) + +## New Go Samples for Cadence ## + +The Cadence core team is deprecating the old samples for Go and replacing them with new version 2 (V2) samples. They have received a lot of feedback from the community that people are having trouble with old samples, so are in the process of publishing a completely new set of samples for Go. + +Here are some major changes to the new samples: + +- Easy to use the read - the new samples will be completely based on CLIs instead of running a binary. (This is consistent with current Cadence use experience) +- Simple and transparent worker configuration - the old samples did not provide user a clear demonstration about the relationship between the worker and workflow themselves +- The new samples will help you bootstrap your Cadence workflow faster and easier. +- More vivid and self-explanatory - instead of the traditional "HelloWorld" type of samples, we want to make it more interesting and engaging. (Each sample will try to simulate a real-life use case to make them more understandable and fun to learn!) + +We hope the community will enjoy these changes. If you have any questions or have new an idea for a new sample then please reach out to [Chris Qin](https://www.linkedin.com/in/chrisqin0610). + +The new Go samples can be found at: +- https://github.com/uber-common/cadence-samples/tree/master/new_samples. + +Note that the old samples will be removed once the new samples are fully refreshed. + +## Cadence Retrospective ## + +We are nearly at the end of another year and yes it has gone so fast! Over this year Cadence and the community have evolved and grown. This is a good time to reflect about all the things that have happened in the project over the year and think about a possible roadmap for the future. + +If you have any feedback, or comments about the project or ideas about what features you'd like to see in the roadmap then please feel free to begin a discussion in the #community [Slack](http://t.uber.com/cadence-slack) channel. + +## Cadence in the News! + +Below are a selection of Cadence related articles, blogs and whitepapers. +Please take a look and feel free to share via your own social media channels. + +- [How to Throttle Cadence](https://www.instaclustr.com/blog/how-to-throttle-cadence/) + +- [iWF Deep Dive: workflowState+Durable Timer#1](https://medium.com/@qlong/iwf-deep-dive-workflowstate-durable-timer-1-0bb89e6d6fd4) + +- [Gotchas About SignalWithStart in Cadence/Temporal](https://medium.com/@qlong/gotchas-about-signalwithstart-in-cadence-temporal-c3783fe1cc2e) + +- ["Workflow" could be "Process" in WorkflowAsCode frameworks](https://medium.com/@qlong/workflow-could-be-process-in-workflowascode-frameworks-63dcb632c248) + +## Upcoming Events + +- [On Demand Webinar: Building With Cadence:Quantifiable Efficiency](https://netapp.zoom.us/webinar/register/WN_jT5fxSldRhuzV0NSllBd7g#/registration) + +If you have any news or topics you'd like us to include in our next update then please join our [Slack](http://t.uber.com/cadence-slack) #community channel. + +Please remember that this update is for you - so if you have any comments or feedback that could help us improve it then please share it with us in the #community [Slack](http://t.uber.com/cadence-slack) channel. From a156acbb50135ad426ac186b1d14a5dfbc619e02 Mon Sep 17 00:00:00 2001 From: Adhitya Mamallan Date: Thu, 30 Nov 2023 13:49:45 +0100 Subject: [PATCH 5/6] Fix link to server installation section in Golang example (#170) This change fixes a previously broken link in the "Golang Hello World" section which meant to redirect to the "Server Installation" section. --- src/docs/01-get-started/03-golang-hello-world.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/docs/01-get-started/03-golang-hello-world.md b/src/docs/01-get-started/03-golang-hello-world.md index 0b9039e00..4501d96d7 100644 --- a/src/docs/01-get-started/03-golang-hello-world.md +++ b/src/docs/01-get-started/03-golang-hello-world.md @@ -13,7 +13,7 @@ To successfully run this hello world sample, follow this checklist of setting up 2. Your Cadence server is running (check your background docker container process) 3. You have successfully registered a domain for this workflow -You must finish part 2 and 3 by following the [first section](./01-server-installation.md) to proceed the next steps. +You must finish part 2 and 3 by following the [first section](/docs/get-started/installation) to proceed the next steps. We are using domain called `test-domain` for this tutorial project. ## Step 1. Implement A Cadence Worker Service From e747d37ec05096fb0da21f2114d74de6b061150e Mon Sep 17 00:00:00 2001 From: Ender Demirkaya <80807029+demirkayaender@users.noreply.github.com> Date: Fri, 5 Jan 2024 12:01:27 -0800 Subject: [PATCH 6/6] Change Helm Charts Link (#172) --- src/docs/02-use-cases/02-orchestration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/docs/02-use-cases/02-orchestration.md b/src/docs/02-use-cases/02-orchestration.md index 0a6065032..90846a0e5 100644 --- a/src/docs/02-use-cases/02-orchestration.md +++ b/src/docs/02-use-cases/02-orchestration.md @@ -16,6 +16,6 @@ for unlimited exponential :activity: retries and simplifies coding of the compen Following are some real-world examples of Cadence-based service orchestration scenarios: - * [Using Cadence workflows to spin up Kubernetes by Banzai Cloud](https://banzaicloud.com/blog/introduction-to-cadence/) + * [Using Cadence workflows to spin up Kubernetes (Banzai Cloud Fork)](https://github.com/edmondop/cadence-helm-chart) * [Improving the User Experience with Uber’s Customer Obsession Ticket Routing Workflow and Orchestration Engine](https://eng.uber.com/customer-obsession-ticket-routing-workflow-and-orchestration-engine/) * [Enabling Faster Financial Partnership Integrations Using Cadence](https://doordash.engineering/2022/05/18/enabling-faster-financial-partnership-integrations-using-cadence/)