Cadence is a distributed, scalable, durable, and highly available fault-oblivious stateful code platform.
Cadence
This repo contains the source code of the Cadence server and other tooling including CLI, schema tools, bench and canary.
You can implement your workflows with one of our client libraries. The Go and Java libraries are officially maintained by the Cadence team, while the Python and Ruby client libraries are developed by the community.
You can also use iWF as a DSL framework on top of Cadence.
See Maxim's talk at Data@Scale Conference for an architectural overview of Cadence.
Visit cadenceworkflow.io to learn more about Cadence. Join us in Cadence Documentation project. Feel free to raise an Issue or Pull Request there.
Community
To run Cadence services locally, we highly recommend that you use Cadence service docker to run the service. You can also follow the instructions to build and run it.
Please visit our documentation site for production/cluster setup.
Run the Samples
Try out the sample recipes for Go or Java to get started.
Use Cadence CLI
Cadence CLI can be used to operate workflows, tasklist, domain and even the clusters.
You can use the following ways to install Cadence CLI:
brew install cadence-workflow
docker run --rm ubercadence/cli:<releaseVersion>
or docker run --rm ubercadence/cli:master
. Be sure to update your image when you want to try new features: docker pull ubercadence/cli:master
make cadence
to build all tools. See CONTRIBUTING for prerequisite of make command.Cadence CLI is a powerful tool. The commands are organized by tabs. E.g. workflow
->batch
->start
, or admin
->workflow
->describe
.
Please read the documentation and always try out --help
on any tab to learn & explore.
Use Cadence Web
Try out Cadence Web UI to view your workflows on Cadence. (This is already available at localhost:8088 if you run Cadence with docker compose)
Contributing
We'd love your help in making Cadence great. Please review our contribution guide.
If you'd like to propose a new feature, first join the Slack channel to start a discussion and check if there are existing design discussions. Also peruse our design docs in case a feature has been designed but not yet implemented. Once you're sure the proposal is not covered elsewhere, please follow our proposal instructions.
Other binaries in this repo Bench/stress test workflow tools
See bench documentation.
Periodical feature health check workflow tools(aka Canary)
See canary documentation.
Schema tools for SQL and Cassandra
The tools are for manual setup or upgrading database schema
The easiest way to get the schema tool is via homebrew.
brew install cadence-workflow
also includes cadence-sql-tool
and cadence-cassandra-tool
.
/usr/local/etc/cadence/schema/
.mv /usr/local/etc/cadence/schema/elasticsearch /usr/local/etc/cadence/schema/elasticsearch.old && brew upgrade cadence-workflow
. Otherwise ElasticSearch schemas may not be able to get updated.git checkout v0.21.3
to get the v0.21.3 schemas in the schema folder.License
MIT License, please see LICENSE for details.
Twice a month we will interview people behind open source businesses. We will talk about how they are building a business on top of open source projects.
We'll never share your email with anyone else.