Flux is an asynchronous, scalable, optionally multi-tenant & distributed and reliable state machine based orchestrator. Flux can be used to build Workflows and Reactive apps that are stateful.
|Version 1.0-SNAPSHOT||Jun 2016||First release for user trials|
Changelog can be viewed in CHANGELOG.md file
A number of real-world stateful systems like workflows, event-driven reactive apps can be modeled as state machines. Event sources are many - user actions, messages passed between systems and data changes to business entities. Flux provides a programming model and client SDK to build event-driven reactive apps. The runtime allows to run multiple state machine instances concurrently.
Flux Visualization & Monitoring
Flux allows you to monitor real-time execution of all running state machine tasks. Default path for dashboard is http://localhost:9999/admin/dashboard
Additionally, you can also inspect individual state machine execution DAGs and audit data:
Documentation and Examples
Flux examples are under "examples" module. Each example can be run independently. Flux has very few dependencies and the simplest examples can be run in under 5 minutes. Documentation is continuously being added to the Flux wiki
For help regarding usage, or receiving important announcements, subscribe to the Flux users mailing list: http://groups.google.com/group/flux-users To get involved in the evolution of Flux, subscribe to the Flux interest mailing list: http://groups.google.com/group/flux-interest
Flux is licensed under : The Apache Software License, Version 2.0. Here is a copy of the license (http://www.apache.org/licenses/LICENSE-2.0.txt)
Building with Flux
The Flux system design is organized into multiple layers to support building, testing, deploying and operating workflows in a shared environment:
- UI - Provides for inspecting workflow execution and administration tasks on deployed instances/templates
- API/Modelling - Provides primitives for modelling State machines and reacting to state transitions, complex DAG-like workflows
- Runtime - Multiple variants from single JVM to distributed and isolated runtimes
- Integration - Support for operating the system i.e. Monitoring, Metrics and RPC mechanisms for running isolated runtimes
- Deployment - Providing mechanisms for cluster discovery, work distribution
Please go through the wiki pages to find out more about flux.