Flour Framework
Flow-based Programming
Framework
How adapt fast to changing business needs
● Fast reconfguration of information fow
● Hot deploy in production of new functionality
● Multiple software version operation
● Language agnostic system
● Easly integration with legacy systems
● Microservice ready
● Stream fow integration
Technology Stack
● Web based interface management
● Pub/Sub in-memory information fow and graph mapping
● Javascript library for web based graph mapping and management
● Language agnostic templates for process development and deployment
● Asyncronous and web-socket libraries for backend
● Filesystem and key/value DB for cache and state consolidation
● Process management libraries
● Stream processing ecosystem
Graph Actions
● Setup of graph topology and defnition of nodes
● Defne / Edit Node properties
● Save / Load Graphs from server
● Deploy / Undeploy of single/group (by edges, by nodes) and whole graph
● Hold of single/group (by edges, by nodes) and whole graph
● Hot deploy with running Graph
● Hot edge reconfguration with running Graph
● Deploy / Undeploy Framework backend process ( Server, Monitor,
Broadcaster)
Nodes
● Diferent kind of specialized Nodes part of
this group (Input / Output / Process / Event /
Conditional)
● Input (slack/discord/sftp/stream)
● Output (slack/discord/sftp/stream)
● Event (timer,stream)
● Conditional ( multi input/output on message
content)
● Multi language script association with Node.
● Run / Hold / Deploy / Undeploy by process
manager
● Multiple process script templates in
Javascript / Python / Elixir
Edges
● Manage queue, connecting source and target Nodes
● Have a dedicated Process Queue Manager (PQM) process
● Process Queue Manager supervise redis queue, output statistics data,
manage cache activation when target node get unreachable ( on hold,
undeployed, on error )
● Edger can be put on hold to stop or redirect / reconfgure message fows
through the running graph.
Backend
● Redis server
● NodeJs Server process for deployment
● NodeJs Broadcaster process for intraprocess and web messaging
● NodeJs Monitor process for PM2 process metadata update
● Local storage on Lokijs ( Lokijs )
● On Next iteration, Kafa and Faust ( working on that .. )
Web Interface
● Single page application
● Build on CytoscapeJS plus vanilla Js
● Socket-io for message broadcasting
● Auth0 ( Auth0 ) cloud authentication service
● Vue.js for dialogs
● Last but not least lodash

Flour

  • 1.
  • 2.
    How adapt fastto changing business needs ● Fast reconfguration of information fow ● Hot deploy in production of new functionality ● Multiple software version operation ● Language agnostic system ● Easly integration with legacy systems ● Microservice ready ● Stream fow integration
  • 3.
    Technology Stack ● Webbased interface management ● Pub/Sub in-memory information fow and graph mapping ● Javascript library for web based graph mapping and management ● Language agnostic templates for process development and deployment ● Asyncronous and web-socket libraries for backend ● Filesystem and key/value DB for cache and state consolidation ● Process management libraries ● Stream processing ecosystem
  • 4.
    Graph Actions ● Setupof graph topology and defnition of nodes ● Defne / Edit Node properties ● Save / Load Graphs from server ● Deploy / Undeploy of single/group (by edges, by nodes) and whole graph ● Hold of single/group (by edges, by nodes) and whole graph ● Hot deploy with running Graph ● Hot edge reconfguration with running Graph ● Deploy / Undeploy Framework backend process ( Server, Monitor, Broadcaster)
  • 5.
    Nodes ● Diferent kindof specialized Nodes part of this group (Input / Output / Process / Event / Conditional) ● Input (slack/discord/sftp/stream) ● Output (slack/discord/sftp/stream) ● Event (timer,stream) ● Conditional ( multi input/output on message content) ● Multi language script association with Node. ● Run / Hold / Deploy / Undeploy by process manager ● Multiple process script templates in Javascript / Python / Elixir
  • 6.
    Edges ● Manage queue,connecting source and target Nodes ● Have a dedicated Process Queue Manager (PQM) process ● Process Queue Manager supervise redis queue, output statistics data, manage cache activation when target node get unreachable ( on hold, undeployed, on error ) ● Edger can be put on hold to stop or redirect / reconfgure message fows through the running graph.
  • 7.
    Backend ● Redis server ●NodeJs Server process for deployment ● NodeJs Broadcaster process for intraprocess and web messaging ● NodeJs Monitor process for PM2 process metadata update ● Local storage on Lokijs ( Lokijs ) ● On Next iteration, Kafa and Faust ( working on that .. )
  • 8.
    Web Interface ● Singlepage application ● Build on CytoscapeJS plus vanilla Js ● Socket-io for message broadcasting ● Auth0 ( Auth0 ) cloud authentication service ● Vue.js for dialogs ● Last but not least lodash