score is a generic engine that is able to execute workflows. A workflow has a logical structure that resembles a flow-chart.
Workflows contains both logical operations and actions. A workflow must be compiled using one of the available orchestration languages before use.
A compiled workflow is known as content and can take several forms such as jar files or a binary object stored in a database.
The fundamental architecture of the project consists of:
- Worker - The unit that actually executes the steps from the execution plan. Execution logic is optimized for high throughput and is horizontally scalable.
- Orchestrator - A queue-based work distribution mechanism. Highly available and horizontally scalable.
- Persistency for cluster management - Allowing a cluster of orchestrator and worker nodes. Optional for simple single-node deployments.
- Compiler - Compiles a given flow format into an execution plan that can be executed by the workers. The introduction of a new flow formatting language is achieved by hooking the right compiler. Currently, we have an AFL OOTB compiler implemented.
- Remote worker - A worker with remote communication abilities. Can be used to execute work across firewalls.
Note that score deployment has two flavours:
- Simple flavour - Consists of a single-node deployment of orchestrator and worker in the same runtime container. No external DB is required.
- Distributed flavour - A highly available and scalable deployment that requires an external DB schema and a servlet container for hosting the orchestrator node(s).