The CPF framework helps you build a clear and transparent workflow.
It consists of three scopes: Context
, Proxy
, and Flow
.
This framework defines data flows and workflows that can be scaled.
Each component can be expressed as a function, making downstream-to-upstream communication easy.
flowchart LR
subgraph Context
C([Context])
end
subgraph Proxy
P([Proxy])
P --> PI([Proxy Input])
PO([Proxy Output]) --> P
end
subgraph Flow
POF([Proxy Output Flow])
PI -.-> FF[First Flow]
FF -.-> POF
PI -.-> SF[Second Flow]
SF -.-> POF
PI -.-> TF[Third Flow]
TF -.-> POF
end
C <--> P
PI --> POF
POF --> PO
This flowchart has three Flow components: First Flow
, Second Flow
, and Third flow
.
Context-Flow framework is simpler than the CPF framework, but this framework doesn't provide grouping functionally. The CPF framework has this functionally, we will have control over all our data.
Component
: Immutable base class.Sequential Component
: This component has one input and one output.Parallel Component
: This component has infinite inputs and infinite outputs.Flow Component
:Sequential Component
orParallel Component
. This can output to any Flow component.
Context
: This scope means any context.Proxy
: This scope can be defined with in theFlow
scope.Flow
: This scope can have infiniteFlow
components.
Context
(inContext
scope):Parallel Component
. This component has infinite inputs and infinite outputs.Proxy
(inProxy
scope):Sequential Component
. This component can connect to theContext
component with one input and one output.Proxy Input
(inProxy
scope):Parallel Component
. This component is input by theProxy component
.Proxy Output
(inProxy
scope):Sequential Component
. This component can output to theProxy
component.Proxy Output Flow
(inFlow
scope):Sequential Component
. This component can output to theProxy Output
component.
- Create a new
Flow
component fromProxy Input
component. When grouping, useProxy
component instead of it. - Repeat the previous step.
Describing every workflows is not a good approach. A good approach is to describe all workflows succinctly.
Any group works as goals, departments, or headings.
If logic can be expressed as a Parallel Component
.
For logic can be expressed as a connection to other Flow
components.
Existing frameworks can be expressed as Flow
components.
For example, Scrum framework or Pomodoro technique.