BrianAnderson-BAJL / BAJL-Flow

BAJL Flow Engine backend business logic controller. A visual programming language to simplify development and deployment to remote servers.
https://www.BAJLLLC.com
BSD 3-Clause "New" or "Revised" License
2 stars 0 forks source link
backend json multithreading rest visualprogramming xml

BAJL Flow

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"

Use cases

Engine

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.

Plugins

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.

Http plugin

Listens for incoming HTTP requests and will start flows based on the path/route in the request.

Database plugin

Perform normal database operations, INSERT, SELECT, UPDATE, DELETE, ...

FlowCore plugin

Basic flow controls.

Start sub flows either synchronously or asynchronously

Core steps, Start, Stop, ...

Email plugin

Send and receive emails. Load email templates from storage and and send customized emails to users.

Log plugin

Log flow events into a log file, includes archiving, rolling logs when they hit a size threshold, & deleting old logs.

Sessions plugin

Control users sessions with logins passwords and encryption, will handle all the normal stuff (login, logout, forgot password / password reset, logout all sessions, ...)

Validation plugin

Will perform any required validation, currently email, phone numbers, and flow variables and json/xml elements exist in request.

Timer plugin (planned)

Start a flow every X seconds or at a specific time

Designer

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.

Work in progress, early stages

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.

Features

Many of the below features are fleshed out in the code

Future features

These are things that will be included sometime in the future