跳转至

.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 文本、以及 &lt;...&gt; 转义旧 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)