您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
   
 
 
     
   
 订阅
  捐助
(二)使用 BPD 及 Integration、Human 和 Rule 服务
 
作者 Xi Ning Wang、Lei (Joyce) He、Liu Yu,火龙果软件    发布于 2014-09-29
   次浏览      
 

概述

第 2 部分介绍如何使用最常见的 WebSphere Lombardi V7.1(以下简称 Lombardi)功能来建模示例流程。我们将介绍业务场景流程的基本建模,包含以下功能:

1.使用业务流程定义 (BPD) 进行流程建模

2.Integration 服务

3.Human 服务

4.Rule 服务

在示例流程中,购买者使用基于 Web 的用户界面 (Web UI) 提交一个购买订单,然后客户关系管理 (CRM) 系统自动向提供商发送一个通知。提供商可使用一个包含以下选项的 Web UI 确认订单:接受订单而不进行任何更改、接受订单并进行一定的更改或拒绝订单。

在接受订单的情形下,如果提供商提高商品单价,系统需要通知购买者重新确认更新的订单。购买者具有以下选择:

1.如果购买者接受更新的订单,系统会自动生成最终的购买订单。

2.如果购买者不接受更新的订单,系统会将相关通知发送给提供商,购买订单流程停止。

如果购买者不确认订单,系统会自动生成正式的购买订单。

创建业务流程

是一个活动集合,旨在生成针对某个特定目标的一种具体输出,它同时涉及到人类和系统交互。该流程不仅可包含一般 Integration 服务、活动、网关和 Rule 服务,还可以使用计时器、消息和异常事件。

当建模流程时,您会创建一个可重用的业务流程定义 (BPD)。BPD 支持您为最终用户定义流程工作流,在创建一个流程内的逻辑并与其他应用程序和数据源集成。

您可以按照以下步骤来从头创建示例流程应用程序,或者导入本文的 下载 部分中提供的现有的流程应用程序。

要创建示例流程应用程序,可完成以下步骤:

1.单击 Process Apps 选项卡,然后单击 Create New Process App 并提供 Process App Name(例如 Purchase Order Process)、Acronym(例如 POP,缩写在您的 Lombardi 环境中必须是惟一的),以及一个可选的 Description(例如 This presents an example of a process for handling a purchase order.)。

2.打开 Designer 并选择 Create Business Process Definition (BPD)。

3.单击 Process App 选项卡并在 Process App 列表中选择 Purchase Order Process,以便在 Designer 中打开该流程。

4.在 Designer 中,选择 Processes => Create New => Business Process Definition。

5.创建一个名为 Purchase Order Process 的 BPD。

6.接下来您需要创建通道。BPD 必须为每个系统或参与一个流程的用户组包含一个通道。通道是一个特定系统或用户组将执行的所有活动的容器。

可以向流程图中添加通道来持有将在流程执行期间发生的活动和事件。当创建一个新 BPD 时,它默认包含两个通道。可以拖动细节面板中通道图标的右边来创建两个新通道。可以为每个通道指定一个可选的名称和颜色,方法是选择该通道,在属性部分中指定名称和显示颜色。

在我们的示例中,主要流程中有 4 个通道:Buyer、Supplier、CRM 和 ERP。

7.现在您需要创建参与者组。这些组通常表示一个业务组织中的用户组或部门。在 Designer 视图中,单击 Processes 旁边的加号 (+),然后选择 Participant Group 并输入参与者组名称。

在我们的示例中,有 4 个参与者组:Buyer、Supplier、CRM 和 ERP。

8.接下来,您将创建活动和一个决策网关。为此,将右侧面板中的 Activity 元素拖到流程图中一个合适的通道中,以创建活动。然后将 Decision Gateway 元素拖到流程图中,指定 Accept Order? 作为它的名称。如果订单的状态指定为 Accepted by supplier,那么决策网关将调用 Need Buyer's Reconfirm? 活动;否则,它将调用 Send Reject Notification to Buyer 活动。

9.使用相同的流程,创建另外两个决策网关:Need Confirm?(使用 needBuyerConfirm 变量描述它的值)和 Buyer Accept?(使用订单的状态来描述它的值)。如果订单的状态指定为 Accepted by buyer,决策网关将调用 Generate Order 活动;否则,它将调用 Send Reject Notification to Supplier 活动。

10.对于您创建的每个 BPD,您需要声明变量来采集在您流程中各个步骤间传递的业务数据。为此,在 Variables 选项卡上,请单击 Add private 添加一个名为 Order 且类型为 Order 的私有变量,以及一个名为 needReconfirm 且类型为 Boolean 的私有变量。

您现在已创建示例流程应用程序。得到的业务流程如图 1 所示。

图 1. 购买订单流程

创建 Integration 服务

当您希望集成一个外部系统来完成任务时,可以构建一个 Integration 服务。例如,您可以构建这样一个 Integration 服务,它调用一个 Web 服务来执行某种业务逻辑。Integration 服务是惟一可包含 Web 服务集成和 Java? 集成组件的服务。

创建 Web 服务集成

在我们的示例中,我们使用一个 Web 服务集成来实现在流程中调用的通知功能。要创建此服务,执行以下步骤:

选择 Implementation => Integration Service 并创建一个名为 SendNotification 的 Integration 服务。

在新 SendNotification Integration 服务的图表中,从右侧面板拖出 Web Service Integration 并将其重命名为 Send Notification by Email,然后使用序列流将它链接到 Integration 服务图的开始和结束单元。

要发现 Web 服务,请在属性视图的 Implementation 选项卡上指定 Web 服务的 WSDL URI 并单击 Discover,如图 2 所示。

您可以从本文的 下载 部分获取 WSDL 和 XSD 文件,并基于这些 WSDL 和 XSD 文件开发自定义的 Web 服务。然后可以将这些 Web 服务部署在您的应用服务器上。

图 2. 发现 Web 服务

单击 Generate Types,然后接受默认选项以生成变量类型。这将生成如图 3 所示的变量类型。

图 3. Web 服务所提供的已生成的变量类型

选择 Send Notification by Email Web 服务集成,在属性视图中,从发现的操作列表中选择 Notify Supplier。

在 Variable 选项卡上,单击 Add Input 创建一个输入变量。将变量的名称指定为 inputOrder,并将 Variable Type 更改为 Order。
重复上一步,创建一个名为 outputResult 且类型为 String 的输出变量。

在 SendNotification Integration 服务的 Data Mapping 属性中,将 inputOrder 映射到 order,将 outputResult 映射到 result。

创建 Java 集成

在我们的示例中,我们使用 Java 集成组件集成外部 Java 类,从而实现流程中所调用的价格计算和支付功能。

在创建该 Integration 服务之前,需要添加包含这些类的 JAR 文件,方法是在 Designer 视图中单击库的 Files 旁边的加号 (+) 并选择 Server File。在 New File 对话框中,单击 Browse 并选择 下载 部分中提供的 payment.jar 文件。

创建一个 Integration 服务,然后将一个 Java 集成组件从面板拖到服务图,使用序列线将该组件连接到 Start 和 End 事件。

单击图中的 Java 集成组件,然后单击属性中的 Definition。单击 Java Class 下的 Select 并选择 JAR 文件和类,如图 4 所示。

图 4. Java 集成

创建 Human 服务

Human 服务是惟一可包含 coach 和用户交互的服务类型。当您希望 BPD 中的一个步骤创建可供流程参与者在 Web UI 中执行的交互式任务时,可以构建一个 Human 服务。当构建 Human 服务时,您会包含一些 Coach,它们是基于 Web 的表单,用于向用户提供流程相关数据和收集来自这些用户的输入。Coach 使您能够轻松添加标准的字段和控件,比如单选按钮、下拉菜单等。

按照以下步骤,创建一个名为 Submit Purchase Order 的 Human 服务:

打开 Purchase Order Process BPD,右键单击 Submit Purchase Order 活动并从选项列表中选择 Activity Wizard。

在 Set Up Activity 对话框中,指定 Human Service (Service with human interaction) 作为服务类型,创建一个名为 Submit Purchase Order 的新服务,然后单击 Next。

在 Parameters 对话框中,选择现有的流程变量订单来用作新服务的输入和输出,然后单击 Finish。新服务创建后会自动附加到活动上。
新服务包含一个 Coach。单击 Coaches 选项卡,然后单击列出的 coach 组件以打开 Coach Designer。

将 orderHead 和 orderDetail 变量拖入 coach 表单页面,如图 5 所示。

图 5. Submit Purchase Order 的 Coach

一般而言, coach 经过了高度自定义,以在典型的 Lombardi 部署中呈现一种特定的外观。例如,您可能希望自定义 coach 来使用企业徽标和颜色。在许多情形下,可通过在 Designer 界面中配置可用的显示和可视性属性来满足自定义需求。在本系列的第 3 部分中,您将学习 coach 的高级功能。

创建 Rule 服务

当您想要一个条件来确定执行路径或基于其他变量的可能值进行变量分配时,可以使用 Rule 服务。例如,当某个条件计算结果为真时,将执行您提供作为操作的 JavaScript 表达式。Rule 服务的操作不能直接调用 Java 或 Web 服务集成。您可以从任何其他类型的服务调用 Rule 服务,Rule 服务也可以调用其他嵌套的服务。

在我们的场景中,如果提供商更改商品的数量或价格,Rule 服务将按照以下业务规则来验证订单更改:

如果增加的数量比率小于或等于 10%,并且更新的价格不高于原始价格,那么购买者无需重新确认。

如果增加的数量比率小于或等于 10%,但更新的价格高于原始价格,那么购买者需要重新确认。

否则,如果增加的数量比率大于 10%,那么购买者也需要重新确认。

因为一个订单中有多个订单项,所以 Rule 服务必须重复执行。为此,请选择 Need Buyer's Reconfirm? 活动并单击属性中的 Step。然后从 Behavior 下的 Loop Type 下拉列表中选择 Simple Loop 选项。然后在 Simple Looping 下,指定订单项的长度作为循环最大值,如图 6 所示。

图 6. 简单循环

执行以下步骤,创建一个名为 Need Buyer's Reconfirm? 的 Rule 服务:

打开 Purchase Order Process BPD,右键单击 Need Buyer's Reconfirm? 活动并选择 Activity Wizard。

在 Activity Wizard 的 Set Up 对话框中,指定 Rule Service (Rule based service without human interaction) 作为服务类型,并创建一个名为 NeedReconfirm? 的新服务,然后单击 Next。

在 Parameters 对话框中,指定现有的流程变量 needReconfirm 作为此新服务的输出,然后单击 Finish。新 Rule 服务创建后会自动附加到活动上。

创建一个名为 orderDetail 且变量类型为 OrderDetail 的输入变量。然后使用相同的小数类型创建两个私有变量,分别名为 updatedQuantityPercent 和 updatedUnitPricePercent。

在规则脚本活动之前添加一个服务脚本活动,使用 JavaScript 表达式实现此活动,如清单 1 所示。

清单 1. Rule 服务的初始化

if(tw.local.orderDetail.quantity == 0 ){
tw.local.updatedQuantityPercent = 1;
}else{
tw.local.updatedQuantityPercent = (tw.local.orderDetail.updatedQuantity -
tw.local.orderDetail.quantity)*1.00/tw.local.orderDetail.quantity;
}

if(tw.local.orderDetail.unitPrice == 0 ){
tw.local.updatedUnitPricePercent = 1;
}else{
tw.local.updatedUnitPricePercent = (tw.local.orderDetail.updatedUnitPrice -
tw.local.orderDetail.unitPrice)*1.00/tw.local.orderDetail.unitPrice;
}

双击规则脚本,打开它以便对其进行编辑。请单击 Rule 选项卡,然后单击 Add a variable (column) to the rule 图标(左上侧的绿色加号)来添加变量 updatedQuantityPercent 和 updatedUnitPricePercent。

依据上一节中描述的业务规则指定每个单元的值。结果应该类似于图 7。

图 7. 规则脚本

最后,您需要指定 Need Buyer's Reconfirm? 活动与 Rule 服务之间的输入映射。在本示例中,输入的值为:tw.local.order.orderDetail[tw.system.step.counter]。

测试流程

Lombardi Authoring Environment Inspector 是迭代式流程开发方法的关键。使用 Inspector,开发人员可在 Process Center 服务器或远程运行时流程服务器上运行流程和服务。整个开发团队可使用 Inspector 来运行和测试流程。

要运行一个流程,然后在 Inspector 中管理该流程的正在运行和已完成的实例,可执行以下步骤:

打开 Purchase Order Process 并单击右上侧的 Run Process 图标。当提示您是否希望更改 Inspector 界面时,请单击 Yes。

在 Process Instances 选项卡上,您可以看到所有当前活动和已完成的流程实例。要控制实例,可从列表中选择一个实例,然后单击您想要的工具栏选项。例如,要停止您之前启动的一个实例,可以单击该实例,然后单击相关图标来终止该实例。

单击新的或收到的任务,然后单击右上侧的 Run task 图标,如图 8 所示。在一些情形下,您可能需要选择一个用户帐户和密码,才能运行一项任务。这由活动的通道分配和路由来控制。

图 8. 运行 Submit Purchase Order 任务

选择 Task:Submit Purchase Order 并单击 Runs the selected task。在购买订单 BPD 中,Submit Purchase Order 任务的 coach 会在浏览器中打开,如图 9 所示。

填充字段并单击 OK 按钮。BPD 会继续下一个步骤。Inspector 通过在 BPD 图和树视图中将标志移动到下一步来显示进度。

图 9. Submit Purchase Order coach 用户界面

结束语

本文介绍了如何使用 WebSphere Lombardi Edition V7.1 的一些常用功能建模业务流程。这些常用功能包括 BPD、Integration 服务、Human 服务和 Rule 服务。在第 3 部分中,您将学习如何使用 WebSphere Lombardi Edition V7.1 的高级功能来充实示例流程,添加更复杂的需求和用户交互。

   
次浏览       
相关文章

多维方法来开发有机的业务流程架构
SCA 应用程序开发
BPM 和 SOA 性能最佳实践
实现企业服务总线模式
相关文档

SCA介绍及应用实例
基于SOA架构的ESB平台:Infomagic
SCA架构
SOA的基本概念
相关课程

面向应用的架构设计实践
单元测试+重构+设计模式
软件架构师—高级实践
软件架构设计方法、案例与实践
最新课程计划
信息架构建模(基于UML+EA)3-21[北京]
软件架构设计师 3-21[北京]
图数据库与知识图谱 3-25[北京]
业务架构设计 4-11[北京]
SysML和EA系统设计与建模 4-22[北京]
DoDAF规范、模型与实例 5-23[北京]

基于SOA的工作流(WF)整合
SOA 100问 - 问与答
SOAP 应用模式:处理与性能
ESB架构之企业实施案例
基于SOA架构的企业集成系统
基于SOA的体系架构设计
更多...   


面向应用的架构设计实践
单元测试+重构+设计模式
软件架构师—高级实践
软件架构设计方法、案例与实践
嵌入式软件架构设计—高级实践
SOA体系结构实践


某第三方电子支付企业 SOA架构设计
某电子企业 SOA应用
中国移动 SOA培训
北京大学 SOA架构设计实践
友邦保险 SOA架构设计
上海 SOA架构实践
山东移动通信 SOA体系结构实践
更多...