跳到主要内容

发起审批流组件

发起审批流组件(Workflow)用于在流程中发起一条指定的审批流。

概述​

发起审批流组件把当前业务数据提交给指定审批流,由审批引擎创建审批实例并推进流程。通常用于「提交后自动送审」「满足条件时发起审批」等场景。

组件需要先选择审批流所属的实体对象,再选择该对象下的审批流。若未选择操作对象,审批流下拉不会加载数据。

配置项​

配置项说明
操作对象审批流所属的实体对象,必填,决定可选的审批流范围
审批流要发起的审批流,必填
输出到最终结果开启后该组件结果作为接口返回值

执行流程​

使用场景​

  • 业务单据提交后自动送审
  • 满足条件时触发多级审批
  • 与审批流联动

下一步​

属性明细​

以下内容面向技术实现与 AI 检索,说明发起审批流组件的节点元数据。

节点元数据​

发起审批流组件由 FlowCmpType.Workflow 标识:

属性名类型含义取值/存储值
typestring组件类型固定为 "Workflow"
MetaObjectIdstring(GUID)审批流所属实体对象缺省取当前接口所属对象
WorkflowIdstring(GUID)要发起的审批流主键审批流主键
IsFinalResultstring(bool)是否输出到最终结果"true" / "false"
orderstring同级排序例:"5"

元数据存储示例​

{
"ID": "workflow1",
"type": "Workflow",
"MetaObjectId": "3f9c0b2e-2d3a-4e6f-9c11-0f7a5b8d2e10",
"WorkflowId": "b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e",
"IsFinalResult": "false",
"order": "5"
}

审批流数据源​

「审批流」下拉通过 POST /api/DataSource/GetMetaWorkflowDataSource 获取,请求时携带所选 metaObjectId;未选操作对象时返回空。

服务端执行逻辑​

发起审批流组件由 WorkflowComponentManager(继承 InterfaceComponentManagerBase)实现,组件类型为 FlowComponentTypeEnum.Workflow。审批实例的创建与推进由审批引擎 IWorkflowApp 负责;审批节点类组件(ApproveStart、ApproveNode、ApproveEnd、ApproveCondition、ApproveAutoHandle)则由 WorkflowComponentManagerBase 的 Verify / Build / Notify 流程处理。

节点 meta 中的所有值均以字符串存储,服务端统一通过 SafeGet("Key") 读取字符串。

执行时机与场景​

流程执行到该节点时,针对上下文中的业务数据逐条发起指定审批流,返回审批实例 Id。常用于「提交后自动送审」「满足条件时发起审批」。

输入参数(meta 键)​

键读取方式含义
WorkflowIdmeta.SafeGet("WorkflowId")要发起的审批流主键,必填
MetaObjectIdmeta.SafeGet("MetaObjectId")审批流所属实体对象(界面用于过滤可选审批流)
IsFinalResultmeta.SafeGet("IsFinalResult")"true" 时写入成功响应
IsDisabledmeta.SafeGet("IsDisabled") == "true"为 true 时跳过本组件

上下文入参(context.DicParam):

键说明
BizDataIds当前操作的业务数据 Id,多个以英文逗号分隔
MetaObjectId业务数据所属对象 Id
WorkflowLaunchUserId审批发起人 Id,为空时审批引擎默认取当前登录人
WorkflowId上游脚本可预设,用于动态覆盖 meta 中的审批流

执行步骤​

  1. 从 meta 读取 WorkflowId,从 DicParam 读取 BizDataIds、MetaObjectId、WorkflowLaunchUserId、WorkflowId。
  2. BizDataIds 为空或存在非 GUID 项时抛出异常。
  3. 若 DicParam 已含 WorkflowId(上游脚本设置),以其覆盖 meta 中的值。
  4. 对每个 bizDataId 调用 IWorkflowApp.LaunchAsync(new WorkflowOperationRequest { WorkflowId, BizDataId, MetaObjectId, LaunchUserId }),收集返回的审批实例 Id。
  5. 写回上下文:context.DicParam["WorkflowId"] = workflowId,context.DicParam["WorkflowDataIds"] = 实例 Id 逗号串。
  6. IsFinalResult = "true" 时 context.Result = ResponseResult.Success()。
  7. 调用 ExecuteNextAsync 继续下游。

输出与上下文​

字段说明
context.DicParam["WorkflowId"]本次实际使用的审批流 Id
context.DicParam["WorkflowDataIds"]新创建的审批实例 Id 集合(逗号分隔)
context.ResultIsFinalResult = "true" 时为 ResponseResult.Success()

上下文参数含义详见 组件上下文。

权限、安全与限制​

  • 批量业务数据会逐条发起审批实例,耗时随数量线性增长。
  • 无审批流 Id 时校验期即报错。
  • 发起人未指定时由审批引擎取当前登录人。

异常与校验​

  • 校验期:WorkflowId 为空抛「流程 Id 未设置」。
  • 执行期:业务数据 Id 缺失或非 GUID 抛异常;审批流不存在由引擎抛出。