BAJL Flow Engine is a backend visual business logic controller. The main goal being to make code deployments easier to a Linux server. All our development is done on a Windows desktop, but the actual production system is Linux. We want to use it to replace our Python REST API. New Flows (executing code paths) can be deployed to the server without interruption of existing flows. Updates to existing flows can also be performed all without restarting the service or server.
Each execution unit is called a "Flow", a flow contains "Steps" which are basically functions, each step has "Input" and "Output" connection points which are connected via "Links"
The pieces that make the BAJL Flow Engine work!
The engine runs on Linux or Windows. There is no user interface for the engine (except for some command line parameters). The engine just loads "Flows" and controls the plugins which do all the work.
The plugins do all the actual work. Plugins instruct the engine to start flows based on events. Each plugin has unique settings that can be configured, for instance the Http plugin has settings that control which IP and port to listen for inbound requests on. Below are the plugins that exist or are currently planned to be created. New plugins can be added, they are just .Net assemblies that inherit from the Core.Plugin class.
Listens for incoming HTTP requests and will start flows based on the path/route in the request.
Perform normal database operations, INSERT, SELECT, UPDATE, DELETE, ...
Basic flow controls.
Send and receive emails. Load email templates from storage and and send customized emails to users.
Log flow events into a log file, includes archiving, rolling logs when they hit a size threshold, & deleting old logs.
Control users sessions with logins passwords and encryption, will handle all the normal stuff (login, logout, forgot password / password reset, logout all sessions, ...)
Will perform any required validation, currently email, phone numbers, and flow variables and json/xml elements exist in request.
Start a flow every X seconds or at a specific time
The designer is a Windows only application that is the user interface for the Flow Engine. It lets you design and build flows that will run inside the engine.
This project is a work in progress. It is currently being used as a REST API for the backend of another project that is in development. The engine works and the included plugins have many functions that work. The designer can load and save flows locally and to the server. The graphics in the designer are place holders only for now. They will be updated at some point in the future.
Many of the below features are fleshed out in the code
These are things that will be included sometime in the future