Skip to content
AI pre-screens · Humans approve · Automation follows — see approval as automation

Approvals like the wind,flow at full speed.

GFlow Workflow Platform · Once approved, it runs itself

AI pre-screens: LLMs judge the risk; low-risk items pass straight through
Humans approve: countersign, add-sign, return anywhere — every Chinese-style approval action
Automation follows: the moment it is approved, booking, notifications and ERP write-back run on rule chains

Built on the Apache-2.0 open-source GFlow Engine (on a RuleGo base), with the GFlow Workflow Platform on top providing process, form, rule chain and AI agent designers.

Go 1.24+PostgreSQL / MySQLMulti-tenantSingle-binary deployment
Leave Approval Form
GFLOW-2026-0819-0001 · process_key: leave_approval
ApplicantWang Qiang · R&D
ReasonFamily matters, 5 days of leave
Variablesmsg.days = 5 · msg.reason = "Family matters"
StartDirect ManagerAI Pre-screenAuto Booking
After approval✓ Leave ledger updated · ✉ Notifications sent · 0.8s
GFLOW APPROVAL SEALRULEGO-BPM
6
core data tables · runtime/history split
12+
Chinese-style approval actions: add-sign · reject · countersign …
7
BPM extension node types + RuleGo native node library
4
in-house components: process/form/rule chain designers + AI agent
Section 00 · Open Source

An open-source core, ready for commercial use

The engine layer, GFlow Engine, is fully open source (Apache-2.0) and free to embed into your systems; the GFlow Workflow Platform builds a complete out-of-the-box product on top of it.

gflow-engine · Apache-2.0

GFlow Engine approval workflow engine

An embeddable Go approval engine: a rule chain DSL is the process definition, 7 tables hold all runtime state — no separate workflow middleware needed.

terminal
$ go get github.com/rulego/gflow-engine
RuleGo · Apache-2.0

The rule engine underneath

A lightweight, high-performance, embeddable component-based Go rule engine — the shared foundation for orchestration, data cleansing and message routing.

terminal
$ go get github.com/rulego/rulego
Section 01 · Capabilities

Countersign everything, then let it run

Countersign, add-sign, reject, transfer, withdraw — Chinese-style approval semantics are the complete foundation. What others cannot tell you is the automation that kicks in after approval.

AI Approval

The aiAgent node hands requests to an LLM: it recognizes amount/reason risk, auto-approves low risk and escalates high risk to humans.

aiAgentauto-approve

Countersign · OR-sign

Parallel or sequential countersigning, unanimous or by ratio; with OR-sign the first approval settles it. Rules are stored as JSON on the task row.

countersignsingleunanimous/majority

Dynamic add-sign / remove-sign

Insert approvers before or after mid-flight, or remove extra countersigners — the parent-child task chain maintains itself.

parent_idsequence_order

Return anywhere

Send a request back to the initiator or any past node; variables and form snapshots travel with it, and the flow stays editable after return.

returnedreturn to initiator

Transfer · Delegate

Hand a task to someone else; after delegation the original owner stays traceable — every delegate step is recorded.

ownerdelegate_from

Claim / Race-to-claim

Tasks in the candidate pool (roles/departments) are claimed first-come-first-served, with claim time and handler fully recorded.

claimed_atcandidate

Withdraw · Retrieve

Initiators can withdraw in-flight requests; completed tasks can be retrieved for rework before the next node acts on them.

withdrawncancelled

CC · Communication

The ccTask node produces CC records; listeners call back into the host app to drive in-app and email notifications.

ccTaskCCTaskCreatedListener

Conditional · Parallel · Inclusive

jsSwitch gates branch on form variables; fork/join runs branches in parallel; inclusive activates only the matching subset.

jsSwitchforkinclusive
Section 02 · Products

Two shapes, one core

Embed GFlow Engine into your existing systems, or take away a ready-to-use GFlow Workflow Platform.

GFLOW / ENGINE

Open-Source Approval Engine

For developers. One Go library plus 7 tables embeds Chinese-style approval into any existing system — Apache-2.0, modify it freely.

¥ 0Apache-2.0 · Free forever
  • Full approval-engine semantics: countersign / add-sign / reject / transfer / withdraw / suspend
  • Rule chain DSL process definitions (ruleChain + metadata)
  • Multi-tenant tenant_id isolation end to end
  • Versioned process definitions — existing instances keep running the old version
  • Pluggable identity via IdentityService
  • Runtime / history table separation
View source
COMMERCIAL
GFLOW / PLATFORM

GFlow Workflow Platform

For enterprises. A ready-made product out of the box: server + frontend + designers, delivered with source — a business admin configures the first process in 30 minutes.

¥ 15,00050% OFF · Limited timeOne-time license · Source delivery · 1 year of support included
  • Process Designer: tree-style visual orchestration (in-house)
  • Form Designer: gform-designer + template library (in-house)
  • Rule Chain Designer: visual automation orchestration (in-house)
  • AI Agent: AI approval · skills · agent management (in-house)
  • Complete frontend app: initiate / todo / done / CC / stats / tracking
  • Automation orchestration: triggers, HTTP / service task configuration
  • Organization, roles, positions and multi-tenant admin console
  • Monitoring dashboards, notification center, operation audit
  • Full source delivery of server + frontend, unlimited customization
See the full comparison
Section 03 · Designer

A WYSIWYG tree-style designer

Our in-house process designer: tree structure, node drawers, conditional branches with automatic default routes — business admins write zero code. The form designer is built on the same stack.

GFlow · Process Designer / Expense Approval
GFlow process designer — expense approval flow with the approver drawer open
Section 04 · Data Model

The whole engine is only 7 tables

Runtime and history archiving on separate tracks: in-flight data stays minimal, and reporting/audit queries hit the history tables without dragging down production. No relational maze — each table is self-explanatory at a glance.

RUNTIME · in flight (5 tables)
wf_processProcess definition
process_key + versionbusiness key + version, multiple versions per key
definition_jsonfull rule chain DSL text
statusactive / retired
wf_instanceRuntime instance
process_id → wf_processwhich version the instance runs
business_keybusiness order no. (e.g. expense no.)
variablesprocess variables (form data goes into msg)
parent_idsub-process back-link to its parent
wf_taskRuntime task
assignee / ownerhandler / pre-delegation owner
parent_id + sequence_orderparent-child chain for countersign & add-sign
approval_type + approval_ruleOR-sign / countersign rules
wf_task_assigneeCandidate pool
task_id → wf_taskcandidates attached to a task
entity_typerole / department / person
entity_idraw reference, expanded via the identity service on query
wf_task_commentTask comments
task_id → wf_taskstill readable/writable after the task is archived
content + user_idwho said what, and when
HISTORY · archive (2 tables)
wf_hi_instanceHistory instance
ended_at + durationend time and elapsed time
end_reasoncompleted / terminated / withdrawn reason
wf_hi_taskHistory task
comment + end_reasonapproval comment and conclusion snapshot
variablesform snapshot at the moment of completion

The moment an instance finishes, its rows move from wf_instance / wf_task into wf_hi_* and record elapsed time and conclusions; the runtime tables only ever hold "in flight" rows, while the history tables take any index you need for reports — neither disturbs the other.

Read "Data Model: why only 7 tables" →
Section 05 · Architecture

Top to bottom, all in-house

Designers, frontend app, approval engine and rule orchestration — four layers, all our own code, no black-box dependencies. Each layer stands on its own: the engine embeds into your system without gflow, and gflow never locks in your data.

Design Layer
Designers
Process Designer (tree-based)gform-designer Form DesignerRule Chain Designer (automation orchestration)AI Agent (AI approval · skill management)Node config drawer · conditional routing · form permissions
Application · GFlow Platform
Application
Initiate / todo / done / CC / statisticsOrganization · roles & positions · multi-tenant consoleMonitoring · notifications · auditAI agent management · skills · model config
Engine · GFlow Engine
Approval Engine
8 BPM node types: startTask / userTask / ccTask / serviceTask …Countersign · add-sign · return · transfer task state machineIdentityService pluggable identityVersioned deployment · recovery · suspension
Rule Engine · RuleGo
Rule Engine
Rule chain DSL (ruleChain + metadata)switch / fork / join / inclusive / delayautomation node cross-chain calls
Storage
Storage
PostgreSQL / MySQL7 core tables · optional Redis distributed lock
Section 06 · Quick Start

Your first approval flow in three minutes

No middleware to install, no scaffolding to generate. Create the database, connect it, start an instance — you write business code, not workflow code.

main.go
import (
"github.com/rulego/gflow-engine/config"
"github.com/rulego/gflow-engine/service"
)

// 1. Connect the database and the engine is live — 7 tables auto-provisioned
engine := service.NewWorkflowEngine("demo", &config.Config{
Database: &config.DatabaseConfig{
Driver: "postgres",
Dsn: "host=127.0.0.1 dbname=rulego_bpm ...",
},
})
engine.Start(ctx)

// 2. Deploy a process (the DSL is just a RuleGo rule chain)
engine.GetProcessService().Deploy(ctx, &model.WfProcess{
ProcessKey: "expense_approval",
Name: "Expense Approval",
DefinitionJSON: expenseDSL,
}, true)

// 3. Start an instance — form data goes into msg
engine.GetRuntimeService().StartProcessInstanceByKey(
ctx, identity, "expense_approval", bizKey, vars, false)
engine.log
$ go run .
[BPM] engine started · tables migrated (6)
[BPM] deploy expense_approval v1 · active
[BPM] instance i-2026…started · task → mgr001
[AI ] expense ≤ 5000 · auto-approved ✦
[BPM] instance completed · 1.2s
$
  • The engine has zero external dependencies: the Redis lock and message notifications are both optional
  • The DSL interoperates with the RuleGo ecosystem — rule chains can be reused directly as processes
  • Unit tests run on an in-memory SQLite database, no real database needed
Section 07 · Pricing

Open source is free, commercial pricing is clear

GFlow Engine is open source and free forever; the GFlow Workflow Platform is a limited-time 50% off at ¥7,500 (was ¥15,000) with source delivery — no annual subscription, no per-seat billing, no feature black boxes.

GFLOW APPROVAL SEALRULEGO-BPM

Enough reading — go stamp something

The demo environment is a complete production build: log in with admin / admin123 and walk from form design to the final approval stamp — you will know exactly what ¥7,500 buys.

GFlow Engine is open source under Apache-2.0 · GFlow Workflow Platform is commercially licensed