Oracle APEX:带有 APEX 流程的工作流管理器
Flows for APEX是一个开源解决方案,在 MIT 许可下免费提供,它允许您在 APEX 应用程序中设计和执行工作流。它由一群经验丰富的 Apex 爱好者开发,随着时间的推移迅速演变为功能丰富的流程建模解决方案。
通过单击此链接,您可以访问Flows for APEX 项目的GitHub页面,您可以在其中找到一些非常有用的资源,例如教程和一些演示。
在这篇文章中,我想向您展示它是如何工作的。
在本文中
APEX 流程:如何安装
要使用Flows for APEX,您首先需要从开发者网站下载安装程序。
在写这篇文章的时候,可下载版本流为APEX是5.1.1。从可用的Oracle APEX释放20.1和更高。
在压缩的文件夹,你会发现两个SQL的安装程序,第一个是流体动力发动机,第二个是一个演示应用程序,您可以使用测试。
连接到APEX的工作区,进入APP生成器,然后单击导入。
选择了APEX流应用程序的安装和设置各种选项,导入文件:
- 文件类型:数据库应用程序
- 文件字符集:Unicode的UTF-8
点击下一步
点击下一步
单击安装应用程序。
激活安装支持对象选项并单击下一步。
单击安装。
在该过程结束时,您应该会在工作区中看到可用的应用程序。
或者,您还可以按照我刚刚解释的相同过程安装演示应用程序。
APEX 流程:应用程序概述
如果您已安装Flows for APEX,则可以运行该应用程序。
入门部分为您提供了一系列一般信息、在线文档参考和下载页面。
流量管理
在Flow Management部分,您可以创建您的工作流程。
要查看流的定义,请单击“编辑”按钮。
在页面顶部,您可以看到一些一般信息,例如名称、版本和状态。
右侧有计数器显示有多少进程已为此流(实例)激活,并指示哪些进程正在进行(正在运行的实例)和哪些已完成(已完成的实例)。
在页面的最后一节,你可以看到流感谢BPMN.i0,一个集成的第三方浏览器。
点击编辑流程,你可以在图形编辑器中直接编辑流程。完成更改后,单击“保存流”以保存流定义。
定义流的格式保存为BPMN 2.0 标准。因此,除了被 APEX 应用程序使用之外,它还可以导出以集成到其他应用程序中。单击查看源以查看流的定义。
要导出BPMN文件点击导出,指定选项,然后单击导出再次在本地保存流程定义。
流量监控器
在流量监控部分,您可以监控和管理已激活的工作流程。
可以使用Flows for APEX提供的 API 从任何 APEX 应用程序启动 Flow 流程(在以下段落中,我们将看到如何执行此操作)。
要从Flow Monitor手动启动流程,请单击Create New Instance。
指定要启动的流程,然后单击“创建”将流程排入队列
新流程实例已创建但尚未启动:单击“启动流程”按钮以启动流程。
流程开始后,您可以直接在查看器中查看其进度,其中突出显示了当前活动的任务。
要推进流程,请单击“子流程”选项卡。
在此部分中,您可以看到已激活的任务;要推进流程,请单击“转到下一步”按钮。
第二个任务被激活(任务B)
即使在查看器中情况发生了变化,实际上当前活动的任务也发生了变化。
APEX 的流程:一个实际示例
APEX 开发人员的流程认为适合在发布包中提供一个演示应用程序和几个可用于练习的流程模板。
这些模板在Flow Management部分可用。
我的建议是不要修改这些流,并可能使用导出/导入功能创建新流作为副本。
在本教程中,我将只解释如何创建一个简单的流来更新记录的状态以及如何将其集成到您的应用程序中。
在接下来的文章中,我们将使用实际示例详细探讨此应用程序提供的所有功能。
订房申请
为了测试Flows for APEX的功能,我创建了一个非常简单的应用程序来管理会议室预订请求,您可以通过单击此链接查看该请求。
申请人必须输入请求,指明要预订的房间、必须入住的日期和时间、人数以及是否需要投影仪或餐饮等附加服务。
提交请求后,秘书处将启动一项任务,该任务必须读取在预订表格中输入的数据,并继续批准或拒绝请求。
预订请求获得批准后,系统会预订所预订的会议室并向请求者发送电子邮件。
在应用程序的下部,我创建了一个监视器,实时显示Flow for APEX管理的审批工作流的进度。
房间预订工作流程
为了管理会议室的预订,我创建了以下工作流程。
- 该过程从请求者输入会议室的新预订请求开始。
- 请求由秘书处接管,秘书处将批准或拒绝请求
- 如果请求被接受,将预留会议室并向申请人发送确认电子邮件。此过程会根据请求中输入的数据自动进行。
- 如果请求被拒绝,在这种情况下也会自动发送一封电子邮件。
预订插入
用户任务类型的任务在用户在应用程序中创建请求后激活,即在他按下CREATE REQUEST按钮之后。
需要处理
用户任务类型的任务,在用户提交预订请求后或按下发送请求按钮后激活。
批准请求
为了根据请求的批准或拒绝正确管理应用程序的行为,我创建了一个独占网关。
网关名称是我们必须赋值的变量,以便 APEX 的 Flows 了解它必须导航哪个分支
允许的值在网关的传出分支中定义
自动任务
发送邮件的任务属于服务任务类型,需要您指定必须执行的 PL/SQL 脚本。
一旦执行了 PL/SQL 脚本,这种类型的任务就会自动完成。
如何将 Flows for APEX 集成到应用程序中
正如我们在上一段中看到的,当您创建流时,您可以使用不同类型的任务。
例如,有些任务必须在用户操作(例如按下按钮)后进行,或者 Flow fo APEX 在激活后立即自动执行的任务(服务任务)
要将您的应用程序与 Flows for APEX 集成,您必须使用可用的 PL/SQL api。
如何启动工作流
在我创建的应用程序中,每次创建预订请求时都会生成一个新的工作流实例。
为此,我使用此脚本调用了 worflow 创建 API
<span style="background-color:#282c34"><span style="color:#222222"><code>declare
p_spcs_prcs_id number;
p_spcs_name varchar2;
begin
p_spcs_prcs_id := flow_api_pkg.flow_create(pi_dgrm_name => 'Prenotazione_Sala_Riunione', pi_prcs_name => p_spcs_name);
flow_api_pkg.flow_start(p_process_id => p_spcs_prcs_id);
end;</code></span></span>
flow_api_pkg.flow_create函数具有以下参数:
- pi_dgrm_name:要实例化的工作流的名称
- pi_prcs_name - 实例的名称。我使用了系统生成请求的数量
在输出中,它返回已实例化的工作流的 ID。
如何推进工作流程
此外,为了推进工作流,还需要调用 PL/SQL API。
例如,为了将流程从请求移动到请求批准处理任务,我使用了以下说明:
- flow_process_vars.set_var设置用于导航决策网关的变量
- flow_api_pkg.flow_complete_step推进流程
<span style="background-color:#282c34"><span style="color:#222222"><code>declare
p_process_id number;
p_subflow_id number;
p_action varchar2;
begin
flow_process_vars.set_var(pi_prcs_id => p_process_id, pi_var_name => 'Gateway_Approvazione_Richiesta:route', pi_vc2_value => p_action);
flow_api_pkg.flow_complete_step(p_process_id => p_process_id, p_subflow_id => p_subflow_id);
end;
</code></span></span>
综上所述
我们已经了解了如何使用Flows for APEX通过 APEX 应用程序设计和管理工作流。
虽然它是一个需要一些编程技能才能充分利用的产品,但它可能是可用于管理 Oracle APEX 中的工作流的最佳解决方案之一。
最有趣的方面当然是基于图形 BPMN 编辑器的设计引擎,非常直观且易于使用。
而基于对 PL/SQL api 的调用,与应用程序的集成更加困难。