Skip to main content

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

FromToIntegration
BPMLogicStages use Logic Flows for automation
BPMLogicTransitions use Logic Blocks for guards
APILogicActions use Logic Blocks for validation
APIBPMProcess Actions trigger BPM operations
LogicExternalService Connections call external APIs
AllEventsCustom 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