This is a set of examples for the (unofficial) Haskell SDK.
This repository provides code used for exercises and demonstrations included in the Haskell adaptation of the Temporal 101 and Temporal 102 training courses.
Important
Keep in mind that the example code used in this course was designed to support learning a specific aspect of Temporal, not to serve as a ready-to-use template for implementing a production system.
- Temporal 101
- Temporal 102
- Hands-On Exercises
- Examples for Self-Study
Most examples assume a Nix development shell and running Temporal development server; see the usage section below for details.
- hello - basic examples
- activity - define an activity and execute it from a workflow
- activity_with_boilerplate - same as above, without using Template Haskell convenience utilities
- child_workflow - execute a workflow that spawns a child workflow
- cron - execute a workflow once per minute
This cookbook depends on Nix; if you don't already have Nix installed, please follow these instructions to do so.
Warning
--accept-flake-config
should never be passed to a nix
command that
executes untrusted code; a malicious actor could use it to
execute commands as root!
Always validate the nixConfig
in a project's flake.nix
beforehand; in
this case, we're using it to provide cached Garnix CI
artifacts.
Unless otherwise specified, all examples require a running Temporal development server; drop into a Nix development shell and spawn one:
$ nix develop --accept-flake-config
$ temporal server start-dev
The development server web UI should now be available at localhost:8233
.
Separately, drop into a Nix development shell from which the examples may be compiled and executed; to run the basic activity example:
$ nix develop --accept-flake-config
$ cabal run hello:activity_with_boilerplate
Upon completion, navigate to the web UI and observe that a workflow of type
greeting
has completed: