Flow Guide
Getting started
The flow library enables a strict separation application logic from the deployment concerns of topology, execution, communication, lifecycle, monitoring and error handling.
Step fns and process launchers
You provide logic to flow in the form of step-fns, which are wrapped into running processes, executing in a loop. Flow manages the life cycle of the process and handles incoming and outgoing messages by putting or taking them on channels. Step-fns do not access channels directly or hold state, making them easy to test in isolation and reuse.
Step functions have four arities:
describe: (step-fn) -> descriptor
The describe arity must return a static description of the step-fn’s :params, :ins, and :outs. Each of these is a map of name (a keyword) to docstring.
For example, the describe arity might return this description for a simple step-fn:
{:params {:size "Max size"} ;; step-fn params :ins {:in "Input channel"} ;; input channels :outs {:out "Output channel"}} ;; output channels
... continue reading