This repository contains example code for my Cadence Intro Workshop.
- Git, Make, etc.
- Make sure you have Go installed
- Make sure Docker and docker-compose are installed.
- Checkout this repository
- Run
make up
- Wait for Cadence to start
- Check if Cadence is running with
make ps
- Start a new shell with
make shell
- Execute
cadence domain register
You can run a workflow from the shell using the following command:
cadence workflow run --tasklist workshop --execution_timeout 60 --workflow_type WORKFLOW_TYPE -i 'arg1 arg2...'
For example, running the first example looks like this:
cadence workflow run --tasklist workshop --execution_timeout 60 --workflow_type example01 -i '1 3'
As a best practice, workflows generally have a single input struct (to remain compatible with other languages). By default, Cadence uses JSON encoding, so such workflow execution looks like this:
cadence workflow run --tasklist workshop --execution_timeout 60 --workflow_type example02 -i '{"A": 1, "B": 2}'
You can shorten the command a lot by using shorthands for commands and options:
cadence wf run --tl workshop --et 60 --wt example01 -i '1 3'
Last, but not least, if you want to start a workflow without waiting for its result,
you can do so by using the start
command instead of run
:
cadence wf start --tl workshop --et 60 --wt example01 -i '1 3'
Workflows can register query handlers to expose state about themselves. You can query that state using the following command:
cadence workflow query --workflow_id 72daa600-3cac-49b0-9e86-277a47c80a87 --query_type current_number
Or using a shorter version:
cadence wf query --wid 72daa600-3cac-49b0-9e86-277a47c80a87 --qt current_number
There is a special query type called __stack_trace
that gives you the current stack trace of the workflow.
Useful if a workflow is stuck for a long time and you want to check where it stopped.
Once you are finished with the workshop, you can clean up all resources (containers) by running the following command:
make down
The MIT License (MIT). Please see License File for more information.