Seneca Flow is a plugin for Seneca
Workflow operations and data model
@seneca/flow
This open source module is sponsored and supported by Voxgig. |
---|
Install
Quick Example
More Examples
Motivation
Design
A flow is series of transitions over a directed graph of steps. Each step indicates valid transitions to other steps. A flow is defined primarily as the graph of steps.
Entities:
- Flow definition entity:
sys/flowDef
- Step definition entity:
sys/flowStepDef
Relations:
-
sys/flowStepDef *-->1 sys/flowDef
# steps of the flow
An instance of a flow specifies the current step, a list of step states, and alog of step operations.
The step operations are:
- APPLY: move to the specified step from current step (create step state if needed), and update the step data as indicated, recording change in log.
Entities:
- Flow instance entity:
sys/flow
- Step instance entity:
sys/flowStep
- Step log entity:
sys/flowStepLog
Relations:
-
sys/flow *-->1 sys/flowDef
# flow instance of a flowDef -
sys/flowStep *-->1 sys/flowStepDef
# flow step instance of a flowStepDef -
sys/flowStep *-->1 sys/flow
# flow step of flow (1 only per flowStepDef) -
sys/flow 1-->1 sys/flowStep
# current flowStep -
sys/flowStepLog *--> sys/flowDef
# flow step log entry for flowDef -
sys/flowStepLog *--> sys/flow
# flow step log entry for flow -
sys/flowStepLog *--> sys/flowStepDef
# flow step log entry for flowStepDef -
sys/flowStepLog *--> sys/flowStep
# flow step log entry for flowStep
Each entity has a set of well-defined fields for internal control, and
a set of standard fields for common use cases. Custom user fields
should be prefixed with an x
to ensure namespace safety for
updates. No standard field will start with x
.