配置简单的工作流程

当人们以协调的方式交互以实现共同的业务目标时,就会发生业务流程。 工作从一个人流向另一个人,每个人都执行自己的任务或业务角色。 例如,考虑一个简单的工作流程,用于将客户送入酒店。 接待员为到达的客人预订房间。 客房预订信息将传递给客房部和酒店的会计人员。 客房部确保客户发现房间已经准备好,并且会计记录客户的付款记录。

业务流程的管理是对工作流程的管理。 业务流程管理(BPM)工具使您能够以一种使计算机系统理解工作流并采取相应行动的方式来表达工作流。 这样做的旧方法是用某种编程语言编写代码。 BPM方法是使用BPM软件通过配置管理性地完成它,而无需编写任何代码。 业务流程建模表示法(BPMN)是一种标准,可让您以图形方式表达工作流的业务需求。 首先,您使用BPMN工作流编辑器来编写业务流程的BPMN表示形式。 然后,将BPMN表示形式托管在BPMN工作流引擎上,该引擎处理实际的工作流程。

提供了一些基于Java的出色开源BPM解决方案。 在这一由两部分组成的文章中,您将学习如何使用其中的一种-Bonita Open Solution-为酒店的客房预订业务流程配置工作流。 Bonita包括图形化BPMN编辑器以及工作流引擎。

配置工作流程的任务

配置工作流程需要执行以下四个任务:

  1. 使用BPMN编写工作流。
  2. 设计在工作流程执行期间用于人机交互的表单。
  3. 指定在工作流中使用哪些外部应用程序。 您几乎总是需要外部应用程序来满足您的工作流程要求。
  4. 通过定义参与工作流程的所有人员(或参与者)的业务角色,指定谁执行工作流程的活动。 业务角色确定谁有权访问哪个活动。 确定所有这些都是访问控制策略的一部分 ,

在第1部分中,我将演示第一个任务,即使用Bonita编写房间预订工作流。 第2部分中 ,我将展示如何为工作流设计两种形式,并演示如何使用工作流中经常使用的两个流行的开源应用程序:PostgreSQL数据库和JasperReports报告引擎。 定义访问控制策略不在本文讨论范围之内。 请参阅参考资料,获取有关该主题的文章的链接。

简单工作流程的BPMN表示

为了向您介绍BPMN,我将以酒店前台的客房预订过程为例。 最简单的过程要求是客户到达办公桌并要求房间。 前台服务员检查房间的可用性,如果有房间,则进行预订。 (请注意,为简单起见,我没有考虑引言中提到的从酒店前台到客房部和会计师的完整工作流程。)

图1显示了这个简单流程(我使用Bonita的工作流编辑器绘制)的BPMN表示:

图1.使用BPMN表示预订酒店房间的简单工作流程
配置简单的工作流程

图1中最左侧的绿色细圆圈是开始元素。 它代表BPMN定义的工作流程的开始。

开始元素右侧的箭头表示过渡 。 您将在本文中学习到各种过渡都是可能的。 这是一个简单的过渡,仅指向工作流程的第一个活动 。

工作流程的活动

图1中第一个转换的右侧是一个带有圆角的矩形。 图1包含三个这样的矩形。 它们代表可以自动或由用户执行的工作流活动或任务。 最左侧的矩形(名为EnterRoomInformation )包含一个人类符号,表明这是用户活动 。 在此活动中,接待员使用表格输入有关客户所需房型的信息。

中间的矩形名为CheckRoomAvailablity 它的即插即用符号表示这是一项自动活动,这意味着它在后端进行了某些操作。 可以完成几种类型的自动操作,例如,用于检查所需房间类型是否可用的数据库操作。

第三个(最右边)矩形,称为BookRoom ,既带有人类符号又带有插头符号,这意味着用户执行了此活动的一部分,其余部分则通过后端的一些自动处理来完成。 BookRoom活动的人为部分是让接待员提供房间预订信息。 其余的是自动的(数据库事务以保存预订信息)。

总之,第一个活动只是收集有关所需房间的数据,第二个活动检查所需房间的类型是否可用。 第三项活动会尽一切努力来预订房间。

简单和条件转换

请注意,在简单的过渡(箭头) 图1从指向EnterRoomInformation活动到CheckRoomAvailability活性。 这种简单的过渡意味着接待员收集了房间查询数据之后,下一步就是检查所需房间类型的可用性。

下一个过渡-从CheckRoomAvailability活动过渡到BookRoom活动-并非简单过渡。 这取决于CheckRoomAvailability活动的结果,即所需的房间类型是否可用。 如果有可用,店员可能想为客户预订,因此发生了BookRoom活动。 如果所需的房间类型不可用,店员可能要检查另一种类型的房间的可用性,因此应将控制权转移回EnterRoomInformation活动。

因此,在这里您必须决定要走的路。 每当您必须做出此决定时,执行路径就会分裂。 此拆分用菱形(BPMN术语中的门元素或网关 )表示,其中带有十字。 您可以在图1中看到,gate元素将CheckRoomAvailability活动的输出与两条可能的执行路径相连。

三条带箭头的线连接到大门。 每行代表一个过渡:

  • 第一个转换是到门的输入,它来自CheckRoomAvailability活动,并在门处终止。 这是一个简单的无条件转换。
  • 第二个转换是从Gate到EnterRoomInformation活动。 此转换表示指定类型的房间不可用的情况。 这是有条件的过渡。
  • 如果需要的房间类型可用,则从登机口进行的第三个转换(另一个条件转换)指向BookRoom活动。

请注意,gate元素不过是过渡相遇的点。 进入门或离开门的每个转换都知道其自身的属性(即,是简单的还是有条件的)。

现在,您已经了解了BPMN如何代表预订房间的简单过程。 下一节将演示如何在Bonita中配置此工作流程。 如果您想按照本文的动手练习进行操作,请立即下载,安装并启动Bonita(请参阅参考资料 )。

在Bonita中配置简单的工作流程

Bonita的图形工具易于使用,可以从调色板拖放到称为白板的编辑器窗口中。 将组件放到白板上之后,您可以根据业务流程要求分别配置每个组件。

图2显示了Bonita的欢迎页面,其中包含一些常见任务的快速链接,例如创建新流程或打开现有流程:

图2. Bonita的欢迎页面
配置简单的工作流程

您可以单击“ 新建”按钮开始配置房间预订工作流程。 将打开一个名为MyProcessDiagram (1.0版)的新进程,如图3所示:

图3.一个新过程
配置简单的工作流程

您可以在图3中看到Bonita屏幕被水平划分为两个部分,每个部分也被垂直划分。

左上部分包含BPMN元素调色板,可用于配置工作流程。

右上部分是一个流程白板,您可以从面板中拖放BPMN元素到该白板中。 白板是该过程的实际设计视图。 如图3所示,Bonita在创建新流程时会自动添加三个BPMN元素:开始,过渡和名为Step1的活动。

左下部分是概述窗口,其中显示了您正在开发的整个工作流程的概述。 这有助于快速跳转到工作流的特定部分,特别是在工作流定义很大且没有滚动条无法放入白板的情况下。

右下部分是详细信息窗口,可用于配置单个BPMN元素。 它显示了您在配置期间设置的BPMN属性。 由于当前未选择BPMN元素,因此图3中的详细信息窗口显示了工作流程的属性。 例如,您可以看到详细信息窗口有一个名为Diagram的选项卡,其中包含一个Name字段,其值为MyProcessDiagram MyProcessDiagram更改为RoomBookingDiagram ,然后单击Bonita主工具栏上的Save按钮。

在Bonita中配置用户活动

通过单击“ Step1活动开始配置房间预订工作流程。 其属性显示在详细信息窗口中,如图4所示:

图4. Step1活动的属性详细信息
配置简单的工作流程

当您单击Step1活动时, 上下文面板 (BPMN元素图标的一小部分)将显示在其周围,如图5所示:

图5.显示其上下文面板的Step1活动
配置简单的工作流程

上下文面板使您可以方便地将下一个活动或过渡添加到工作流中。 在本文的练习中,您将经常使用上下文面板。

图4中可以看到,Details窗口具有多个选项卡,可用于控制每个BPMN元素(例如Step1活动)的行为,将其拖放到Bonita的白板中。 这些选项卡提供了丰富的功能,可以满足几乎所有管理业务流程的需求。 我不会在本文中介绍所有BPMN功能。 对于简单的酒店客房预订用例,您仅需要详细信息窗口的“常规”,“数据”,“连接器”和“表单”选项卡。

如图4所示,“常规”选项卡使您可以为活动指定名称,描述,类型和优先级。 通过输入EnterRoomInformation Name文本字段,将Step1替换为活动的名称。 请注意, EnterRoomInformation现在是显示在白板上的活动的名称。

Description字段允许您提供有关BPMN元素的文档。 在“描述”字段中键入Show a form to fetch the information about the room required by the customer

接下来,您将为此活动指定类型。 因为EnterRoomInformation活动需要填写数据输入表单以指定所需房间的类型,所以这是由使用房间预订工作流应用程序的接待员执行的用户活动。 活动类型字段是一个下拉列表。 EnterRoomInformation活动的类型应为人类,默认情况下您会发现它处于选中状态。

由于EnterRoomInformation活动是用户活动,因此您需要为其开发数据输入表单。 第2部分中 ,您将设计和实现表单,然后使用详细信息窗口的“表单”选项卡将其添加到活动中。 第2部分中 ,您还将使用“数据”选项卡定义变量,这些变量保存有关客户所需房间的数据。

向您的工作流程添加自动活动

接下来,您将向您的工作流程添加一个过渡和名为CheckRoomAvailability的下一个活动。 CheckRoomAvailability活动从EnterRoomInformation表单接收数据,检查酒店的数据库(您将在第2部分中对其进行配置)的房间可用性,然后设置一个标志以显示房间是否可用。

单击EnterRoomInformation活动以**其上下文面板。 从上下文面板的右上角拖动步骤元素图标(一个小框),将其EnterRoomInformation活动旁边。 如图6所示,将过渡和另一个Step1元素添加到工作流中:

图6.一个新的过渡和一个Step1元素添加到您的工作流
配置简单的工作流程

新创建的Step1元素的详细信息窗口显示活动的名称,描述和类型字段。 输入CheckRoomAvailability作为活动的名称。 在描述字段中,输入An automatic process to consult the database for the availability of required type of room 从活动类型下拉列表中选择自动 图7显示了您刚刚配置的CheckRoomAvailability活动:

图7.配置CheckRoomAvailability活动
配置简单的工作流程

在工作流程中添加房间空房标志

如果所需的房间类型可用,则CheckRoomAvailability活动将设置一个名为isRequiredRoomTypeAvailable的标志。 工作流中的下一个转换取决于是否设置了isRequiredRoomTypeAvailable标志,因此您需要将isRequiredRoomTypeAvailable标志定义为Bonita中的变量。

Bonita允许您为每个单独的活动以及整个工作流程定义变量。 仅在特定活动中需要变​​量时,才定义活动级别变量。 如果该变量的使用涉及多个活动,则可以在工作流级别定义变量,以便任何元素都可以访问它。

对于预订工作流, isRequiredRoomTypeAvailable标志必须是工作流级别的变量,因为多个元素都可以访问该标志。 CheckRoomAvailability活动将设置标志,下一个转换将检查标志的状态。

要在工作流级别定义变量,请单击包裹整个工作流定义的矩形,如图8所示:

图8.房间预订工作流的Details窗口
配置简单的工作流程

请注意,详细信息窗口现在显示了完整的会议室预订工作流程的属性。

单击详细信息窗口中的“数据”选项卡,然后单击“添加”按钮。 将打开“添加新变量”对话框,如图9所示:

图9.向您的工作流添加一个新变量
配置简单的工作流程

在名称文本字段中输入isRequiredRoomTypeAvailable 在描述字段中,输入A workflow-level flag to show whether the required type of room is available or not 从数据类型下拉列表中选择布尔 ,然后选择false作为标志的默认值。 单击底部的完成按钮。 您可以看到isRequiredRoomTypeAvailable变量已添加到Data选项卡,如下图10所示:

图10. Data选项卡显示isRequiredRoomTypeAvailable变量已添加到文本框中
配置简单的工作流程

您刚刚定义了CheckRoomAvailability活动以及一个名为isRequiredRoomTypeAvailable的工作流级别标志。 但是,您尚未配置将读取房间可用性数据并设置(或重置) isRequiredRoomTypeAvailable标志的实际数据库和SQL语句。 我将在第2部分中演示如何完成所有这些操作。 现在,我将展示如何配置下一个动态过渡,这需要根据房间是否可用进行决策。

具有决策的动态过渡

单击CheckRoomAvailability活动以**其上下文面板。 从上下文面板中将带有加号的菱形拖放到CheckRoomAvailability活动的右侧,以在CheckRoomAvailability放置一个gate元素,如图11所示:

图11. BPM流程中用于决策的门元素
配置简单的工作流程

门元素可以有两种类型:

  • XOR闸门:如果闸门内有一个十字符号,则用于将一条路径分成几条路径。
  • AND门:如果门内有加号,则它将合并两条路径。

从“ 简单和条件转换”部分知道,您需要一个将一条路径分成几条路径的门。 为了设置正确的门类型,请在白板上单击gate元素,然后在General选项卡中选择XOR作为Gate type属性,如图12所示:

图12.选择一个XOR门将一条路径分成几条
配置简单的工作流程

现在,单击并从gate元素的上下文面板中将step元素图标拖动到gate的右侧。 一个名为Step1的新活动位于门的右侧。 在详细信息窗口的“常规”选项卡中,将新活动的名称更改为BookRoom并将其类型更改为Human。 现在已配置好门,过程如图13所示:

图13. BookRoom活动放置在大门旁边
配置简单的工作流程

Bonita中的业务角色

BookRoom元素的左上角是BookRoom的符号,而右上角是十字(在图13中都可见)。 叉号告诉您尚未指定谁进行此活动。 单击演员选项卡,然后单击选择按钮。 将打开“分配参与者”对话框,如图14所示:

图14. Assign actors对话框
配置简单的工作流程

“分配演员”对话框要求您选择可以执行BookRoom活动的演员组。 Bonita允许您根据工作流中所需的业务角色来定义参与者组。 讨论业务角色不在本文讨论范围之内。 您将仅使用已在Bonita中定义的名为Initiator的默认参与者组。 发起者组由发起工作流的任何人组成。

从文本框中选择启动器 ,然后单击窗口底部的完成按钮。 启动器被添加到Actors选项卡的列表中,如图15所示:

图15.默认的Initiator actor已添加到Actor选项卡的列表中
配置简单的工作流程

BookRoom活动还需要一个用户交互表单,该表单要求酒店前台服务员输入客户信息。 您将在第2部分中设计工作流程所需的表单。 还要注意,目前, BookRoom是用户活动。 第2部分中 ,您将配置此活动的自动部分。

向过渡添加条件

现在,将房间可用性条件添加到从Gate到BookRoom活动的过渡中。 您需要以这样的方式配置工作流程,即BookRoom活动仅在所需的房间类型可用时才发生。

单击从大门到BookRoom活动的过渡元素。 过渡元素的详细信息显示在详细信息窗口中,如图16所示:

图16. Details窗口显示了转换的属性
配置简单的工作流程

过渡元素的详细信息仅包含一个名为General的选项卡, 如图16所示。 “常规”选项卡包含一个名为“条件”的字段,该字段指定转换将要发生的条件。 在“条件”文本字段中输入isRequiredRoomTypeAvailable 回想一下, 在向您的工作流添加房间可用性标志时,您 isRequiredRoomTypeAvailable标志声明为工作流级变量。 如果房间可用,则CheckRoomAvailability活动isRequiredRoomTypeAvailable标志设置为true。 如果发现isRequiredRoomTypeAvailable变量为true(意味着已设置标志),则此条件仅允许过渡到BookRoom活动。

输入过渡条件时,请注意,过渡元素的门侧会出现一个小菱形。 菱形表明过渡是有条件的。

您可能已经猜到了,还必须为另一个过渡设置条件。 单击流程白板中的gate元素以**其上下文面板。 将箭头(过渡图标)从上下文面板的底部EnterRoomInformation活动。 这将绘制一个从Gate到EnterRoomInformation活动的过渡元素,如图17所示:

图17.在所需的房间类型不可用的情况下,从门到EnterRoomInformation活动的过渡
配置简单的工作流程

现在, 如图17所示,只需将isRequiredRoomTypeAvailable设置为此过渡的条件。 如果所需的类型空间不可用,则工作将流回到EnterRoomInformation活动。

配置工作流程的结束

最后的工作流程配置步骤是通过将圆形项目从BookRoom的上下文面板向右拖动,向过程中添加一个end元素。 出现一个事件选择器面板,如图18所示:

图18.事件选择器面板
配置简单的工作流程

事件选择器选项板包含BPMN定义的许多事件类型的符号。 您只需要一个end元素(一个红色的圆圈,如图18所示),可以在事件选择器面板的右上角找到它。 从事件面板中选择结束元素。 现在,您的工作流包含一个end元素,如图19所示:

图19.带有结束元素的房间预订工作流
配置简单的工作流程

您已经配置了房间预订工作流,但它没有表单,也没有数据库。 单击Bonita主菜单中的“ 保存” ,以保存您到目前为止已完成的工作。 这会将您的工作流程信息保存在RoomBookingDiagram.proc文件中。 RoomBookingDiagram.proc文件也可以下载

结论

诸如预配置的工作流和流行的工作流类型之类的ERP功能很有用,但是它们要付出一定的代价:此类功能是特定于产品的。 我发现,教IT专业人员如何使用特定于产品的功能来解决日常工作流问题是任何ERP项目中最难的部分。

因此,我认为BPM是未来的潮流。 尽管标准化尚未完成,但正在取得进展。 我相信,几年后,BPM将涵盖所有工作流程功能,无论是常见的还是不常见的,因此标准化的BPM培训将成为IT课程的一部分,并且针对特定产品的ERP培训将不再成为问题。

在本文中,您学习了一些BPMN,以及如何使用它在Bonita中配置简单的工作流。 第2部分中 ,我将介绍在第1部分中所有我遗留下来的内容-设计表单,使用变量,连接到PostgreSQL数据库以及使用JasperReports生成报告-使您的客房预订工作流程付诸实践。


翻译自: https://www.ibm.com/developerworks/opensource/library/j-bpm1/index.html