前言
APEX 23.2引入了工作流作为本机组件,专门用于建模和执行业务流程。APEX 24.2引入了多项增强功能,例如运行时工作流程图的可用性、存档/清除增强功能等。对于刚接触APEX工作流程的用户,在继续阅读此博客之前,可以先阅读以下介绍APEX工作流程概念的博客:
为什么要在Workflow中使用工作流?
允许从一个Workflow工作流调用另一个Workflow工作流有很多好处。
- 可管理性 - 将复杂的业务流程分解为更小的、可管理的块,这些块可以从父工作流程中调用,从而保持流程干净且易于理解。员工入职是一个很好的例子,其中主工作流程可以由较小的不同工作流程组成,例如采购和申请、人力资源任务、部门任务、培训等。
- 可重用性 - 常见任务可以组合到一个工作流程中,该工作流程可以由其他工作流程重用。典型的例子是个人的信用价值计算。这样的工作流程可以被不同的工作流程重复使用,例如 a) 住院流程、b) 住房贷款审批流程、c) 国际旅行审批等等。
APEX - 调用工作流程活动
APEX 24.2 版本引入了“调用工作流”活动,一种可以在工作流中用于调用不同工作流的特殊活动。
如下图所示,“调用工作流活动”与其他活动一起出现在“工作流设计器”的“图表生成器”窗格底部的“活动选项板”中,并且可以拖放到工作流图表中。
下图显示了如何作为笔记本电脑请求工作流的一部分来调用预算审批工作流以及可用于调用工作流活动的不同设置。
家长工作流程指导
请注意左窗格树区域中展开的“调用预算审批”活动的参数。员工ID和项目是从笔记本电脑请求工作流程传递到预算审批工作流程的输入。状态是预算审批工作流程传递回笔记本电脑审批工作流程的输出。根据通过的状态,笔记本电脑请求会被批准或拒绝。
右侧窗格显示属性编辑器中的调用工作流设置:
工作流程定义:这是一个下拉列表,可以在其中选择要调用的工作流程。在此示例中,选择了预算审批工作流程。如果您尝试选择与当前工作流程相同的工作流程,或者尝试选择作为当前工作流程的父工作流程,则会引发验证错误。这消除了业务流程中引入循环依赖的风险。
发起者项目:您可以选择指定所调用工作流发起者的父工作流变量。如果留空,父工作流的启动器将自动成为被调用工作流的启动器。
详细信息主键项:如果调用的工作流指定了其他详细信息,则此项目指定与调用的工作流关联的其他详细信息记录的主键值。在此示例中,预算审批工作流程(如图 2 所示)将表EBA_DEMO_APPR_BUDGET指定为附加详细信息,并将EMPLOYEE_ID作为主键列。因此,图 1 中的详细信息主键指向唯一标识EBA_DEMO_APPR_BUDGET表中的行的 Employee ID 值。
工作流ID项:可以选择一个工作流变量来存储调用的工作流实例 ID 的值。
接下来的两个设置在“调用工作流”活动的上下文中特别重要
等待完成:此开关确定父工作流是否将等待所调用的工作流完成,然后再进行到下一个活动。在我们的示例中,如图 I 所示,“等待完成”开关处于打开状态。这意味着需要先完成预算审批工作流程,然后才能继续处理笔记本电脑请求工作流程。当这个开关关闭时,它就是一个即发即忘的调用。父工作流仅调用指定的工作流并继续执行下一个活动。调用的工作流和父工作流执行在此时分叉,并且从此时开始两个流之间不存在依赖关系。这个开关是打开还是关闭完全取决于业务用例。
重试点:这是一个具有两个值的下拉列表 - Resume和Start Over。
这是一些背景信息。当调用的工作流遇到故障并且等待完成设置为 true 时,故障将传播到父工作流。此时,工作流管理员或所有者可以重试父工作流。如果重试点设置为Resume,则将从故障活动中重试调用的工作流实例。如果重试点设置为“重新开始”,则调用的工作流实例将终止,并创建调用的工作流的新实例。重试点设置取决于业务用例。故障缓解要求因业务而异,对于某些原子工作流程,在故障后重新启动更有意义,而对于其他工作流程,修复故障活动并恢复现有实例是可行的。
父工作流程和调用工作流程之间的无缝导航
工作流程设计器允许在父工作流程和调用的工作流程之间轻松直观地来回导航。要从父工作流打开调用的工作流模型/定义,只需单击调用的工作流活动上的打开上下文菜单条目。要返回到父工作流模型/定义,请单击图表生成器工具栏区域中的“后退”按钮。下图说明了这种体验。
参数说明
由于支持调用工作流,APEX 24.2还允许指定参数方向(In、Out、In/Out)作为定义工作流的一部分。在预算审批工作流程中,状态参数指定为输入/输出。在父级(笔记本电脑请求)工作流的调用预算审批中,状态参数映射到 V_TASK_OUTCOME 工作流变量。
这意味着 V_TASK_OUTCOME 变量值从笔记本电脑请求工作流程传递到调用的预算审批工作流程。在调用的工作流程中,状态值经过处理后,通过 V_TASK_OUTCOME 变量返回到笔记本电脑请求工作流程。
注意:当工作流程用于工作流程 - 起始页流程时,不会显示输出参数。这是因为工作流一旦从页面提交,就会异步运行,并且输出参数无法真正返回到页面。因此,输出参数仅与调用工作流活动中使用的工作流上下文相关。
运行时体验
在运行时,当为员工提出笔记本电脑请求并且笔记本电脑请求工作流开始执行时,它会在某一时刻到达调用预算审批活动。此时发起者会在工作流控制台中看到两个工作流。
请注意右侧“笔记本电脑请求工作流程详细信息”页面中带下划线的“调用预算批准”活动。单击该活动将打开调用的工作流程详细信息,如下所示。
调用的工作流程的详细信息页面在顶部有一个附加按钮(至父工作流程),用于返回父工作流程的详细信息。
这有助于在运行时在父工作流和调用的工作流之间进行无缝来回导航。
从另一个应用程序复制工作流程
APEX 24.2 中提供的另一个重要增强功能是能够从不同的应用程序复制工作流程。有了此功能,可以将形成自定义模板的标准化工作流程从基本应用程序复制到自定义应用程序中,然后根据业务需求进行编辑。这节省了开发人员的时间,并降低了实施错误的风险。从不同的应用程序复制工作流时,工作流使用的任何其他共享组件(例如电子邮件模板、人工任务、REST 数据源)也会复制到目标应用程序。如果正在复制的工作流具有调用工作流活动,则调用的工作流也会复制到目标应用程序
从其他应用程序复制选项在工作流报告页面中可用,该页面从共享组件-> 工作流和自动化-> 工作流打开。
在此示例中,当复制笔记本电脑请求工作流程时,它也会自动复制预算审批工作流程,因为它是由笔记本电脑请求工作流程调用的。
结论
从其他工作流中声明性地调用工作流是一项强大的增强功能,将使业务流程的建模更加稳健并减少冗余。从其他应用程序复制工作流程的能力也有望提高应用程序开发人员的生产力。
希望本博客的读者能够尝试APEX工作流程中这两个令人兴奋的新增强功能,并向Oracle提供反馈和想法,以使APEX工作流程在即将发布的版本中变得更加强大。