Unlocking BPM: How Process Engines Power Modern Workflows

This article explains what a process engine is, distinguishes workflow from BPM, explores common design patterns for process designers, organization structures, form and page design, and presents a detailed architecture guide with code examples and commercial opportunities for building robust backend workflow solutions.

Architect's Guide
Architect's Guide
Architect's Guide
Unlocking BPM: How Process Engines Power Modern Workflows

What is a Process Engine

Process engine is a low‑level platform designed to provide workflow handling. It connects applications and processes as illustrated in the diagram.

Typical supporting scenarios include Workflow, BPM, and process orchestration. This share focuses on BPM process engines and their architectural design methods.

What is a Process

A process is a series of activities. In enterprise OA systems, many approval processes exist; in manufacturing, order‑to‑production‑to‑payment flows; in machine‑learning, data‑processing pipelines such as AWS SageMaker. When combined with concrete implementations, processes become products like DevOps or Spring Data Stream.

Implementation can be code‑based (e.g., custom overtime‑request service) or engine‑based, where the engine handles data integration, SSO, approvals, and flow, allowing developers to focus on configuration, nodes, and forms.

What is an Engine

An engine is a program or system component that abstracts and encapsulates a class of business scenarios, such as game engines, search engines, or antivirus engines. For example, an OA company may package an approval workflow so that implementers only configure the process and form.

Process Designer

The process designer links the process definition to the engine. It can be categorized into three types: custom, UML activity diagram, and BPMN.

Custom example: AWS Step Functions for SageMaker.

UML Activity Diagram example: Flowportal BPM designer.

BPMN example: Activiti designer.

Another example: Yanhuang Yingdong designer, similar to ProcessOn.

Process Engine Applications

Workflow

The Workflow Management Coalition (WfMC) defines workflow as a fully automated business process that moves documents, information, or tasks between participants according to rules.

Workflows are widely used in OA products for approval and data transfer. Domestic products tend to be more feature‑rich due to extensive customer feedback.

BPM (Business Process Management)

While workflow solves approval and data flow, BPM addresses end‑to‑end processes and information silos. BPM products often include components for third‑party integration, custom SQL, and code.

Examples include file triggers for FTP monitoring, timers for daily sync, and mail notifications.

BPM usage can be divided into pre‑execution, during execution, and post‑execution phases.

Process Orchestration

Process orchestration abstracts beyond specific business domains, allowing users to compose functions (e.g., via FAAS) into custom workflows.

Process Engine Architecture Design

BPM Engine Components

Organization, roles, users, and member hierarchy management.

Process resource configuration, validation, storage, and execution, automatically invoking business logic per node.

Form configuration and data binding, with automatic handling based on process definitions.

General data interfaces.

Organization Design

Process Designer

The designer shows a left panel with node groups and a right canvas. Nodes can be arranged via drag‑and‑drop.

Question: How to parse an XML or JSON process diagram?

Different nodes require different configurations, e.g., Human Node needs approver settings, form display, field editability, and audit trails.

Form Designer

Forms can be generated from data tables, with fields bound to the process, or built using drag‑and‑drop controls without direct table binding.

Data‑table‑driven forms follow a master‑detail relationship; drag‑and‑drop forms can store data in NoSQL documents or JSON columns.

Interface Design

Activity‑based interface design is illustrated below.

Typical process creation involves creating an application instance from a template, linking initiator and remarks, and invoking RuntimeService to start the start node.

Project Development Practice

Steps include determining organization structure, process layout and approvals, form fields and validation, page layout, and reporting.

Define organization hierarchy.

Define process layout, approvers, and permissions.

Define form fields, types, data sources, and validation rules.

Define page layout, fields, search, import/export.

Reporting.

Organization Implementation

Two approaches: dimension‑based data management or a single tree structure. Tree structures are often cached for fast lookup of org units, roles, users, and members (to handle multi‑role users).

Synchronization with external directories (e.g., AD) and API‑based retrieval are supported.

Process Design

Simple example process diagram shown below.

Real‑world projects often involve more complex scenarios.

Sample BPMN XML definition (shown as code):

<?xml version="1.0" encoding="UTF-8" ?>
<definitions id="definitions" targetNamespace="http://activiti.org/bpmn20" xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn">
  <process id="vacationRequest" name="Vacation request">
    <startEvent id="request" activiti:initiator="employeeName">
      <extensionElements>
        <activiti:formProperty id="numberOfDays" name="Number of days" type="long" value="1" required="true"/>
        <activiti:formProperty id="startDate" name="First day of holiday (dd-MM-yyy)" datePattern="dd-MM-yyyy hh:mm" type="date" required="true"/>
        <activiti:formProperty id="vacationMotivation" name="Motivation" type="string"/>
      </extensionElements>
    </startEvent>
    <sequenceFlow id="flow1" sourceRef="request" targetRef="handleRequest"/>
    <userTask id="handleRequest" name="Handle vacation request">
      <documentation>${employeeName} would like to take ${numberOfDays} day(s) of vacation (Motivation: ${vacationMotivation}).</documentation>
      <extensionElements>
        <activiti:formProperty id="vacationApproved" name="Do you approve this vacation" type="enum" required="true">
          <activiti:value id="true" name="Approve"/>
          <activiti:value id="false" name="Reject"/>
        </activiti:formProperty>
        <activiti:formProperty id="managerMotivation" name="Motivation" type="string"/>
      </extensionElements>
      <potentialOwner>
        <resourceAssignmentExpression>
          <formalExpression>management</formalExpression>
        </resourceAssignmentExpression>
      </potentialOwner>
    </userTask>
    ... (rest of BPMN omitted for brevity) ...
  </process>
</definitions>

Implementing the entire process in code would be labor‑intensive, whereas using a process‑engine‑based product only requires configuring nodes, data, and permissions.

Mail Notification Node Question

How to implement a mail‑notification node that respects rollback when errors occur later in the flow?

Permission Considerations

Access control must restrict which departments or roles can initiate a process, hide unrelated data during execution, and prevent already‑processed approvers from re‑acting.

Commercial Opportunities

Business Process Analysis (BPA) for process optimization.

Process Assets Library (PAL) to codify institutional knowledge.

Process Simulation for automated testing.

Process Forecasting.

Low‑code platforms.

Broader opportunities combining business domains with process engines, such as DevOps, RPA, service orchestration, data orchestration, and FaaS orchestration.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

Backend Architecturelow-codeProcess EngineBPM
Architect's Guide
Written by

Architect's Guide

Dedicated to sharing programmer-architect skills—Java backend, system, microservice, and distributed architectures—to help you become a senior architect.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.