Skip to content

流程定义格式

jeeflow 使用 LogicFlow JSON 作为流程定义格式,与 Java 版完全一致。

顶层结构

json
{
  "name": "leave",
  "displayName": "请假审批",
  "type": "approval",
  "nodes": [...],
  "edges": [...]
}

节点类型

type说明必填属性
snaker:start开始-
snaker:end结束-
snaker:task任务assignee
snaker:decision条件分支expr(节点级)
snaker:fork并行分支-
snaker:join并行合并-
snaker:custom自定义customClass

任务节点属性

json
{
  "id": "t1",
  "type": "snaker:task",
  "properties": {
    "assignee": "leader",        // 固定参与者(逗号分隔多人)
    "form": "leave-form",        // 表单标识
    "taskType": 0,               // 0=普通 1=会签
    "performType": 0,            // 0=普通 1=会签参与
    "countersignType": "PARALLEL" // PARALLEL / SEQUENTIAL / RATIO(0.5)
  },
  "text": { "value": "组长审批" }
}

参与者优先级:assigneeassignmentHandlercandidateUsers 仅供前端设计器展示,不生成 actor 记录。

条件分支

json
{
  "nodes": [
    {"id":"decision","type":"snaker:decision","properties":{"expr":"amount > 1000"},"text":{"value":"金额>1000?"}},
    {"id":"manager","type":"snaker:task","properties":{"assignee":"manager"},"text":{"value":"经理审批"}},
    {"id":"director","type":"snaker:task","properties":{"assignee":"director"},"text":{"value":"总监审批"}}
  ],
  "edges": [
    {"id":"e3","sourceNodeId":"decision","targetNodeId":"manager",
     "properties":{"expr":"amount > 1000"},"text":{"value":"金额>1000"}},
    {"id":"e4","sourceNodeId":"decision","targetNodeId":"director",
     "properties":{"expr":"amount <= 1000"},"text":{"value":"金额≤1000"}}
  ]
}

边的 text.value 用于钉钉模式分支标签展示,properties.expr 用于引擎求值。

Go 代码加载

go
import (
    "encoding/json"
    "github.com/mldong/jeeflow-go/model"
)

var flow model.FlowModel
json.Unmarshal([]byte(flowJSON), &flow)

def := &model.ProcessDefine{
    Name:    flow.Name,
    Content: []byte(flowJSON),
}
repo.AddDefine(def)

jeeflow · 轻量级多语言工作流引擎