Integration Architecture
FlowOn products are designed to work together seamlessly, creating a unified platform for no-code development.
Architecture Overview
┌─────────────────────────────────────────────────────────────────────┐
│ INTEGRATION ARCHITECTURE │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ DYNAMICS 365 CE │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌────────────────────────────────────────────────────┐ │ │
│ │ │ FLOWON RUNTIME │ │ │
│ │ │ │ │ │
│ │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │
│ │ │ │ Logic │◄──►│ BPM │◄──►│ API │ │ │ │
│ │ │ │ Engine │ │ Engine │ │ Runtime │ │ │ │
│ │ │ └────┬────┘ └────┬────┘ └────┬────┘ │ │ │
│ │ │ │ │ │ │ │ │
│ │ │ └──────────────┼──────────────┘ │ │ │
│ │ │ │ │ │ │
│ │ │ ▼ │ │ │
│ │ │ ┌─────────────────┐ │ │ │
│ │ │ │ FlowOn Base │ │ │ │
│ │ │ │ (Plugin Host) │ │ │ │
│ │ │ └────────┬────────┘ │ │ │
│ │ │ │ │ │ │
│ │ └─────────────────────┼──────────────────────────────┘ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌─────────────────┐ │ │
│ │ │ Dataverse API │ │ │
│ │ │ (CRUD, Events) │ │ │
│ │ └─────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
│ EXTERNAL │
│ ──────── │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Web │ │ Mobile │ │ External │ │
│ │ Apps │───►│ Apps │───►│ Systems │ │
│ │ │ │ │ │ │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │ │
│ └──────────────────┼──────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ FlowOn API │ │
│ │ (REST Server) │ │
│ └─────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
Integration Points
| From | To | Integration |
|---|---|---|
| BPM | Logic | Stages use Logic Flows for automation |
| BPM | Logic | Transitions use Logic Blocks for guards |
| API | Logic | Actions use Logic Blocks for validation |
| API | BPM | Process Actions trigger BPM operations |
| Logic | External | Service Connections call external APIs |
| All | Events | Custom events for cross-component communication |
Product Interactions
Logic ↔ BPM
FlowOn BPM leverages FlowOn Logic extensively:
Business Process Stage
├── On Entering
│ └── Run Logic Flow: "InitializeStage"
├── Assignment
│ └── Run Decision Table: "DetermineAssignee"
├── Validation
│ └── Run Validation Set: "StageValidations"
├── On Exiting
│ └── Run Logic Flow: "FinalizeStage"
└── Transitions
└── Guard: Run Logic Block: "CanTransition"
Logic ↔ API
FlowOn API uses Logic for business rules:
API Action: CreateOrder
├── Pre-Validation
│ └── Run Validation Set: "OrderValidations"
├── Pre-Processing
│ └── Run Logic Flow: "PrepareOrder"
├── Execute (CRUD operation)
└── Post-Processing
└── Run Logic Flow: "ProcessOrderCreated"
BPM ↔ API
API exposes BPM operations:
POST /api/orders/{id}/actions/submit
└── Triggers BPM Transition: "Submit for Approval"
POST /api/orders/{id}/actions/approve
└── Triggers BPM Transition: "Approve"
GET /api/orders/{id}/process-status
└── Returns current stage, history, available actions
Event-Driven Integration
FlowOn's event system enables loose coupling:
┌─────────────────────────────────────────────────────────────────────┐
│ EVENT FLOW │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ Order Created │
│ │ │
│ ├──► Event: OrderCreated │
│ │ │ │
│ │ ├──► Handler: SendConfirmationEmail │
│ │ ├──► Handler: UpdateInventory │
│ │ ├──► Handler: NotifySalesTeam │
│ │ └──► Handler: TriggerBPMProcess │
│ │ │
│ └──► BPM Process Started │
│ │ │
│ └──► Event: ProcessStarted │
│ │ │
│ └──► Handler: LogProcessStart │
│ │
└─────────────────────────────────────────────────────────────────────┘
Solution Dependencies
┌─────────────────────────────────────────────────────────────────────┐
│ SOLUTION DEPENDENCIES │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────┐ │
│ │ FlowOn Base │ ◄── Required first │
│ │ (Foundation) │ │
│ └──────────┬──────────┘ │
│ │ │
│ ┌───────────────────┼───────────────────┐ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │
│ │ FlowOn Logic │ │ FlowOn BPM │ │ FlowOn API │ │
│ │ │ │ │ │ │ │
│ │ • Logic Core │ │ • BPM Core │ │ • API Core │ │
│ │ • Expression │ │ • Designer │ │ • Studio │ │
│ │ Engine │ │ • Runtime │ │ • Runtime │ │
│ └───────────────┘ └───────────────┘ └───────────────┘ │
│ │
│ NOTE: BPM and API both require Logic to be installed │
│ │
└─────────────────────────────────────────────────────────────────────┘
Data Flow
┌─────────────────────────────────────────────────────────────────────┐
│ DATA FLOW │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ External Request │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ FlowOn API │ ──► Authentication ──► Authorization │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │FlowOn Logic │ ──► Validation ──► Business Rules │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ Dataverse │ ──► CRUD Operation │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ FlowOn BPM │ ──► Process Trigger (if applicable) │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ Events │ ──► Event Handlers │
│ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
Next Steps
- Deployment and Licensing - Installation and licensing