BankLingo Process Engine
The BankLingo Process Engine is a powerful, BPMN 2.0-compliant workflow automation system designed specifically for banking and financial services applications. It enables you to design, deploy, and execute complex business processes with full control over execution flow, user interactions, and system integrations.
What is the Process Engine?
The BankLingo Process Engine is a state machine that orchestrates business processes defined in BPMN (Business Process Model and Notation) XML format. It manages:
- Workflow Execution: Automated execution of business processes
- User Task Management: Human interactions and approvals
- System Integration: Service calls and external system communication
- Business Rules: Decision logic and conditional routing
- Process State: Complete audit trail and execution history
- Error Handling: Retry logic and compensation flows
Key Features
🎯 BPMN 2.0 Compliant
Full support for standard BPMN elements including:
- Tasks (User, Service, Script, Send, Receive, Business Rule, Call Activity)
- Gateways (Exclusive, Parallel, Inclusive)
- Events (Start, End, Timer, Message, Signal)
- Sequence Flows with conditions
🔄 Dual Execution Modes
- Unsupervised Mode: Fully automated execution from start to finish
- Supervised Mode: Step-by-step execution with manual control (step forward/backward)
🧩 Rich Task Types
Support for 8 different task types, each with specialized capabilities:
- UserTask: Human interactions with forms and actions
- ServiceTask: HTTP/REST API calls with retry logic
- ScriptTask: Execute JavaScript/Node.js code inline
- SendTask: Send messages to queues, topics, or HTTP endpoints
- BusinessRuleTask: Execute business rules and decision tables
- ReceiveTask: Wait for external messages or signals
- CallActivity: Invoke sub-processes with data mapping
- Gateway: Dynamic routing with script-based conditions
📊 Process Variables
- Full variable context throughout process execution
- Input/Output mapping for all tasks
- Formula evaluation using BankLingo command engine
- Support for complex objects and JSON data
🔐 Security & Permissions
- Role-based access control
- Responsible users and teams assignment
- Entity state management
- Audit logging for all operations
🔌 Extensibility
- Custom task properties via BPMN extension elements
- Integration with BankLingo command engine
- Support for custom scripts and formulas
- Pluggable service connectors
Architecture
The BankLingo Process Engine follows a layered architecture design that ensures separation of concerns, scalability, and maintainability.
System Architecture Diagram
Architecture Components
1. API Layer
The REST API layer provides endpoints for:
- Creating and deploying BPMN process definitions
- Starting process instances with input variables
- Completing user tasks with form data
- Querying process state and execution history
- Managing supervised execution (step forward/backward)
2. Process Engine Core
BPMN Parser
- Parses BPMN 2.0 XML into internal process definitions
- Validates process structure and semantics
- Extracts custom properties and extension elements
Execution Engine
- State machine that orchestrates process flow
- Manages sequence flows and gateways
- Handles parallel and conditional branching
- Supports both supervised and unsupervised modes
State Manager
- Tracks current state of all process instances
- Maintains execution history and audit trail
- Handles process suspension and resumption
- Manages error states and retries
Task Processors Specialized handlers for each task type:
- UserTask: Manages human interactions, forms, and approvals
- ScriptTask: Executes JavaScript/Node.js code with BankLingo context
- ServiceTask: Makes HTTP/REST API calls with retry logic
- SendTask: Sends messages to queues, topics, or webhooks
- BusinessRuleTask: Executes decision tables and business rules
- ReceiveTask: Waits for external events or messages
- CallActivity: Invokes child processes with data mapping
Gateway Evaluator
- Evaluates conditional expressions on sequence flows
- Routes execution based on process variables
- Supports exclusive, parallel, and inclusive gateways
- Script-based conditional logic
Variable Manager
- Manages process variable context
- Handles input/output mapping for tasks
- Supports variable scoping (process, task, local)
- Type conversion and validation
3. Integration Layer
BankLingo Command Engine
- Executes BankLingo commands via
doCmd()function - Available in ScriptTasks, Gateways, and Formulas
- Full access to banking operations (accounts, loans, transactions)
- Security context with user permissions
Formula Engine
- Evaluates dynamic expressions and calculations
- Supports complex business logic
- Variable interpolation and transformation
- Date/time calculations and formatting
Data Access Layer
- CRUD operations on banking entities
- Transaction management
- Query optimization and caching
- Multi-tenant data isolation
4. Persistence Layer
Database Schema
- Process Definitions: BPMN XML and metadata
- Process Instances: Running process state
- Task Instances: User task states and assignments
- Execution History: Complete audit trail
- Process Variables: Variable values and types
Data Flow Example
Execution Flow
Supervised vs Unsupervised Mode
Key Architectural Benefits
✅ Separation of Concerns: Each layer has clear responsibilities
✅ Scalability: Stateless execution engine can scale horizontally
✅ Extensibility: Pluggable task processors and custom properties
✅ Auditability: Complete execution history in database
✅ Debuggability: Supervised mode for step-by-step execution
✅ Integration: Seamless BankLingo command engine integration
✅ Standards: BPMN 2.0 compliance for portability
Use Cases
Loan Application Processing
Automate the entire loan lifecycle from application submission through credit checks, approvals, disbursement, and closing.
Customer Onboarding
Orchestrate multi-step customer registration with KYC verification, document collection, account creation, and approval workflows.
Payment Authorization
Implement complex payment approval workflows with risk assessment, multi-level approvals, and fraud detection.
Account Management
Automate account opening, closing, freezing, and modification processes with appropriate approvals.
Compliance & Reporting
Manage regulatory reporting workflows, audit trails, and compliance checks.
Getting Started
Ready to build your first process? Check out our guides:
- Getting Started - Create your first BPMN process
- Task Types - Learn about all available task types
- Execution Modes - Understand supervised vs unsupervised execution
- API Reference - Complete API documentation
- Examples - Real-world process examples
Quick Example
Here's a simple approval process:
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:custom="http://banklingo.com/schema/bpmn">
<bpmn:process id="SimpleApproval" name="Simple Approval Process" isExecutable="true">
<!-- Start Event -->
<bpmn:startEvent id="Start" />
<bpmn:sequenceFlow sourceRef="Start" targetRef="Task_Review" />
<!-- User Task: Review Request -->
<bpmn:userTask id="Task_Review" name="Review Request">
<bpmn:extensionElements>
<custom:properties>
<custom:property name="FormKey" value="approval-form" />
<custom:property name="UserActions" value="Approve,Reject" />
</custom:properties>
</bpmn:extensionElements>
</bpmn:userTask>
<bpmn:sequenceFlow sourceRef="Task_Review" targetRef="Gateway_Decision" />
<!-- Gateway: Check Decision -->
<bpmn:exclusiveGateway id="Gateway_Decision">
<bpmn:extensionElements>
<custom:properties>
<custom:property name="Condition" value="return userAction === 'Approve' ? 'Flow_Approved' : 'Flow_Rejected';" />
</custom:properties>
</bpmn:extensionElements>
</bpmn:exclusiveGateway>
<bpmn:sequenceFlow id="Flow_Approved" name="Approved"
sourceRef="Gateway_Decision" targetRef="Task_Notify_Approval" />
<bpmn:sequenceFlow id="Flow_Rejected" name="Rejected"
sourceRef="Gateway_Decision" targetRef="Task_Notify_Rejection" />
<!-- Notify Approval -->
<bpmn:sendTask id="Task_Notify_Approval" name="Send Approval Notification">
<bpmn:extensionElements>
<custom:properties>
<custom:property name="Destination" value="/api/notifications" />
<custom:property name="Method" value="POST" />
</custom:properties>
</bpmn:extensionElements>
</bpmn:sendTask>
<bpmn:sequenceFlow sourceRef="Task_Notify_Approval" targetRef="End_Approved" />
<!-- Notify Rejection -->
<bpmn:sendTask id="Task_Notify_Rejection" name="Send Rejection Notification">
<bpmn:extensionElements>
<custom:properties>
<custom:property name="Destination" value="/api/notifications" />
<custom:property name="Method" value="POST" />
</custom:properties>
</bpmn:extensionElements>
</bpmn:sendTask>
<bpmn:sequenceFlow sourceRef="Task_Notify_Rejection" targetRef="End_Rejected" />
<!-- End Events -->
<bpmn:endEvent id="End_Approved" />
<bpmn:endEvent id="End_Rejected" />
</bpmn:process>
</bpmn:definitions>
System Requirements
- .NET 6.0 or higher: The process engine runs on .NET
- SQL Server/PostgreSQL: For storing process definitions and state
- BankLingo Platform: Core banking platform installation
Next Steps
- 📘 Read the Getting Started Guide
- 🔍 Explore Task Types
- 💡 See Complete Examples
- 📖 Browse the API Reference
Need Help? Check out our FAQ or contact the BankLingo support team.