如何在APEX Workflows中启动子流程?能否通过API调用实现?
在APEX Workflows中启动子流程与API触发执行方案
一、工作流设计器内启动子流程
虽然每个工作流只能有一个Start元素,但你可以通过子流程调用(Subprocess Call)组件在主流程中触发子流程:
- 在工作流设计器的组件面板中找到
Subprocess Call,拖拽到主流程的合适节点(比如某个任务完成后) - 配置组件属性:选择要调用的目标子流程,设置输入参数映射(将主流程变量传递给子流程)
- 主流程执行到该组件时,会自动启动对应的子流程实例,并维护父子流程的关联关系
二、API编程方式启动工作流执行
完全可以通过API触发工作流(包括子流程),Oracle APEX提供了APEX_WORKFLOW包,类似APEX_APPROVAL的使用方式,核心是START_WORKFLOW过程:
示例代码
DECLARE l_instance_id NUMBER; BEGIN -- 启动指定子流程实例 l_instance_id := APEX_WORKFLOW.START_WORKFLOW( p_workflow_name => 'EMP_ONBOARDING_SUBFLOW', -- 替换为你的子流程名称 p_workflow_version => NULL, -- 传入NULL将使用最新版本的工作流 p_initiator => 'JOHN_DOE', -- 启动工作流的用户 p_parameters => apex_t_varchar2( 'EMP_ID:12345', 'DEPT:ENGINEERING' ) -- 子流程所需的输入参数,格式为"参数名:值" ); DBMS_OUTPUT.PUT_LINE('子流程实例已启动,ID: ' || l_instance_id); END; /
关键注意事项
- 调用用户需要拥有
APEX_WORKFLOW_USER角色或对应的工作流操作权限 - 输入参数必须与目标子流程定义的输入参数匹配,否则会触发参数校验错误
- 可以使用
APEX_WORKFLOW.GET_WORKFLOW_INSTANCE(p_instance_id => l_instance_id)查询子流程的执行状态
内容的提问来源于stack exchange,提问作者Chadmerdinger
相关产品推荐
相关产品推荐

