批量添加工作流节点
向已有工作流批量追加节点(不能新建触发器)。
语义提醒:
• processId 必填,节点全部追加到该流程内。
• 节点用 prevNode/parentNode 表达顺序/容器;数据引用写在具体字段里:ValueRef.node、target/input。rollup / approval_block / sub_process 统一用 config.target。引用历史节点推荐用 nodeId(避免 alias 冲突),同批新建节点之间用 nodeAlias。
• 筛选条件只用 Filter={logic, items} 和 Condition={left, op, right?};left 必须是字段引用 {kind:'field', node, fieldId},其它值类型只能放 right。
• get_single/get_multiple 的 config.filter 中,left.node 必须引用当前查询节点自身,用来筛选被查询工作表字段;trigger/其它上游字段只能作为 right 动态值。
• 不允许在本接口新建触发器;触发器只能在创建工作流时一次创建。
• 块节点(approval_block / sub_process)内部节点不通过 parentNode 挂,而是写在块节点 config.process.nodes 里。
• 返回 createdNodes 中如果包含 approval_block 或 sub_process,该节点项会带内部审批流程/子流程的 processId。
NodeSpec.config 的字段集合按 nodeType 分发,分发规则见本工具 NodeSpec.allOf。
⚠️ 节点没有 sourceNode 属性,引用数据源一律使用 config.target (传入 RecordValueRef)。
⚠️ rollup 输出字段固定为 number_fx_id;compute(number/dateDiff) 输出字段固定为 number_fx_id,compute(dateOffset) 输出字段固定为 date_fx_id。下游引用应使用 $nodeAlias-number_fx_id$ 等。
⚠️ 分支路径下的第一个节点,prevNode 和 parentNode 都必须显式指向该路径的 alias。绝对不能把路径 alias 用作数据源 target。
⚠️ 审批内部节点引用记录使用 approval_start;子流程内部节点引用记录使用 sub_trigger。
⚠️ 查询多条记录 (get_multiple) 结果分支判断是否为空,必须先创建 rollup (COUNT) 节点,再在 branch 中判断汇总值 > 0。
鉴权方式
AppKey + Sign 是应用密钥鉴权,由管理员创建,用于以应用管理员身份访问应用数据。
版本
请求地址
Path 参数
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
workflow_id | string | 是 | 目标流程 ID,必填。 |
Header 参数
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
HAP-Appkey | string | 是 | HAP应用密钥 |
HAP-Sign | string | 是 | HAP签名 |
Body 参数
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
nodes | object[] | 是 | 新增节点列表,至少一项;不允许 nodeType=trigger_*。 |
nodes.nodeAlias | string | 是 | 节点别名。 |
nodes.nodeId | string | 否 | 已有节点 ID(编辑场景使用,新建时不传)。 |
nodes.nodeType | string | 是 | 节点类型。本接口当前支持这 17 种。approve/fill_in 只允许写在 approval_block.config.process.nodes 里。 • get_single — 按条件查询单条记录 • get_multiple — 按条件查询多条记录(常配合 sub_process) • add_record — 在指定工作表新增一条记录 • update_record — 更新指定记录的字段值 • delete_record — 删除指定记录 • branch — 条件分支,根据字段值走不同路径 • rollup — 汇总统计(COUNT/SUM/AVG/MAX/MIN) • compute — 数值公式/日期差值(dateDiff)/日期偏移(dateOffset) • delay — 延时等待 • send_internal_notice — 站内消息通知(不需要数据源) • cc — 抄送记录详情给指定人员(仅单条记录) • send_email — 发送邮件通知 • code — 代码块节点,执行自定义 JS/Python 代码 • approval_block — 审批流程容器,内部放 approve/fill_in 节点 • approve — 发起人工审批(仅限 approval_block 内部) • fill_in — 发起人工填写(仅限 approval_block 内部) • sub_process — 子流程,对多条记录逐条执行一组节点 可选值: "get_single""get_multiple""add_record""update_record""delete_record""branch""rollup""compute""delay""send_internal_notice""cc""send_email""code""approval_block""approve""fill_in""sub_process" |
nodes.name | string | 是 | 节点显示名称,必填且不能为空白字符串。 |
nodes.description | string | 否 | 节点说明。 |
nodes.prevNode | object | 否 | 前驱节点引用。 |
nodes.prevNode.nodeAlias | string | 否 | 节点别名; |
nodes.prevNode.nodeId | string | 否 | 节点 24 位 ID; |
nodes.parentNode | object | 否 | 容器归属(分支路径等)。 |
nodes.parentNode.nodeAlias | string | 否 | 节点别名; |
nodes.parentNode.nodeId | string | 否 | 节点 24 位 ID; |
nodes.config | object | 是 | 节点专属配置。字段集合由 nodeType 决定,每个字段的 description 用 [nodeType] 前缀标注适用范围;代码会按 NodeDefinitionRegistry 和各节点 assembler 做实际必填与语义校验。 各 nodeType 的当前必填字段:get_single: worksheetId;get_multiple: worksheetId;add_record: worksheetId, fields;update_record: target, fields;delete_record: target;branch: paths;rollup: target;compute: computeType=number 时 expression 必填、computeType=dateDiff 时 startTime+endTime+outputUnit 必填、computeType=dateOffset 时 inputTime+offsetExpression 必填;delay: mode;send_internal_notice: recipients, content;cc: target;send_email: recipients/to;code: code, inputs, outputs;approval_block: target, process, initiators;approve: target, approvers;fill_in: target, assignee, formProperties;sub_process: process, target。 |
nodes.config.worksheetId | string | 否 | [get_single 必填] [get_multiple 必填] [add_record 必填] [update_record] 工作表 ID 或别名(必填)。 |
nodes.config.filter | object | 否 | [get_single] [get_multiple] 查询条件,可选;不传 = 不限制(取首条)。查询 filter 的 Condition.left.node 必须引用当前 get_single 节点自身(例如 {nodeAlias:'本节点别名'}),用于筛选被查询工作表字段;trigger/其它上游字段只能作为 right 动态值。 |
nodes.config.filter.logic | string | 是 | 当前层子项的组合方式:and=全部满足,or=任一满足。 可选值: "and""or" |
nodes.config.filter.items | any[] | 是 | 本层子项列表,每项可为嵌套 Filter 或单条件 Condition。 |
nodes.config.filter.items.logic | string | 是 | 当前层子项的组合方式:and=全部满足,or=任一满足。 可选值: "and""or" |
nodes.config.filter.items.items | any[] | 是 | 本层子项列表,每项可为嵌套 Filter 或单条件 Condition。 |
nodes.config.filter.items.items.logic | string | 是 | 当前层子项的组合方式:and=全部满足,or=任一满足。 可选值: "and""or" |
nodes.config.filter.items.items.items | any[] | 是 | 本层子项列表,每项可为嵌套 Filter 或单条件 Condition。 |
nodes.config.filter.items.items.items.logic | string | 是 | 当前层子项的组合方式:and=全部满足,or=任一满足。 可选值: "and""or" |
nodes.config.filter.items.items.items.items | any[] | 是 | 本层子项列表,每项可为嵌套 Filter 或单条件 Condition。 |
nodes.config.filter.items.items.items.left | object | 是 | 左侧字段引用,必填。条件比较的是 left 对应字段;非字段值只能放在 right。 |
nodes.config.filter.items.items.items.op | string | 是 | 比较操作符。❗ 必须使用 enum 中的精确值:不等于是 ne(不是 neq/not_eq)、大于等于是 gte(不是 ge/geq)、小于等于是 lte(不是 le/leq)。empty/not_empty 不消费 right。 可选值: "eq""ne""gt""gte""lt""lte""in""not_in""empty""not_empty""contains""not_contains""starts_with""not_starts_with""ends_with""not_ends_with""all_contains""belongs""not_belongs""subordinate_contains""not_subordinate_contains""checked""unchecked""title_eq""title_ne" |
nodes.config.filter.items.items.items.right | object | 否 | 右侧值。允许 kind=literal / field / systemField / record / template;不要用 kind=empty 表达空判断,empty/not_empty 操作符不传 right。单值传 ValueRef;in/not_in/contains/not_contains 必须传 ValueRef 数组(每项 ValueRef)。 |
nodes.config.filter.items.items.items.ignore_empty | boolean | 否 | 动态值为空时是否跳过。 |
nodes.config.filter.items.items.items.type | integer | 否 | 左侧字段控件类型,可选;不传由服务端按节点工作表和 fieldId 补齐。 |
nodes.config.filter.items.items.items.enumDefault | integer | 否 | 左侧字段 enumDefault,可选;不传由服务端按字段元数据补齐。 |
nodes.config.filter.items.items.left | object | 是 | 左侧字段引用,必填。条件比较的是 left 对应字段;非字段值只能放在 right。 |
nodes.config.filter.items.items.left.kind | string | 是 | 固定为 field。 可选值: "field" |
nodes.config.filter.items.items.left.node | object | 是 | 字段所属节点引用。 |
nodes.config.filter.items.items.left.fieldId | string | 是 | 字段 ID。人工节点虚拟字段使用真实 fieldId,如 opinionSummary / executorid;不要写 opinion / wfcuaids。 ⚠️ 必须使用工作表结构的真实字段 ID,严禁使用别名 (alias)。 |
nodes.config.filter.items.items.op | string | 是 | 比较操作符。❗ 必须使用 enum 中的精确值:不等于是 ne(不是 neq/not_eq)、大于等于是 gte(不是 ge/geq)、小于等于是 lte(不是 le/leq)。empty/not_empty 不消费 right。 可选值: "eq""ne""gt""gte""lt""lte""in""not_in""empty""not_empty""contains""not_contains""starts_with""not_starts_with""ends_with""not_ends_with""all_contains""belongs""not_belongs""subordinate_contains""not_subordinate_contains""checked""unchecked""title_eq""title_ne" |
nodes.config.filter.items.items.right | object | 否 | 右侧值。允许 kind=literal / field / systemField / record / template;不要用 kind=empty 表达空判断,empty/not_empty 操作符不传 right。单值传 ValueRef;in/not_in/contains/not_contains 必须传 ValueRef 数组(每项 ValueRef)。 |
nodes.config.filter.items.items.right.kind | string | 是 | 值类型。literal 固定值;field 上游字段;systemField 系统字段;record 上游整条记录;template 模板字符串;empty 显式空值。 可选值: "literal""field""systemField""record""template""empty" |
nodes.config.filter.items.items.right.value | any | 否 | kind=literal 时的固定值(任意 JSON 类型:字符串/数值/布尔/数组/对象/null);kind=template 时的模板字符串,含 $nodeAlias-fieldId$ 占位;人工节点虚拟字段同样写 $approve_step-opinionSummary$ / $approve_step-executorid$,不要写内部后缀;其它 kind 不传。 |
nodes.config.filter.items.items.right.node | object | 否 | kind=field/record 时的上游节点引用。 |
nodes.config.filter.items.items.right.fieldId | string | 否 | kind=field 时的字段 ID;kind=systemField 时的系统字段 key。人工节点虚拟字段使用真实 fieldId,如 opinionSummary / executorid,不要写 opinion / wfcuaids。 ⚠️ 必须使用工作表结构的真实字段 ID,严禁使用别名 (alias)。 |
nodes.config.filter.items.items.ignore_empty | boolean | 否 | 动态值为空时是否跳过。 |
nodes.config.filter.items.items.type | integer | 否 | 左侧字段控件类型,可选;不传由服务端按节点工作表和 fieldId 补齐。 |
nodes.config.filter.items.items.enumDefault | integer | 否 | 左侧字段 enumDefault,可选;不传由服务端按字段元数据补齐。 |
nodes.config.filter.items.left | object | 是 | 左侧字段引用,必填。条件比较的是 left 对应字段;非字段值只能放在 right。 |
nodes.config.filter.items.left.kind | string | 是 | 固定为 field。 可选值: "field" |
nodes.config.filter.items.left.node | object | 是 | 字段所属节点引用。 |
nodes.config.filter.items.left.node.nodeAlias | string | 否 | 节点别名; |
nodes.config.filter.items.left.node.nodeId | string | 否 | 节点 24 位 ID; |
nodes.config.filter.items.left.fieldId | string | 是 | 字段 ID。人工节点虚拟字段使用真实 fieldId,如 opinionSummary / executorid;不要写 opinion / wfcuaids。 ⚠️ 必须使用工作表结构的真实字段 ID,严禁使用别名 (alias)。 |
nodes.config.filter.items.op | string | 是 | 比较操作符。❗ 必须使用 enum 中的精确值:不等于是 ne(不是 neq/not_eq)、大于等于是 gte(不是 ge/geq)、小于等于是 lte(不是 le/leq)。empty/not_empty 不消费 right。 可选值: "eq""ne""gt""gte""lt""lte""in""not_in""empty""not_empty""contains""not_contains""starts_with""not_starts_with""ends_with""not_ends_with""all_contains""belongs""not_belongs""subordinate_contains""not_subordinate_contains""checked""unchecked""title_eq""title_ne" |
nodes.config.filter.items.right | object | 否 | 右侧值。允许 kind=literal / field / systemField / record / template;不要用 kind=empty 表达空判断,empty/not_empty 操作符不传 right。单值传 ValueRef;in/not_in/contains/not_contains 必须传 ValueRef 数组(每项 ValueRef)。 |
nodes.config.filter.items.right.kind | string | 是 | 值类型。literal 固定值;field 上游字段;systemField 系统字段;record 上游整条记录;template 模板字符串;empty 显式空值。 可选值: "literal""field""systemField""record""template""empty" |
nodes.config.filter.items.right.value | any | 否 | kind=literal 时的固定值(任意 JSON 类型:字符串/数值/布尔/数组/对象/null);kind=template 时的模板字符串,含 $nodeAlias-fieldId$ 占位;人工节点虚拟字段同样写 $approve_step-opinionSummary$ / $approve_step-executorid$,不要写内部后缀;其它 kind 不传。 |
nodes.config.filter.items.right.node | object | 否 | kind=field/record 时的上游节点引用。 |
nodes.config.filter.items.right.node.nodeAlias | string | 否 | 节点别名; |
nodes.config.filter.items.right.node.nodeId | string | 否 | 节点 24 位 ID; |
nodes.config.filter.items.right.fieldId | string | 否 | kind=field 时的字段 ID;kind=systemField 时的系统字段 key。人工节点虚拟字段使用真实 fieldId,如 opinionSummary / executorid,不要写 opinion / wfcuaids。 ⚠️ 必须使用工作表结构的真实字段 ID,严禁使用别名 (alias)。 |
nodes.config.filter.items.ignore_empty | boolean | 否 | 动态值为空时是否跳过。 |
nodes.config.filter.items.type | integer | 否 | 左侧字段控件类型,可选;不传由服务端按节点工作表和 fieldId 补齐。 |
nodes.config.filter.items.enumDefault | integer | 否 | 左侧字段 enumDefault,可选;不传由服务端按字段元数据补齐。 |
nodes.config.sort | object[] | 否 | [get_single] [get_multiple] 排序,可选。每项使用 SortSpec。 |
nodes.config.sort.fieldId | string | 是 | 排序字段 ID。 |
nodes.config.sort.order | string | 否 | 排序方向。asc 升序,desc 降序。 可选值: "asc""desc" |
nodes.config.sort.controlType | integer | 否 | 字段类型,可选;用于条件/排序元数据辅助。 |
nodes.config.sort.isAsc | boolean | 否 | 排序方向布尔别名,true=asc,false=desc。 |
nodes.config.sort.controlId | string | 是 | 排序字段 ID 别名。 |
nodes.config.sort.field | string | 是 | 排序字段 ID 别名。 |
nodes.config.sort.field_id | string | 是 | 排序字段 ID 别名。 |
nodes.config.sort.direction | string | 否 | 排序方向别名。asc 升序,desc 降序。 可选值: "asc""desc" |
nodes.config.sort.asc | boolean | 否 | 排序方向布尔别名,true=asc,false=desc。 |
nodes.config.ifEmpty | string | 否 | [get_single] [get_multiple] 找不到记录时的行为;continue 继续,stop 中止流程。 可选值: "continue""stop" |
nodes.config.limit | integer | 否 | [get_multiple] 最大返回条数(默认 50000)。整数;动态值请改用外层 ValueRef 字段。 |
nodes.config.fields | object[] | 否 | [add_record 必填] [update_record 必填] 字段写入列表(必填,至少一项)。 |
nodes.config.fields.fieldId | string | 是 | 目标字段 ID。 ⚠️ 必须使用工作表结构的真实字段 ID,严禁使用别名 (alias)。 |
nodes.config.fields.op | string | 是 | 写入方式;clear 时 value 可省略。 可选值: "set""append""subtract""clear" |
nodes.config.fields.value | object | 否 | 目标值。允许 kind=literal / field / systemField / template / empty;目标字段是关联记录字段时可用 kind=record。op=clear 时 value 可省略;其它 op 必填。不要写 kind=triggerUser;字段赋值里要写触发人时用 {kind:'systemField', fieldId:'triggeraid'}。 |
nodes.config.fields.value.kind | string | 是 | 值类型。literal 固定值;field 上游字段;systemField 系统字段;record 上游整条记录;template 模板字符串;empty 显式空值。 可选值: "literal""field""systemField""record""template""empty" |
nodes.config.fields.value.value | any | 否 | kind=literal 时的固定值(任意 JSON 类型:字符串/数值/布尔/数组/对象/null);kind=template 时的模板字符串,含 $nodeAlias-fieldId$ 占位;人工节点虚拟字段同样写 $approve_step-opinionSummary$ / $approve_step-executorid$,不要写内部后缀;其它 kind 不传。 |
nodes.config.fields.value.node | object | 否 | kind=field/record 时的上游节点引用。 |
nodes.config.fields.value.node.nodeAlias | string | 否 | 节点别名; |
nodes.config.fields.value.node.nodeId | string | 否 | 节点 24 位 ID; |
nodes.config.fields.value.fieldId | string | 否 | kind=field 时的字段 ID;kind=systemField 时的系统字段 key。人工节点虚拟字段使用真实 fieldId,如 opinionSummary / executorid,不要写 opinion / wfcuaids。 ⚠️ 必须使用工作表结构的真实字段 ID,严禁使用别名 (alias)。 |
nodes.config.fields.type | integer | 否 | 字段控件类型,可选。 |
nodes.config.fields.require | boolean | 否 | 是否必填。 |
nodes.config.fields.hide | boolean | 否 | 是否隐藏。 |
nodes.config.fields.subFields | object[] | 否 | 子表行字段。仅子表使用。 |
nodes.config.fields.enumDefault | integer | 否 | 选项字段默认 enum 值,可选。 |
nodes.config.fields.allowAddOptions | boolean | 否 | 选项字段是否允许新增项,可选。 |
nodes.config.fields.richText | boolean | 否 | 文本字段是否富文本,可选。 |
nodes.config.fields.dataSource | string | 否 | 字段数据源标识,可选。 |
nodes.config.target | object | 否 | [update_record 必填] [delete_record 必填] [rollup 必填] [cc 必填] [approval_block 必填] [approve 必填] [fill_in 必填] [sub_process 必填] 目标记录引用,必填。只允许 kind=record,例如 {kind:'record', node:{nodeAlias:...}};不能传 field/literal/template/systemField/empty。 |
nodes.config.target.kind | string | 是 | 固定为 record。 可选值: "record" |
nodes.config.target.node | object | 是 | 提供记录或记录集的节点引用。单条记录通常来自 trigger/get_single/approval_start/sub_trigger;多条记录通常来自 get_multiple。 |
nodes.config.target.node.nodeAlias | string | 否 | 节点别名; |
nodes.config.target.node.nodeId | string | 否 | 节点 24 位 ID; |
nodes.config.permanent | boolean | 否 | [delete_record] true 物理删除(不可恢复);false 逻辑删除,默认 false。 |
nodes.config.branchType | string | 否 | [branch 必填] 分支类型。condition:按条件分支(需配 paths[].filter 和 mode);approval_result:审批结果分支(接在 approve 节点之后,paths[].result 用 pass/overrule)。 可选值: "condition""approval_result" |
nodes.config.mode | string | 否 | [branch] [delay 必填] [approve] branchType=condition 时必填。firstMatch 按 paths 顺序匹配,命中第一条即终止;allMatch 所有命中分支都执行。approval_result/query_result 类型不需要此字段。 可选值: "firstMatch""allMatch" |
nodes.config.paths | object[] | 否 | [branch 必填] 分支路径列表,至少 2 条;filter=null 的兜底路径建议放最后。 |
nodes.config.paths.alias | string | 是 | 分支路径别名,流程内唯一;其它节点用 parentNode={nodeAlias:此 alias} 挂入该路径。 |
nodes.config.paths.name | string | 是 | 分支显示名。 |
nodes.config.paths.filter | object | null | 否 | branchType=condition 时的命中条件;null 表示兜底分支。approval_result/query_result 类型不需要此字段。 |
nodes.config.paths.filter.logic | string | 是 | 当前层子项的组合方式:and=全部满足,or=任一满足。 可选值: "and""or" |
nodes.config.paths.filter.items | any[] | 是 | 本层子项列表,每项可为嵌套 Filter 或单条件 Condition。 |
nodes.config.paths.filter.items.logic | string | 是 | 当前层子项的组合方式:and=全部满足,or=任一满足。 可选值: "and""or" |
nodes.config.paths.filter.items.items | any[] | 是 | 本层子项列表,每项可为嵌套 Filter 或单条件 Condition。 |
nodes.config.paths.filter.items.items.logic | string | 是 | 当前层子项的组合方式:and=全部满足,or=任一满足。 可选值: "and""or" |
nodes.config.paths.filter.items.items.items | any[] | 是 | 本层子项列表,每项可为嵌套 Filter 或单条件 Condition。 |
nodes.config.paths.filter.items.items.left | object | 是 | 左侧字段引用,必填。条件比较的是 left 对应字段;非字段值只能放在 right。 |
nodes.config.paths.filter.items.items.op | string | 是 | 比较操作符。❗ 必须使用 enum 中的精确值:不等于是 ne(不是 neq/not_eq)、大于等于是 gte(不是 ge/geq)、小于等于是 lte(不是 le/leq)。empty/not_empty 不消费 right。 可选值: "eq""ne""gt""gte""lt""lte""in""not_in""empty""not_empty""contains""not_contains""starts_with""not_starts_with""ends_with""not_ends_with""all_contains""belongs""not_belongs""subordinate_contains""not_subordinate_contains""checked""unchecked""title_eq""title_ne" |
nodes.config.paths.filter.items.items.right | object | 否 | 右侧值。允许 kind=literal / field / systemField / record / template;不要用 kind=empty 表达空判断,empty/not_empty 操作符不传 right。单值传 ValueRef;in/not_in/contains/not_contains 必须传 ValueRef 数组(每项 ValueRef)。 |
nodes.config.paths.filter.items.items.ignore_empty | boolean | 否 | 动态值为空时是否跳过。 |
nodes.config.paths.filter.items.items.type | integer | 否 | 左侧字段控件类型,可选;不传由服务端按节点工作表和 fieldId 补齐。 |
nodes.config.paths.filter.items.items.enumDefault | integer | 否 | 左侧字段 enumDefault,可选;不传由服务端按字段元数据补齐。 |
nodes.config.paths.filter.items.left | object | 是 | 左侧字段引用,必填。条件比较的是 left 对应字段;非字段值只能放在 right。 |
nodes.config.paths.filter.items.left.kind | string | 是 | 固定为 field。 可选值: "field" |
nodes.config.paths.filter.items.left.node | object | 是 | 字段所属节点引用。 |
nodes.config.paths.filter.items.left.fieldId | string | 是 | 字段 ID。人工节点虚拟字段使用真实 fieldId,如 opinionSummary / executorid;不要写 opinion / wfcuaids。 ⚠️ 必须使用工作表结构的真实字段 ID,严禁使用别名 (alias)。 |
nodes.config.paths.filter.items.op | string | 是 | 比较操作符。❗ 必须使用 enum 中的精确值:不等于是 ne(不是 neq/not_eq)、大于等于是 gte(不是 ge/geq)、小于等于是 lte(不是 le/leq)。empty/not_empty 不消费 right。 可选值: "eq""ne""gt""gte""lt""lte""in""not_in""empty""not_empty""contains""not_contains""starts_with""not_starts_with""ends_with""not_ends_with""all_contains""belongs""not_belongs""subordinate_contains""not_subordinate_contains""checked""unchecked""title_eq""title_ne" |
nodes.config.paths.filter.items.right | object | 否 | 右侧值。允许 kind=literal / field / systemField / record / template;不要用 kind=empty 表达空判断,empty/not_empty 操作符不传 right。单值传 ValueRef;in/not_in/contains/not_contains 必须传 ValueRef 数组(每项 ValueRef)。 |
nodes.config.paths.filter.items.right.kind | string | 是 | 值类型。literal 固定值;field 上游字段;systemField 系统字段;record 上游整条记录;template 模板字符串;empty 显式空值。 可选值: "literal""field""systemField""record""template""empty" |
nodes.config.paths.filter.items.right.value | any | 否 | kind=literal 时的固定值(任意 JSON 类型:字符串/数值/布尔/数组/对象/null);kind=template 时的模板字符串,含 $nodeAlias-fieldId$ 占位;人工节点虚拟字段同样写 $approve_step-opinionSummary$ / $approve_step-executorid$,不要写内部后缀;其它 kind 不传。 |
nodes.config.paths.filter.items.right.node | object | 否 | kind=field/record 时的上游节点引用。 |
nodes.config.paths.filter.items.right.fieldId | string | 否 | kind=field 时的字段 ID;kind=systemField 时的系统字段 key。人工节点虚拟字段使用真实 fieldId,如 opinionSummary / executorid,不要写 opinion / wfcuaids。 ⚠️ 必须使用工作表结构的真实字段 ID,严禁使用别名 (alias)。 |
nodes.config.paths.filter.items.ignore_empty | boolean | 否 | 动态值为空时是否跳过。 |
nodes.config.paths.filter.items.type | integer | 否 | 左侧字段控件类型,可选;不传由服务端按节点工作表和 fieldId 补齐。 |
nodes.config.paths.filter.items.enumDefault | integer | 否 | 左侧字段 enumDefault,可选;不传由服务端按字段元数据补齐。 |
nodes.config.paths.result | string | 否 | branchType=approval_result 时必填。pass(通过)或 overrule(驳回)。condition 类型不需要此字段。 可选值: "pass""overrule" |
nodes.config.method | string | 否 | [rollup 必填] 汇总方法。count 计数无需 fieldId;sum/avg/min/max 必填 fieldId。rollup 的输出字段 ID 固定为 number_fx_id,下游引用汇总结果时写 $rollupNodeAlias-number_fx_id$。 可选值: "count""sum""avg""min""max" |
nodes.config.fieldId | string | 否 | [rollup] 汇总字段 ID(method != count 时必填)。 |
nodes.config.expression | string | 否 | [compute] computeType=number 时必填。数值公式表达式,只支持 +,-,*,/,() 运算,占位符用 $nodeAlias-fieldId$。compute 数值结果的输出字段 ID 固定为 number_fx_id,下游引用时写 $computeNodeAlias-number_fx_id$。 |
nodes.config.precision | integer | 否 | [compute] computeType=number 时可选,小数位数。 |
nodes.config.nullZero | boolean | 否 | [compute] computeType=number 时可选,空值是否按 0 处理。 |
nodes.config.computeType | string | 否 | [compute] 计算类型。number(默认)数值公式;dateDiff 日期差值;dateOffset 日期偏移。不传默认 number。同一个 config 只写当前 computeType 对应的字段。 可选值: "number""dateDiff""dateOffset" |
nodes.config.startTime | object | 否 | [compute] computeType=dateDiff 时必填。起始时间,使用 ValueRef 引用日期字段。 |
nodes.config.startTime.kind | string | 是 | 值类型。literal 固定值;field 上游字段;systemField 系统字段;record 上游整条记录;template 模板字符串;empty 显式空值。 可选值: "literal""field""systemField""record""template""empty" |
nodes.config.startTime.value | any | 否 | kind=literal 时的固定值(任意 JSON 类型:字符串/数值/布尔/数组/对象/null);kind=template 时的模板字符串,含 $nodeAlias-fieldId$ 占位;人工节点虚拟字段同样写 $approve_step-opinionSummary$ / $approve_step-executorid$,不要写内部后缀;其它 kind 不传。 |
nodes.config.startTime.node | object | 否 | kind=field/record 时的上游节点引用。 |
nodes.config.startTime.node.nodeAlias | string | 否 | 节点别名; |
nodes.config.startTime.node.nodeId | string | 否 | 节点 24 位 ID; |
nodes.config.startTime.fieldId | string | 否 | kind=field 时的字段 ID;kind=systemField 时的系统字段 key。人工节点虚拟字段使用真实 fieldId,如 opinionSummary / executorid,不要写 opinion / wfcuaids。 ⚠️ 必须使用工作表结构的真实字段 ID,严禁使用别名 (alias)。 |
nodes.config.endTime | object | 否 | [compute] computeType=dateDiff 时必填。结束时间,使用 ValueRef 引用日期字段;当前时间写 { kind: 'systemField', fieldId: 'nowTime' }。 |
nodes.config.endTime.kind | string | 是 | 值类型。literal 固定值;field 上游字段;systemField 系统字段;record 上游整条记录;template 模板字符串;empty 显式空值。 可选值: "literal""field""systemField""record""template""empty" |
nodes.config.endTime.value | any | 否 | kind=literal 时的固定值(任意 JSON 类型:字符串/数值/布尔/数组/对象/null);kind=template 时的模板字符串,含 $nodeAlias-fieldId$ 占位;人工节点虚拟字段同样写 $approve_step-opinionSummary$ / $approve_step-executorid$,不要写内部后缀;其它 kind 不传。 |
nodes.config.endTime.node | object | 否 | kind=field/record 时的上游节点引用。 |
nodes.config.endTime.node.nodeAlias | string | 否 | 节点别名; |
nodes.config.endTime.node.nodeId | string | 否 | 节点 24 位 ID; |
nodes.config.endTime.fieldId | string | 否 | kind=field 时的字段 ID;kind=systemField 时的系统字段 key。人工节点虚拟字段使用真实 fieldId,如 opinionSummary / executorid,不要写 opinion / wfcuaids。 ⚠️ 必须使用工作表结构的真实字段 ID,严禁使用别名 (alias)。 |
nodes.config.outputUnit | string | 否 | [compute] computeType=dateDiff 时必填。输出单位:Y=年、M=月、d=天、h=小时、m=分钟。 可选值: "Y""M""d""h""m" |
nodes.config.inputTime | object | 否 | [compute] computeType=dateOffset 时必填。输入时间,使用 ValueRef 引用日期字段。 |
nodes.config.inputTime.kind | string | 是 | 值类型。literal 固定值;field 上游字段;systemField 系统字段;record 上游整条记录;template 模板字符串;empty 显式空值。 可选值: "literal""field""systemField""record""template""empty" |
nodes.config.inputTime.value | any | 否 | kind=literal 时的固定值(任意 JSON 类型:字符串/数值/布尔/数组/对象/null);kind=template 时的模板字符串,含 $nodeAlias-fieldId$ 占位;人工节点虚拟字段同样写 $approve_step-opinionSummary$ / $approve_step-executorid$,不要写内部后缀;其它 kind 不传。 |
nodes.config.inputTime.node | object | 否 | kind=field/record 时的上游节点引用。 |
nodes.config.inputTime.node.nodeAlias | string | 否 | 节点别名; |
nodes.config.inputTime.node.nodeId | string | 否 | 节点 24 位 ID; |
nodes.config.inputTime.fieldId | string | 否 | kind=field 时的字段 ID;kind=systemField 时的系统字段 key。人工节点虚拟字段使用真实 fieldId,如 opinionSummary / executorid,不要写 opinion / wfcuaids。 ⚠️ 必须使用工作表结构的真实字段 ID,严禁使用别名 (alias)。 |
nodes.config.offsetExpression | string | 否 | [compute] computeType=dateOffset 时必填。偏移表达式,由片段组成:+/-、整数或动态字段、单位。单位大小写敏感:M=月、d=天、h=小时、m=分钟。示例:+8h+1m、+1M-12d、-1d+8h、+$calc_duration-number_fx_id$h。日期偏移结果的输出字段 ID 固定为 date_fx_id,下游引用时写 $computeNodeAlias-date_fx_id$。 |
nodes.config.duration | object | 否 | [delay] mode=duration 时必填。 |
nodes.config.duration.value | number | 是 | 数值。 |
nodes.config.duration.unit | string | 是 | 时间单位。 可选值: "minute""hour""day" |
nodes.config.time | object | 否 | [delay] mode=until_time 时必填。允许 kind=literal / field / systemField / template;不要用 record/empty。literal 示例:{kind:'literal', value:'2026-06-01T09:00:00'}。 |
nodes.config.time.kind | string | 是 | 值类型。literal 固定值;field 上游字段;systemField 系统字段;record 上游整条记录;template 模板字符串;empty 显式空值。 可选值: "literal""field""systemField""record""template""empty" |
nodes.config.time.value | any | 否 | kind=literal 时的固定值(任意 JSON 类型:字符串/数值/布尔/数组/对象/null);kind=template 时的模板字符串,含 $nodeAlias-fieldId$ 占位;人工节点虚拟字段同样写 $approve_step-opinionSummary$ / $approve_step-executorid$,不要写内部后缀;其它 kind 不传。 |
nodes.config.time.node | object | 否 | kind=field/record 时的上游节点引用。 |
nodes.config.time.node.nodeAlias | string | 否 | 节点别名; |
nodes.config.time.node.nodeId | string | 否 | 节点 24 位 ID; |
nodes.config.time.fieldId | string | 否 | kind=field 时的字段 ID;kind=systemField 时的系统字段 key。人工节点虚拟字段使用真实 fieldId,如 opinionSummary / executorid,不要写 opinion / wfcuaids。 ⚠️ 必须使用工作表结构的真实字段 ID,严禁使用别名 (alias)。 |
nodes.config.recipients | object[] | 否 | [send_internal_notice 必填] [cc 必填] [send_email 必填] 通知收件人列表,必填。 |
nodes.config.recipients.kind | string | 是 | 身份/语义。triggerUser 只用于人员配置;字段赋值触发人请用 ValueRef systemField: triggeraid。 可选值: "user""role""department""job""orgRole""field""triggerUser" |
nodes.config.recipients.userId | string | 否 | kind=user 时必填。 |
nodes.config.recipients.roleId | string | 否 | kind=role 时必填。 |
nodes.config.recipients.departmentId | string | 否 | kind=department 时必填。 |
nodes.config.recipients.includeChildren | boolean | 否 | kind=department 时是否包含下级,默认 false。 |
nodes.config.recipients.jobId | string | 否 | kind=job 时必填。 |
nodes.config.recipients.orgRoleId | string | 否 | kind=orgRole 时必填。 |
nodes.config.recipients.node | object | 否 | kind=field 时必填,引用上游节点。 |
nodes.config.recipients.node.nodeAlias | string | 否 | 节点别名; |
nodes.config.recipients.node.nodeId | string | 否 | 节点 24 位 ID; |
nodes.config.recipients.fieldId | string | 否 | kind=field 时必填,对应人员字段 ID。人工节点实际执行人用 executorid,所有审批人/填写人/通知人用 approveid/editid/sendid;不要写 wfcuaids。 |
nodes.config.title | string | 否 | [send_internal_notice] 通知标题,可选。 |
nodes.config.content | object | 否 | [send_internal_notice 必填] [cc 必填] 通知内容,必填。⚠️ 必须用 kind=template,通过 $nodeAlias-fieldId$ 嵌入关键业务数据(如人名、编号、时间、状态等),让收件人无需登录即可了解完整上下文,禁止只写笼统描述。 |
nodes.config.content.kind | string | 是 | 值类型。literal 固定值;field 上游字段;systemField 系统字段;record 上游整条记录;template 模板字符串;empty 显式空值。 可选值: "literal""field""systemField""record""template""empty" |
nodes.config.content.value | any | 否 | kind=literal 时的固定值(任意 JSON 类型:字符串/数值/布尔/数组/对象/null);kind=template 时的模板字符串,含 $nodeAlias-fieldId$ 占位;人工节点虚拟字段同样写 $approve_step-opinionSummary$ / $approve_step-executorid$,不要写内部后缀;其它 kind 不传。 |
nodes.config.content.node | object | 否 | kind=field/record 时的上游节点引用。 |
nodes.config.content.node.nodeAlias | string | 否 | 节点别名; |
nodes.config.content.node.nodeId | string | 否 | 节点 24 位 ID; |
nodes.config.content.fieldId | string | 否 | kind=field 时的字段 ID;kind=systemField 时的系统字段 key。人工节点虚拟字段使用真实 fieldId,如 opinionSummary / executorid,不要写 opinion / wfcuaids。 ⚠️ 必须使用工作表结构的真实字段 ID,严禁使用别名 (alias)。 |
nodes.config.viewId | string | 否 | [cc 必填] 记录使用的视图 ID。 |
nodes.config.showRecordTitle | boolean | 否 | [cc] 是否显示记录标题。 |
nodes.config.cc | object[] | 否 | [send_email] 抄送人列表,可选。 |
nodes.config.cc.kind | string | 是 | 身份/语义。triggerUser 只用于人员配置;字段赋值触发人请用 ValueRef systemField: triggeraid。 可选值: "user""role""department""job""orgRole""field""triggerUser" |
nodes.config.cc.userId | string | 否 | kind=user 时必填。 |
nodes.config.cc.roleId | string | 否 | kind=role 时必填。 |
nodes.config.cc.departmentId | string | 否 | kind=department 时必填。 |
nodes.config.cc.includeChildren | boolean | 否 | kind=department 时是否包含下级,默认 false。 |
nodes.config.cc.jobId | string | 否 | kind=job 时必填。 |
nodes.config.cc.orgRoleId | string | 否 | kind=orgRole 时必填。 |
nodes.config.cc.node | object | 否 | kind=field 时必填,引用上游节点。 |
nodes.config.cc.node.nodeAlias | string | 否 | 节点别名; |
nodes.config.cc.node.nodeId | string | 否 | 节点 24 位 ID; |
nodes.config.cc.fieldId | string | 否 | kind=field 时必填,对应人员字段 ID。人工节点实际执行人用 executorid,所有审批人/填写人/通知人用 approveid/editid/sendid;不要写 wfcuaids。 |
nodes.config.subject | object | 否 | [send_email 必填] 邮件主题。允许 kind=literal / field / systemField / template;不要用 record/empty。 |
nodes.config.subject.kind | string | 是 | 值类型。literal 固定值;field 上游字段;systemField 系统字段;record 上游整条记录;template 模板字符串;empty 显式空值。 可选值: "literal""field""systemField""record""template""empty" |
nodes.config.subject.value | any | 否 | kind=literal 时的固定值(任意 JSON 类型:字符串/数值/布尔/数组/对象/null);kind=template 时的模板字符串,含 $nodeAlias-fieldId$ 占位;人工节点虚拟字段同样写 $approve_step-opinionSummary$ / $approve_step-executorid$,不要写内部后缀;其它 kind 不传。 |
nodes.config.subject.node | object | 否 | kind=field/record 时的上游节点引用。 |
nodes.config.subject.node.nodeAlias | string | 否 | 节点别名; |
nodes.config.subject.node.nodeId | string | 否 | 节点 24 位 ID; |
nodes.config.subject.fieldId | string | 否 | kind=field 时的字段 ID;kind=systemField 时的系统字段 key。人工节点虚拟字段使用真实 fieldId,如 opinionSummary / executorid,不要写 opinion / wfcuaids。 ⚠️ 必须使用工作表结构的真实字段 ID,严禁使用别名 (alias)。 |
nodes.config.body | object | 否 | [send_email 必填] 邮件正文。⚠️ 必须用 kind=template,通过 $nodeAlias-fieldId$ 嵌入关键业务数据(如人名、编号、时间、状态等),让收件人无需登录即可了解完整上下文。推荐 bodyType=html 配合 HTML 标签排版,禁止只写笼统描述。 |
nodes.config.body.kind | string | 是 | 值类型。literal 固定值;field 上游字段;systemField 系统字段;record 上游整条记录;template 模板字符串;empty 显式空值。 可选值: "literal""field""systemField""record""template""empty" |
nodes.config.body.value | any | 否 | kind=literal 时的固定值(任意 JSON 类型:字符串/数值/布尔/数组/对象/null);kind=template 时的模板字符串,含 $nodeAlias-fieldId$ 占位;人工节点虚拟字段同样写 $approve_step-opinionSummary$ / $approve_step-executorid$,不要写内部后缀;其它 kind 不传。 |
nodes.config.body.node | object | 否 | kind=field/record 时的上游节点引用。 |
nodes.config.body.node.nodeAlias | string | 否 | 节点别名; |
nodes.config.body.node.nodeId | string | 否 | 节点 24 位 ID; |
nodes.config.body.fieldId | string | 否 | kind=field 时的字段 ID;kind=systemField 时的系统字段 key。人工节点虚拟字段使用真实 fieldId,如 opinionSummary / executorid,不要写 opinion / wfcuaids。 ⚠️ 必须使用工作表结构的真实字段 ID,严禁使用别名 (alias)。 |
nodes.config.bodyType | string | 否 | [send_email] 正文类型,默认 plain。 可选值: "plain""html" |
nodes.config.attachments | object[] | 否 | [send_email] 附件列表,可选。 |
nodes.config.attachments.name | string | 否 | 附件展示名称。 |
nodes.config.attachments.url | string | 否 | 附件下载 URL,可选。 |
nodes.config.attachments.value | object | 否 | 附件值引用,可选。允许 kind=field 指向上游附件字段,或 kind=literal 传附件对象/数组;不要用 record/systemField/template/empty。 |
nodes.config.attachments.value.kind | string | 是 | 值类型。literal 固定值;field 上游字段;systemField 系统字段;record 上游整条记录;template 模板字符串;empty 显式空值。 可选值: "literal""field""systemField""record""template""empty" |
nodes.config.attachments.value.value | any | 否 | kind=literal 时的固定值(任意 JSON 类型:字符串/数值/布尔/数组/对象/null);kind=template 时的模板字符串,含 $nodeAlias-fieldId$ 占位;人工节点虚拟字段同样写 $approve_step-opinionSummary$ / $approve_step-executorid$,不要写内部后缀;其它 kind 不传。 |
nodes.config.attachments.value.node | object | 否 | kind=field/record 时的上游节点引用。 |
nodes.config.attachments.value.node.nodeAlias | string | 否 | 节点别名; |
nodes.config.attachments.value.node.nodeId | string | 否 | 节点 24 位 ID; |
nodes.config.attachments.value.fieldId | string | 否 | kind=field 时的字段 ID;kind=systemField 时的系统字段 key。人工节点虚拟字段使用真实 fieldId,如 opinionSummary / executorid,不要写 opinion / wfcuaids。 ⚠️ 必须使用工作表结构的真实字段 ID,严禁使用别名 (alias)。 |
nodes.config.process | object | 否 | [approval_block 必填] [sub_process 必填] 内部审批流程声明,必填。mode=create 时服务端创建审批流程;use_existing 引用已有 processId;copy 从 templateProcessId 复制。 |
nodes.config.process.mode | string | 是 | 审批流程声明方式。create 新建;use_existing 引用已有;copy 从模板复制。 可选值: "create""use_existing""copy" |
nodes.config.process.processId | string | 否 | mode=use_existing 时必填。 |
nodes.config.process.templateProcessId | string | 否 | mode=copy 时必填。 |
nodes.config.process.name | string | 否 | 审批流程名称(mode=create 时使用)。 |
nodes.config.process.start | object | 否 | 审批开始节点配置(ApprovalStartConfig)。开始节点别名固定为 approval_start。 |
nodes.config.process.start.worksheetId | string | 否 | 审批起始工作表 ID,可选;不传时由 config.target 对应节点推断。 |
nodes.config.process.start.processConfig | object | 否 | |
nodes.config.process.start.updateData | object[] | 否 | |
nodes.config.process.start.updateData.fieldId | string | 是 | 目标字段 ID。 ⚠️ 必须使用工作表结构的真实字段 ID,严禁使用别名 (alias)。 |
nodes.config.process.start.updateData.op | string | 是 | 写入方式;clear 时 value 可省略。 可选值: "set""append""subtract""clear" |
nodes.config.process.start.updateData.value | object | 否 | 目标值。允许 kind=literal / field / systemField / template / empty;目标字段是关联记录字段时可用 kind=record。op=clear 时 value 可省略;其它 op 必填。不要写 kind=triggerUser;字段赋值里要写触发人时用 {kind:'systemField', fieldId:'triggeraid'}。 |
nodes.config.process.start.updateData.value.kind | string | 是 | 值类型。literal 固定值;field 上游字段;systemField 系统字段;record 上游整条记录;template 模板字符串;empty 显式空值。 可选值: "literal""field""systemField""record""template""empty" |
nodes.config.process.start.updateData.value.value | any | 否 | kind=literal 时的固定值(任意 JSON 类型:字符串/数值/布尔/数组/对象/null);kind=template 时的模板字符串,含 $nodeAlias-fieldId$ 占位;人工节点虚拟字段同样写 $approve_step-opinionSummary$ / $approve_step-executorid$,不要写内部后缀;其它 kind 不传。 |
nodes.config.process.start.updateData.value.node | object | 否 | kind=field/record 时的上游节点引用。 |
nodes.config.process.start.updateData.value.fieldId | string | 否 | kind=field 时的字段 ID;kind=systemField 时的系统字段 key。人工节点虚拟字段使用真实 fieldId,如 opinionSummary / executorid,不要写 opinion / wfcuaids。 ⚠️ 必须使用工作表结构的真实字段 ID,严禁使用别名 (alias)。 |
nodes.config.process.start.updateData.type | integer | 否 | 字段控件类型,可选。 |
nodes.config.process.start.updateData.require | boolean | 否 | 是否必填。 |
nodes.config.process.start.updateData.hide | boolean | 否 | 是否隐藏。 |
nodes.config.process.start.updateData.subFields | object[] | 否 | 子表行字段。仅子表使用。 |
nodes.config.process.start.updateData.enumDefault | integer | 否 | 选项字段默认 enum 值,可选。 |
nodes.config.process.start.updateData.allowAddOptions | boolean | 否 | 选项字段是否允许新增项,可选。 |
nodes.config.process.start.updateData.richText | boolean | 否 | 文本字段是否富文本,可选。 |
nodes.config.process.start.updateData.dataSource | string | 否 | 字段数据源标识,可选。 |
nodes.config.process.nodes | object[] | 否 | 审批流程内部节点。允许 approve / fill_in / cc 等节点;这些节点引用记录用 {nodeAlias:'approval_start'}。 |
nodes.config.initiators | object[] | 否 | [approval_block 必填] 审批发起人列表;当前 assembler 实际必填。 |
nodes.config.initiators.kind | string | 是 | 身份/语义。triggerUser 只用于人员配置;字段赋值触发人请用 ValueRef systemField: triggeraid。 可选值: "user""role""department""job""orgRole""field""triggerUser" |
nodes.config.initiators.userId | string | 否 | kind=user 时必填。 |
nodes.config.initiators.roleId | string | 否 | kind=role 时必填。 |
nodes.config.initiators.departmentId | string | 否 | kind=department 时必填。 |
nodes.config.initiators.includeChildren | boolean | 否 | kind=department 时是否包含下级,默认 false。 |
nodes.config.initiators.jobId | string | 否 | kind=job 时必填。 |
nodes.config.initiators.orgRoleId | string | 否 | kind=orgRole 时必填。 |
nodes.config.initiators.node | object | 否 | kind=field 时必填,引用上游节点。 |
nodes.config.initiators.node.nodeAlias | string | 否 | 节点别名; |
nodes.config.initiators.node.nodeId | string | 否 | 节点 24 位 ID; |
nodes.config.initiators.fieldId | string | 否 | kind=field 时必填,对应人员字段 ID。人工节点实际执行人用 executorid,所有审批人/填写人/通知人用 approveid/editid/sendid;不要写 wfcuaids。 |
nodes.config.formProperties | object[] | 否 | [approval_block] [approve] [fill_in 必填] 审批开始节点字段权限。 |
nodes.config.formProperties.fieldId | string | 是 | 字段 ID。 |
nodes.config.formProperties.permission | string | 否 | 字段权限。readonly 只读;editable 可编辑;required 必填;hidden 隐藏。 可选值: "readonly""editable""required""hidden" |
nodes.config.formProperties.property | integer | 否 | 落库权限值(1=readonly, 2=editable, 3=required, 4=hidden),与 permission 二选一。 可选值: 1234 |
nodes.config.formProperties.type | integer | 否 | 字段控件类型,可选。 |
nodes.config.formProperties.showInCard | boolean | 否 | 是否在卡片中展示。 |
nodes.config.formProperties.showCard | integer | 否 | |
nodes.config.formProperties.workflow | boolean | 否 | 工作流标记字段,可选。 |
nodes.config.formProperties.allowAdd | string | 否 | 关联字段是否允许新增。 可选值: "1""0" |
nodes.config.formProperties.allowCancel | string | 否 | 关联字段是否允许取消。 可选值: "1""0" |
nodes.config.formProperties.allowEdit | string | 否 | 关联字段是否允许编辑。 可选值: "1""0" |
nodes.config.formProperties.allowExport | string | 否 | 关联字段是否允许导出。 可选值: "1""0" |
nodes.config.formProperties.isdecrypt | string | 否 | 加密字段是否解密展示。 可选值: "1""0" |
nodes.config.formProperties.subFormProperties | object[] | 否 | 子表字段权限,递归 FormProperty。 |
nodes.config.addNotAllowView | boolean | 否 | [approval_block] 审批节点是否禁止查看待办,可选。 |
nodes.config.processConfig | object | 否 | [approval_block] approval_block 对外暴露的审批流程配置,保存到内部审批流程 Process.config。 |
nodes.config.updateData | object[] | 否 | [approval_block] approval_block 对外暴露的审批开始后回写字段,保存到内部审批流程开始节点 updateData。 |
nodes.config.updateData.fieldId | string | 是 | 目标字段 ID。 ⚠️ 必须使用工作表结构的真实字段 ID,严禁使用别名 (alias)。 |
nodes.config.updateData.op | string | 是 | 写入方式;clear 时 value 可省略。 可选值: "set""append""subtract""clear" |
nodes.config.updateData.value | object | 否 | 目标值。允许 kind=literal / field / systemField / template / empty;目标字段是关联记录字段时可用 kind=record。op=clear 时 value 可省略;其它 op 必填。不要写 kind=triggerUser;字段赋值里要写触发人时用 {kind:'systemField', fieldId:'triggeraid'}。 |
nodes.config.updateData.value.kind | string | 是 | 值类型。literal 固定值;field 上游字段;systemField 系统字段;record 上游整条记录;template 模板字符串;empty 显式空值。 可选值: "literal""field""systemField""record""template""empty" |
nodes.config.updateData.value.value | any | 否 | kind=literal 时的固定值(任意 JSON 类型:字符串/数值/布尔/数组/对象/null);kind=template 时的模板字符串,含 $nodeAlias-fieldId$ 占位;人工节点虚拟字段同样写 $approve_step-opinionSummary$ / $approve_step-executorid$,不要写内部后缀;其它 kind 不传。 |
nodes.config.updateData.value.node | object | 否 | kind=field/record 时的上游节点引用。 |
nodes.config.updateData.value.node.nodeAlias | string | 否 | 节点别名; |
nodes.config.updateData.value.node.nodeId | string | 否 | 节点 24 位 ID; |
nodes.config.updateData.value.fieldId | string | 否 | kind=field 时的字段 ID;kind=systemField 时的系统字段 key。人工节点虚拟字段使用真实 fieldId,如 opinionSummary / executorid,不要写 opinion / wfcuaids。 ⚠️ 必须使用工作表结构的真实字段 ID,严禁使用别名 (alias)。 |
nodes.config.updateData.type | integer | 否 | 字段控件类型,可选。 |
nodes.config.updateData.require | boolean | 否 | 是否必填。 |
nodes.config.updateData.hide | boolean | 否 | 是否隐藏。 |
nodes.config.updateData.subFields | object[] | 否 | 子表行字段。仅子表使用。 |
nodes.config.updateData.enumDefault | integer | 否 | 选项字段默认 enum 值,可选。 |
nodes.config.updateData.allowAddOptions | boolean | 否 | 选项字段是否允许新增项,可选。 |
nodes.config.updateData.richText | boolean | 否 | 文本字段是否富文本,可选。 |
nodes.config.updateData.dataSource | string | 否 | 字段数据源标识,可选。 |
nodes.config.approvers | object[] | 否 | [approve 必填] 审批人列表,必填。 |
nodes.config.approvers.kind | string | 是 | 身份/语义。triggerUser 只用于人员配置;字段赋值触发人请用 ValueRef systemField: triggeraid。 可选值: "user""role""department""job""orgRole""field""triggerUser" |
nodes.config.approvers.userId | string | 否 | kind=user 时必填。 |
nodes.config.approvers.roleId | string | 否 | kind=role 时必填。 |
nodes.config.approvers.departmentId | string | 否 | kind=department 时必填。 |
nodes.config.approvers.includeChildren | boolean | 否 | kind=department 时是否包含下级,默认 false。 |
nodes.config.approvers.jobId | string | 否 | kind=job 时必填。 |
nodes.config.approvers.orgRoleId | string | 否 | kind=orgRole 时必填。 |
nodes.config.approvers.node | object | 否 | kind=field 时必填,引用上游节点。 |
nodes.config.approvers.node.nodeAlias | string | 否 | 节点别名; |
nodes.config.approvers.node.nodeId | string | 否 | 节点 24 位 ID; |
nodes.config.approvers.fieldId | string | 否 | kind=field 时必填,对应人员字段 ID。人工节点实际执行人用 executorid,所有审批人/填写人/通知人用 approveid/editid/sendid;不要写 wfcuaids。 |
nodes.config.instruction | string | 否 | [approve] [fill_in] 审批人说明文字。 |
nodes.config.allowReject | boolean | 否 | [approve] 是否允许审批人否决,默认 false。 |
nodes.config.allowTransfer | boolean | 否 | [approve] 是否允许审批人转交他人,默认 false。 |
nodes.config.allowAddApprover | boolean | 否 | [approve] 是否允许审批人加签其他审批人,默认 false。 |
nodes.config.returnTo | string | 否 | [approve] 退回目标。可选 'previous' / 'start' / 节点别名字符串。 |
nodes.config.assignee | object | 否 | [fill_in 必填] 填写人,必填。 |
nodes.config.assignee.kind | string | 是 | 身份/语义。triggerUser 只用于人员配置;字段赋值触发人请用 ValueRef systemField: triggeraid。 可选值: "user""role""department""job""orgRole""field""triggerUser" |
nodes.config.assignee.userId | string | 否 | kind=user 时必填。 |
nodes.config.assignee.roleId | string | 否 | kind=role 时必填。 |
nodes.config.assignee.departmentId | string | 否 | kind=department 时必填。 |
nodes.config.assignee.includeChildren | boolean | 否 | kind=department 时是否包含下级,默认 false。 |
nodes.config.assignee.jobId | string | 否 | kind=job 时必填。 |
nodes.config.assignee.orgRoleId | string | 否 | kind=orgRole 时必填。 |
nodes.config.assignee.node | object | 否 | kind=field 时必填,引用上游节点。 |
nodes.config.assignee.node.nodeAlias | string | 否 | 节点别名; |
nodes.config.assignee.node.nodeId | string | 否 | 节点 24 位 ID; |
nodes.config.assignee.fieldId | string | 否 | kind=field 时必填,对应人员字段 ID。人工节点实际执行人用 executorid,所有审批人/填写人/通知人用 approveid/editid/sendid;不要写 wfcuaids。 |
nodes.config.submitText | string | 否 | [fill_in] 提交按钮文字,可选。 |
nodes.config.execution | object | 否 | [sub_process 必填] 执行方式,必填。 |
nodes.config.execution.mode | string | 是 | once 单次;parallel_each 并行逐条;sequential_each 串行逐条;sequential_each_continue_on_error 串行逐条遇错继续。⚠️ 串行必须写 sequential_each,不要写 serial_each。 可选值: "once""parallel_each""sequential_each""sequential_each_continue_on_error" |
nodes.config.execution.continueAfterComplete | boolean | 是 | 子流程完成后是否继续主流程下游。 |
nodes.config.execution.executeAll | boolean | 否 | 是否全量执行,默认 false。 |
nodes.config.execution.executeAllCount | integer | 否 | 全量执行数量上限。 |
nodes.config.execution.fromTrigger | boolean | 否 | 是否沿用触发器数据,默认 false。 |
nodes.config.language | string | 否 | [code] 执行语言 可选值: "javascript""python" |
nodes.config.inputs | object[] | 否 | [code] 传递给代码块的变量列表,按需定义多个变量名及对应的引用源。 |
nodes.config.inputs.key | string | 是 | 代码内部使用的变量名(在代码中通过 input.[key] 访问),例如:'orderData' |
nodes.config.inputs.value | object | 是 | 变量对应的值引用,推荐使用 kind: 'record' 传递整行,或 field/literal 等 |
nodes.config.inputs.value.kind | string | 是 | 值类型。literal 固定值;field 上游字段;systemField 系统字段;record 上游整条记录;template 模板字符串;empty 显式空值。 可选值: "literal""field""systemField""record""template""empty" |
nodes.config.inputs.value.value | any | 否 | kind=literal 时的固定值(任意 JSON 类型:字符串/数值/布尔/数组/对象/null);kind=template 时的模板字符串,含 $nodeAlias-fieldId$ 占位;人工节点虚拟字段同样写 $approve_step-opinionSummary$ / $approve_step-executorid$,不要写内部后缀;其它 kind 不传。 |
nodes.config.inputs.value.node | object | 否 | kind=field/record 时的上游节点引用。 |
nodes.config.inputs.value.node.nodeAlias | string | 否 | 节点别名; |
nodes.config.inputs.value.node.nodeId | string | 否 | 节点 24 位 ID; |
nodes.config.inputs.value.fieldId | string | 否 | kind=field 时的字段 ID;kind=systemField 时的系统字段 key。人工节点虚拟字段使用真实 fieldId,如 opinionSummary / executorid,不要写 opinion / wfcuaids。 ⚠️ 必须使用工作表结构的真实字段 ID,严禁使用别名 (alias)。 |
nodes.config.code | string | 否 | [code] 可执行的源代码文本。在代码中通过 input 对象获取输入变量,计算结束后必须将结果赋值给全局对象 output,例如:output = { sum: input.a + input.b }; |
nodes.config.auto_retry | boolean | 否 | [code] 代码块整体运行失败时是否自动重试 |
nodes.config.outputs | object[] | 否 | [code] 显式声明代码块向下游节点提供的结构化参数列表 |
nodes.config.outputs.name | string | 是 | 输出参数的名称,此名称必须与代码中赋值给 output 对象的 key 一致 |
nodes.config.outputs.type | string | 是 | 参数在下游节点中所表现的数据类型 可选值: "string""number""boolean""object""array""datetime" |
nodes.config.outputs.reference_value | any | 否 | 参数的参考值(Mock 数据),用于在设计态帮助开发人员或下游节点识别数据样貌 |
响应参数
200调用成功| 名称 | 类型 | 描述 |
|---|---|---|
success | boolean | 是否调用成功 |
data | object | — |
data.createdNodes | object[] | 已创建节点列表;块节点会带内部流程 processId |
data.createdNodes.nodeAlias | string | 节点别名 |
data.createdNodes.nodeId | string | 节点 ID |
data.createdNodes.nodeType | string | 节点类型 |
data.createdNodes.name | string | 节点名称 |
data.createdNodes.prevNode | object | 前置节点引用 |
data.createdNodes.parentNode | object | 父级/分支路径节点引用 |
data.createdNodes.config | object | 节点配置 |
data.updatedNodes | object[] | 被服务端联动更新的节点列表 |
data.updatedNodes.nodeAlias | string | 节点别名 |
data.updatedNodes.nodeId | string | 节点 ID |
data.updatedNodes.nodeType | string | 节点类型 |
data.updatedNodes.name | string | 节点名称 |
data.updatedNodes.prevNode | object | 前置节点引用 |
data.updatedNodes.parentNode | object | 父级/分支路径节点引用 |
data.updatedNodes.config | object | 节点配置 |
error_code | integer | 错误代码 |
error_msg | string | 错误消息 |
curl -X POST "https://example.com/v3/app/workflows/workflow_id/nodes/batch" \ -H "HAP-Appkey: {{HAP-Appkey}}" \ -H "HAP-Sign: {{HAP-Sign}}" \ -H "Content-Type: application/json" \ -d '{ "nodes": [ { "nodeAlias": "string", "nodeType": "get_single", "name": "string", "config": {} } ] }'{ "success": true, "data": { "createdNodes": [ { "nodeAlias": "string", "nodeId": "string", "nodeType": "string", "name": "string", "prevNode": {}, "parentNode": {}, "config": {} } ], "updatedNodes": [ { "nodeAlias": "string", "nodeId": "string", "nodeType": "string", "name": "string", "prevNode": {}, "parentNode": {}, "config": {} } ] }, "error_code": 0, "error_msg": "string"}创建工作流
创建一条工作流(含触发器)。创建成功返回流程 processId。节点创建请使用 batch_create_process_nodes 工具。 触发器说明: • triggerType=worksheet_event 工作表事件;schedule 定时。 • • trigger.config.event 直接用后端落…
删除工作流节点
删除已有工作流中的一个节点。适用于 create_process / batch_create_process_nodes 创建后需要撤销某个业务节点的场景。 语义提醒: • processId 必填,表示目标流程;如果要删除 approval_block / sub_process 内部流程里的节点,传块节点 co…
