.flow 文件 Schema¶
位置:
/{应用}.application/module/{模块}.module/{流程名}.flow(目录) | XML 根:BillDefiVO(内嵌 FlowDiagram JSON;旧 XML 仍可加载) | 与技能对齐:generate-flow-file机制背景见 [[design/table-schema/overview]]。
1. 用途与落盘¶
流程定义 = 外壳 BillDefiVO(元数据,JAXB XML)+ 内嵌 FlowDiagram(图:节点 + 关系线)。新建图为 JSON(短 className + subelems);加载时 trim 后 {...} 走 JSON,否则 XML。流程参数可选。
/{应用}.application/module/{模块}.module/{流程名}.flow/{流程名}.flow
/{应用}.application/module/{模块}.module/{流程名}.flow/{参数名}.parameter # 可选,根 FlowParameter
关键规则:外壳 <flow> 内存为完整图字符串,落盘用 CDATA(@XmlJavaTypeAdapter(CDataAdapter),与表单 templatecontext 相同)。
- JSON(新建):
<flow><![CDATA[{...}]]></flow>。BillDefiVO.setFlow禁止 XML-escape;CDATA 内也不要再转义。 - 旧 XML:以
<开头,setFlow仍整体 XML 转义后再写入(避免图内脚本 CDATA 的]]>撑破外壳 CDATA)。读取 unescape。 - 加载仍兼容:无 CDATA 的 JSON 文本、以及
<...>转义旧 XML。 - Java:
Factory.trnsXML2Dgrm双格式建树,FlowTemplateBinder按短名new(无Class.forName)。读入兼容短名与两种长前缀。 - API:
flow必须是字符串。勿把{...}put进net.sf.json.JSONObject(json-lib 会 morph 成嵌套对象,设计器加载失败)。
id 规则:外壳 <BillDefiVO id> 与 .parameter 根 id = __ + 短 UUID;图内节点/Relation id = 短 UUID(无 __),同图内唯一,Relation 用 startnodeid/endnodeid 引用。
2. BillDefiVO 外壳属性¶
| 属性 | XML 形态 | 说明 |
|---|---|---|
id |
根属性 | __ + 短 UUID;表单 .activity 的 onActionFlow 引用此值 |
name / subject |
子元素 | 必填;二者同步;文件名;模块内唯一 |
parentId |
子元素 | 模块 id |
flow |
子元素 CDATA | 整图 JSON(新建)或旧 XML |
authorname / authorno |
子元素 | 可空 |
lastmodify |
子元素 | xs:dateTime |
billdefiNo |
子元素 | 排序号,默认 "0" |
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<BillDefiVO id="FLOW_UUID">
<name>请假审批</name>
<parentId>MODULE_UUID</parentId>
<subject>请假审批</subject>
<flow><![CDATA[{"className":"FlowDiagram","subject":"请假审批","subelems":[...]}]]></flow>
<billdefiNo>0</billdefiNo>
</BillDefiVO>
3. 内嵌 FlowDiagram JSON¶
根对象 className: FlowDiagram,字段:subject、authorname、flowstatus(设计盘常 16=FLOWSTATUS_OPEN_NOSTART)、width/height(画布,默认 10000/1536)、flowpath/deleteMSG(空)、subelems(节点与线的扁平数组)。
短名:FlowDiagram、StartNode、CompleteNode、GatewayNode、AutoNode、ManualNode、SubFlow、Relation。
节点类型¶
| className | 类 | 用途 |
|---|---|---|
StartNode |
✓ | 技术起点(无业务办理人) |
ManualNode |
✓ | 人工节点(起草/审批) |
AutoNode |
✓ | 自动节点 |
SubFlow |
✓ | 子流程 |
CompleteNode |
✓ | 结束 |
Relation |
✓ | 关系线(startnodeid→endnodeid,condition/action 脚本) |
GatewayNode |
✓ | 网关可进图;可运行并行仍优先 Manual/Auto 的 issplit/isgather |
拓扑硬规则¶
- 开始 ≠ 起草:必须有独立「起草」ManualNode(发起人办理);禁止
开始→审批→完成缺起草的画法 - 最低形态:
StartNode → 起草 ManualNode → ≥1 审批/可执行节点 → CompleteNode,节点总数 ≥3 - Start 出边≥1 入边=0;Complete 入边≥1 出边=0;中间节点出入边皆≥1
- 每节点
name/statelabel非空;isgather=true⇒ 必填splitStartNode - 每个 ManualNode 必须显式落盘回退三件套:
"cBack": true、"backType": 0(或 1+bnodelist)、"bnodelist";省略则运行态无「回退」
ManualNode 关键字段¶
审批人 actorEditMode(对应填 namelist / actorListScript / 组织字段 orgField+orgScope / roleCondition)、通过条件 passcondition、字段权限 fieldpermlist、按钮权限 activityPermList、加签/协办/抄送/时限配置等,完整字段表见技能文档。
4. 与其它对象的关联¶
| 对象 | 关联 |
|---|---|
表单 .activity |
type=5(流程处理)/4(保存并启动)/33(流程启动)+ onActionFlow=流程 id |
.statelabel |
应用级态名字典,条目对齐各节点 statelabel |
| 运行时表 | Document + FlowStateRT + NodeRT + ActorRT(见 design/table-schema/core-tables.md);Document.STATELABEL ← 当前节点 statelabel |
5. 相关¶
| 资源 | 文档 |
|---|---|
| 挂接表单 | [[form-file]] |
| 态名字典 | [[statelabel-file]] |
| 所属模块 | [[module-file]] |
| 生成操作指南 | agent-skills-usage/skills/generate-flow-file/SKILL.md(含节点全字段表、flow_template_builder.py) |