简介和背景
自从 APEX 23.2 引入了Workflow工作流作为本机组件,APEX就有了专门用于工作流程建模和执行业务流程的能力。当Workflow工作流在给定活动中遇到错误时,它会进入“故障”状态。此时,工作流的管理员或所有者可以重试工作流。重试工作流将从故障活动中恢复执行。这就是大多数业务流程建模和执行产品(包括遵循 BPMN 2.0 标准的产品)的工作方式。查看此博客,其中讨论了如何在 APEX 24.2 之前的APEX中重试出现故障的工作流程。
然而,在现实生活中的用例中,这种故障缓解方法具有很大的限制性。
任何流程自动化解决方案最需要的功能之一是保持现有工作流实例运行,无论业务流程生命周期中可能发生任何问题,包括:
- 人为错误:如果用户在表单中输入一些错误的数据,然后使用该数据在工作流中进行分支(用户输入数量 100 而不是 1000,并且稍后在工作流中是基于该数量的切换活动),则可能会发生人为错误如果人工任务的潜在所有者意外批准了某项任务,但后来由于某种原因决定拒绝该任务,反之亦然。
- 自动化任务中的错误:工作流通过执行代码或调用 API活动来执行业务逻辑。此业务逻辑的实现中可能会出现错误,从而导致异常或将工作流发送到不需要的路径,因为业务逻辑返回了一些错误的值。
对于客户来说,对运行的工作流程进行一定的控制以解决工作流程中因人为或业务逻辑错误而导致的问题至关重要。由于现有工作流程中出现一些错误,用户不愿意重新启动工作流程,因为这意味着需要重做之前的工作;参与工作流程的人员需要再次参与,这可能既昂贵又耗时。
使用 APEX 24.2,工作流的管理员可以暂停工作流并在工作流内的任意活动处恢复它。这使得工作流程更具弹性,并允许任意重新路由故障/挂起的工作流程。现在,工作流程可以通过一组完全不同的路径进行路由,而不是保留在其原始路线上。
先决条件
本博客假设读者熟悉APEX Workflow工作流的概念和术语。
对于 APEX Workflow 工作流程的新用户来说,在继续阅读此博客之前,可以先阅读以下介绍 APEX Workflow 工作流程概念的博客:
例子
下图显示了工作流程设计器中简单的订单申请工作流程的模型。
该工作流实现以下逻辑:
- 如果请购金额小于或等于1000,则会自动批准并创建订单。
- 否则,将为请购单创建审批任务,并且仅在请购单获得批准后才创建订单。
- 创建订单后,将其发送以供审批。
- 订单状态根据批准订单任务的结果进行更新。
- 申请 ID、项目和项目金额是工作流程的输入参数。
运行申请单应用程序
下面的示例显示了一个项目表,以及为Macbook Pro提交的新申请,金额为2500美元。
提交会触发新的工作流程。由于物料价值大于1000美元,因此不会自动批准,并且会创建人工任务来批准请购单。
假设此时应用程序用户意识到该申请实际上符合自动批准的条件,因为在提交Workflow工作流之前已经收到了口头批准。在 APEX 24.2 之前,自动批准的唯一方法是终止当前Workflow工作流程,并更改项目数量或仅更改此申请的业务逻辑,然后提交新的Workflow工作流程。通过当前的增强功能,Workflow工作流管理员可以登录Workflow工作流控制台,并打开详细信息页面来暂停工作流。
然后,管理员将Workflow工作流变量“金额”更新为900并保存该值。
在单击“恢复”按钮之前,管理员将“审核中的更新申请状态”设置为应恢复工作流的活动。
单击“恢复”后,工作流程将根据更新的项目数量重新路由,这次采用自动审批路由。
请注意工作流程活动和审核图。这表明批准申请人工任务活动已终止,并且跳过了其路径上的后续活动。
自定义生成的工作流程详细信息页面
让我们看看如何自定义生成的工作流程详细信息页面以选择任意活动并从那里恢复工作流程。
在生成的“工作流程详细信息”页面的“按钮区域”中,添加了“选择列表”类型的新页面项目。这将用于选择将从中恢复工作流的特定活动。
用于检索给定工作流程中的活动名称和静态ID的查询如下:
1 | select wa.name as name, |
页面进程 - 恢复现在有一个新属性: Activity Static ID Item。它设置为包含所选工作流程活动的静态 ID 的页面项目。
注意:与恢复页面流程类似,API apex_workflow.resume 也经过修改以接受特定活动的静态ID作为可选参数。
1 | begin |
当未提供静态ID时,Resume API的工作方式与以前的版本相同,即Workflow工作流在暂停时从其等待的活动处恢复。
结论
上面的示例显示了设计一个应用程序是多么容易,其中工作流管理员可以重新路由提交的Workflow工作流。本文演示了从上游活动恢复Workflow工作流,但是,也可以使用相同的方法从下游活动(稍后出现在Workflow工作流中的活动)恢复Workflow工作流。
您还可以在此博客中了解 Oracle APEX 24.2 中其他重要的Workflow工作流程增强功能。