Skip to content

自动化编排

审批不只是「人点通过」。automation 节点调用 RuleGo 规则链,把审批通过后的入账、开权限、发通知、写第三方系统全部自动化——这就是流程即规则链的威力。

automation 节点

调用任意 RuleGo 规则链(flow 为兼容别名)。规则链里可用的节点生态全部可用:数据库写入、消息队列、邮件、脚本转换、HTTP…… 在 gflow 里用规则链设计器(商业版四大自研部件之一)可视化编排这些能力,不用手写规则链 JSON。

json
{
  "id": "node_auto_1",
  "type": "automation",
  "name": "报销自动入账",
  "configuration": {
    "targetId": "expense_auto_book"
  }
}

targetId 为目标规则链 ID(flow 为旧版别名)。触发是非阻塞的:节点发起调用即成功向下流转,不等规则链执行结果。

服务任务 serviceTask

无需规则链,直接调用 Go 函数(经 components.Services.Register 注册,内部委托 action.Functions;gflow 当前仅内置测试函数,业务函数由宿主应用注册):

go
// 宿主应用注册函数
components.Services.Register("NotificationService", map[string]interface{}{
  "sendApprovalNotification": func(ctx context.Context, msg rulego.Message) {...},
})
json
{ "type": "serviceTask", "configuration": { "functionName": "NotificationService.sendApprovalNotification", "param": { "channel": "wecom" } } }

HTTP 调用 httpCall

同步请求外部接口,响应按映射合并进流程变量(from 取响应字段,to 写入 msg.Data 顶层或 metadata.k):

json
{
  "type": "httpCall",
  "configuration": {
    "method": "POST",
    "url": "https://erp.internal/api/expense",
    "body": "报销单 ${metadata.business_key},金额 ${msg.amount},已通过审批",
    "headers": { "X-Api-Version": "2" },
    "timeoutMs": 10000,
    "outputMappings": [{ "from": "data.orderNo", "to": "erpOrderNo" }]
  }
}

子流程 subProcess

启动独立子流程实例(wf_instance.parent_id 关联),子流程结束后回到主流程继续:

  • 大流程拆模块:主「采购申请」挂子「合同审批」「入库验收」
  • 子流程有自己的表单与审批人,闭环后把结果变量带回主流程

延迟等待

到达节点后挂起等待指定时长再继续(如「试用期转正流程:入职后 90 天自动发起评估」)。

典型组合

发起 → 直属主管 → 条件分支
                      ├─ msg.amount ≤ 5000 → automation(入账) → 抄送财务 → 结束
                      └─ 默认 → 部门经理会签 → aiAgent(风险预审)
                                   ├─ low  → automation(入账)   → 结束
                                   └─ high → 财务总监 → httpCall(ERP) → 结束

事件回调

gflow 把任务生命周期事件(分配/完成/拒绝等)经 TaskEventListener 分发给宿主应用,内置站内通知与审计日志;需要 Webhook 回写业务系统或事件触发规则链时,宿主在监听器里自行扩展。

rulego-bpm 基于 Apache-2.0 许可开源 · gflow 商业授权