flowr includes the
flowrliblibrary for running flows (see below for details)
flowr includes a number of "runner" applications (built using the
flowrlib library) for running flows:
flowrclito run flows from the command line
flowrguia flow runner with a graphical user interface (GUI) built using Iced
flowrexa binary that only executes jobs (does not coordinate flow execution) and can be used over the network by a coordinator as a way to have more execution resources executing a flow's jobs
They handle the execution of
Functions forming a
Flow according to the defined semantics.
It is responsible for reading a flow definition in a
Manifest file, loading the required libraries
LibraryManifest files and then coordinating the execution by dispatching
Jobs to be executed
Implementations, providing them the
Inputs required to run and gathering the
and passing those
Outputs to other connected
Functions in the network of
These are the conditionally compiled features of
- submission - include the ability to receive a submission of a flow for execution
- context - makes this crate aware of the flow context functions or not
- debugger - feature to add the debugger
- metrics - feature for tracking of metrics during execution
- flowstdlib - (is an optional dependency, which act like a feature flag) to allow native versions of flowstdlib functions to be compiled and linked or not (and rely on wasm versions)
By default, the following are enabled: "debugger", "metrics", "context", "submission", "flowstdlib"
context folder implements the context functions that each runtime provides for flows to interact with the
environment (such as Standard IO and File System) as well as providing definitions of the context functions
to be used when compiling a flow.
These are all impure functions, or functions with side effects, not part of the flow itself.
Those functions are organized into the following modules, each with multiple functions:
- args - used to get arguments that flow was invoked with
- file - used to interact with the file system
- image - used to create image files
- stdio - used to interact with stdio
You can find more details about how to use it in running flows in the distributed section.