⚠️ This repository is abandoned.
This repository contains examples of workflows built with Zenaton. These examples illustrates how Zenaton orchestrates tasks that are executed on different workers.
Download this repo
go get github.com/zenaton/examples-go
and the client library
go get github.com/zenaton/zenaton-go/...
cd into example directory
cd $(go env GOPATH)/src/github.com/zenaton/examples-go
then add an .env file
cp -n .env.example .env
and populate it with your application id and api token found here.
Then, you need to install a Zenaton worker
curl https://install.zenaton.com | sh
and make it listen to your configuration:
zenaton listen --boot=boot/boot.go
Your all set!
Your workflows will be processed by your worker, so you won't see anything except the stdout and stderr, respectively zenaton.out
and zenaton.err
. Look at these files :)
This example showcases
- a sequential execution of three tasks. The second and third tasks are executed only when the previous one is processed.
- In a sequential task execution, you can get the output of a task. The result of a task can be used by the next one.
go run sequential/main.go
This example showcases
- a parallel execution of 2 tasks
- a third task that is executed only after both first two tasks were processed
go run parallel/main.go
this example showcases
- Asynchronous executions of Task A and Task B (fire and forget)
- Then sequential executions of Task C and Task D
go run asynchronous/main.go
When a task is dispatched asynchronously, the workflow continues its execution without waiting for the task completion. Consequently, a task asynchronous dispatching does not return a value from the task.
This example showcases
- how to change a workflow's behaviour based on an external event
go run event/main.go
This example showcases
- how the provided
Wait
task can be used to pause the workflow for a specified duration
go run wait/main.go
This example showcases
- how the provided
Wait
task can also be used to pause the workflow up to receiving a specific external event
go run waitevent/main.go
This example showcases
- how to recover from a faulty task
go run error/main.go
This example showcases
- how launching events or workflows directly from orchestrated tasks allows you to schedule recurring workflows
go run recursive/main.go
This example showcases
- how to update your workflow implementation, even while previous versions are still running
go run version/main.go