This PR contains the first prototype (as demonstrated/discussed last Friday), with the following notable features:
Core components implemented:
API (Server): both internal and external (gRPC and JSON) API.
Event Store (using NATS streaming) : Stores events, only actual stateful component.
Projector : constructing state from events.
Controller : manages workflow invocations
Scheduler : makes decisions based on the current state of a workflow invocation.
Fission Proxy : a separate server that ensures that the workflow engine conforms to the environment/function interface of Fission.
Parser: parses workflows into workflows that can be executed (e.g. resolves function names to uids)
Initial data format for workflows, which supports declaration of tasks with dependency
A hacked together, deployable binary under ./cmd/workflow-engine/
Build and deploy (to kubernetes) scripts in ./build/
Working example of a simple (sequential) workflow. To run:
1) build & deploy fission which supports fission-workflow (currently there is a quick and dirty integration available: https://github.com/erwinvaneyk/fission/tree/fission-workflow-integration)
2) Deploy fission-nats.yaml (currently the only 'additional' dependency of Fission-workflow
2) build & deploy fission-workflow
3) run ./examples/simple/deploy.sh which deploys functions and workflows
4) invoke one of the workflows just like you would invoke a Fission function. For example, to request advice from the Fortunewhale: curl $FISSION_ROUTER/fission-function/fortunewhale
Some (outdated) documentation is available under ./Docs/
This PR contains the first prototype (as demonstrated/discussed last Friday), with the following notable features:
./cmd/workflow-engine/
./build/
./examples/simple/deploy.sh
which deploys functions and workflows 4) invoke one of the workflows just like you would invoke a Fission function. For example, to request advice from the Fortunewhale:curl $FISSION_ROUTER/fission-function/fortunewhale
./Docs/
Fyi @soamvasani