BPM Workflow
Core Positioning
BPM Workflow is the enterprise’s “approval hub” — leave requests, reimbursements, procurement, contracts, seal usage… almost any scenario requiring “multi-level approval” can be modeled and processed here. Based on the Flowable engine, it provides DingTalk/Feishu-style and BPMN dual designers, allowing non-technical personnel to design processes as well.
In one sentence: Say goodbye to WeChat approvals, email approvals, and paper approvals — turn approval processes into structured, traceable systems.
Problems Solved
| Pain Point | How BPM Solves It |
|---|---|
| Approval processes rely on verbal/WeChat communication, no records | All approvals leave traces, every step is traceable |
| Approval rules rely on human memory, prone to omissions | Process templates solidify rules, auto-route to correct approvers |
| Cross-department approval communication costs are high | Auto-routing, no manual notifications needed |
| Overdue approvals with no follow-up | Auto-reminders for overdue items, supports auto-approval/skip |
| Organizational changes cause approver changes | Approvers dynamically calculated by role/department, not hardcoded to specific people |
User Roles
graph LR
subgraph Roles
ADMIN["Process Administrator
Design process templates
Deploy and publish processes"] APPLICANT["Initiator
Submit applications
View approval progress
Cancel applications"] APPROVER["Approver
Approve/Reject/Transfer/Add-sign
View pending/completed tasks"] COPYER["CC Recipient
Receive approval result notifications
No action required"] end
Design process templates
Deploy and publish processes"] APPLICANT["Initiator
Submit applications
View approval progress
Cancel applications"] APPROVER["Approver
Approve/Reject/Transfer/Add-sign
View pending/completed tasks"] COPYER["CC Recipient
Receive approval result notifications
No action required"] end
Feature Collaboration Flow
sequenceDiagram
participant A as Initiator
participant F as Process Engine
participant P1 as Approver 1 (Dept Manager)
participant P2 as Approver 2 (Finance Manager)
participant B as Business System (e.g. ERP)
A->>F: Initiate Process (e.g. Purchase Request)
F->>B: Link Business Data (Purchase Order ID)
F->>P1: Push Pending Task
P1->>F: Approve
F->>P2: Push Pending Task
P2->>F: Approve
F->>B: Callback: Process Complete, Update Business Status
F->>A: Notification: Application Approved
Note over F: If any approver rejects
process returns to initiator
process returns to initiator
Dual Designer Comparison
graph TB
subgraph SIMPLE["SIMPLE Designer (DingTalk/Feishu Style)"]
S1["Drag-and-drop operation"]
S2["Suitable for simple approval chains"]
S3["Low learning curve"]
S4["Usable by non-technical staff"]
end
subgraph BPMN["BPMN Designer"]
B1["Standard BPMN 2.0"]
B2["Supports complex branches/parallel flows"]
B3["Requires some learning"]
B4["For technical staff"]
end
SIMPLE -.->|Complex scenarios can upgrade to| BPMN
| Feature | SIMPLE Designer | BPMN Designer |
|---|---|---|
| Learning Curve | ⭐ Very Low | ⭐⭐⭐ Medium |
| Target Users | Business staff, HR, Admin | Developers, Process Experts |
| Supported Nodes | Approval, CC, Conditional Branch | All BPMN 2.0 Nodes |
| Parallel Branch | ❌ | ✅ |
| Inclusive Branch | ❌ | ✅ |
| Sub-process | ❌ | ✅ |
Full Approval Operations
graph TB
AN["Approval Node"] -->|Approve| NN["Next Node"]
AN["Approval Node"] -->|Reject| Return_Node["Return to specified node
or return to initiator"] AN["Approval Node"] -->|Transfer| Transferee["Transfer to another person
no longer involved"] AN["Approval Node"] -->|Delegate| Delegatee["Delegate to another person
returns to self after processing"] AN["Approval Node"] -->|Add-sign| Additional_Approver["Add approver
countersign/or-sign"] AN["Approval Node"] -->|Remove-sign| Remove_Approver["Reduce approvers"] AN["Approval Node"] -->|Terminate| End_Node["Process ends directly
(special permission)"]
or return to initiator"] AN["Approval Node"] -->|Transfer| Transferee["Transfer to another person
no longer involved"] AN["Approval Node"] -->|Delegate| Delegatee["Delegate to another person
returns to self after processing"] AN["Approval Node"] -->|Add-sign| Additional_Approver["Add approver
countersign/or-sign"] AN["Approval Node"] -->|Remove-sign| Remove_Approver["Reduce approvers"] AN["Approval Node"] -->|Terminate| End_Node["Process ends directly
(special permission)"]
Process Control Capabilities
| Control Type | Description | Typical Scenario |
|---|---|---|
| Conditional Branch | Route to different approval paths based on form data | Amount < 5000 skips CEO approval |
| Parallel Branch | Multiple people approve simultaneously, proceed only when all approve | Multi-department parallel countersign |
| Inclusive Branch | Multiple people approve simultaneously, proceed when any approves | Or-sign scenario |
| Trigger Node | Auto-execute service tasks | Auto-create ERP document after approval |
| Delay Node | Wait specified time before continuing | Remind 7 days before contract expiration |
| Timeout Approval | Auto-process on timeout | Auto-approve/reject if not processed within 48 hours |
| Auto Reminder | Scheduled reminder for pending tasks | Push pending task summary every morning at 9 |
Integration with Business Systems
graph TB
BPM["BPM Process Engine"]
subgraph Integration Scenarios
ERP_APPROVAL["ERP Purchase Approval
Purchase Order → BPM Approval → Auto Inbound"] CRM_APPROVAL["CRM Contract Approval
Contract Draft → BPM Approval → Contract Effective"] OA_APPROVAL["OA General Approval
Leave/Reimbursement/Seal Usage/Out of Office"] end BPM --> ERP_APPROVAL BPM --> CRM_APPROVAL BPM --> OA_APPROVAL
Purchase Order → BPM Approval → Auto Inbound"] CRM_APPROVAL["CRM Contract Approval
Contract Draft → BPM Approval → Contract Effective"] OA_APPROVAL["OA General Approval
Leave/Reimbursement/Seal Usage/Out of Office"] end BPM --> ERP_APPROVAL BPM --> CRM_APPROVAL BPM --> OA_APPROVAL
Integration Method: Business modules initiate processes, query approval status, and handle approval callbacks through APIs provided by BPM, without needing to concern themselves with Flowable’s underlying details.