转载

协作式业务流程开发,第 1 部分: 启动流程

通过协作完成工作

在如今的企业中完成工作,离不开与来自全组织的人的通力合作。业务分析师和开发人员是两个紧密合作来创建有效的业务流程的群体。业务分析师考虑的是组织如何快速高效地完成一组任务。业务分析师常常专注于组织中的人员。开发人员通过技术知识为业务分析师的优势提供补充,这些知识可用于为特殊条件创建自定义代码,有效地使用应用程序和系统来自动化一些任务。

IBM® Business Process Manager (BPM) Advanced V8.5 适用于这种协作开发环境,因为它的集成开发环境(Process Designer 和 Integration Designer)适合这两种类型的用户。业务分析师使用 Process Designer 构建总体业务流程,包括业务流程与组织中的人员的交互。IT 开发人员使用 Integration Designer 添加自定义代码,重用现有应用程序,并访问后端系统来获得必要的数据。这两个集成开发环境共享同一个运行时,即 Process Center。在本文中,您将同时担任这两种角色,在共享的运行时中用两种开发环境开发一个业务流程并运行该流程。

尽管本文介绍了如何启动并运行一种协作式方法,但您还应该阅读本文的参考资料部分引用的一些文章。这些文章介绍了使用 Process Designer 和 Integration Designer 开发业务流程时应当遵循的最佳实践。

回页首

业务流程的分析和设计

“我们的客户正流失到竞争对手那里,” John 在一次与 Susan 一起喝咖啡时这样说。“竞争对手告诉他们,我们发给客户的能源账单高得离谱,他们可提供某种新技术(比如太阳能面板)来节省许多钱。”

“我们如何应付这种情况?” Susan 问。

“我们的客户服务人员通过电话联系了我们丢失的那些客户,向他们表示,如果他们愿意回来,我们有一项新的节能计划将会节省他们的能源成本,” John 说。“一些客户回来了,但大多数客户都表明已经太迟了。”

Susan 开始在餐巾纸上记下她的想法。

“我们最好做点什么,尤其是如果我们希望在未来的一年还有工作做,” 她眨了下眼睛说道。“ 在这里,我们有一个业务流程计划,我们可以使用 IBM 的 Business Process Manager Advanced 分 3 个阶段进行开发。我们的目标是通知那些可能打算离开的客户,在他们变成别人的客户之前向他们提供我们自己的技术计划。”

“第一个阶段是在 Process Designer 中设计总体业务流程,在 Integration Designer 中实现一个活动,” Susan 继续说道。“ 此活动可以识别已采用我们自己的节能计划的客户。通过排除一些客户,我们可以将精力集中在由于增高的能源成本而很可能离开的客户。”

“第二个阶段是在 Integration Designer 中重用一个应用程序,告诉我们的客户,他们是否发现其能源账单上涨了 15% 以上,” Susan 继续分析。“这些客户离开的几率很高。第三个阶段将再次使用 Integration Designer,从后端系统上的的客户数据中获取客户的电子邮件地址。然后,在这些客户离开我们之前,通过电子邮件向他们发送我们自己的节能产品组合。”

“听起来像是一个不错的计划,” John 看着 Susan 的餐巾纸上的草图,更加乐观地说。“我今天将在 Process Designer 中开发这个业务流程。”

回页首

开始开发业务流程

在本文中,您将使用 Process Designer 和 Integration Designer 来构建并测试 John 和 Susan 携手开发的业务流程。有时您将是在 Process Designer 中工作的业务分析师 Jhon,有时您将是 Integration Developer 中的 IT 开发人员 Susan。

在这个由两部分组成的文章系列的第 1 部分中,您将设计该业务流程,实现并测试它的一部分。第 2 部分 将完成该业务流程的实现。如果希望自行尝试构建此应用程序,那么可以下载已创建的业务流程和额外的代码。

我们首先要扮演的是 John,并使用 Process Designer 设计该业务流程。请注意,在这两篇文章中,并不会涉及到 John 和 Susan 的工作的所有细节。但是,在阅读这两篇文章之后,您将会有足够的信息来开发一个类似的应用程序。可以查看本文中提供的已完成的业务流程。

  1. 启动 Process Designer 并单击 Create New Process App 。将该流程应用程序命名为 “Customer Retainer” 并加上您的首字母,添加以下描述:“找到具有较高的能源账单的客户,为他们提供一个将为他们省钱的更新计划。” 如果您想要在 Process Center 中的许多业务流程中识别您自己的业务流程,那么添加您的首字母是一种惯用做法。
  2. 在 Customer Retainer 旁边,单击 Open in Designer 在 Process Designer 中打开您的应用程序。

现在停下来想想 John 想要创建的业务流程。与任何应用程序一样,在开始实现任何功能之前,最好仔细考虑业务流程的设计。以下是 John 希望该业务流程做的事情。

  • 获取一个客户编号作为输入。
  • 检查该客户编号是否来自已采用节能计划的客户。对于这类客户,不需要做任何事情。
  • 识别能源账单增幅低于 15% 的客户编号。这些客户采用节能计划的优先级较低,因为他们的账单在能源成本上没有显著增加。
  • 识别能源账单增幅高于 15% 的客户编号。这些客户很可能由于能源成本太高而离开,寻找其他竞争公司。但是,这些客户也是采用节能计划的动机最强的客户。
  • 找到能源账单增幅高于 15% 的客户的电子邮件地址,向他们发送一封有关节能计划的电子邮件。

回页首

设计业务流程

要构建业务流程,请单击 Processes 旁边的 + 符号,选择 Business Process Definition 并将该流程命名为 Customer Retainer。您看到的两条通道是 Team 通道和 System 通道。Team 通道是该业务流程涉及人员的部分,System 通道是该业务流程设计程序的部分。通过从面板中拖放活动功能来创建设计,该面板位于业务流程编辑器的右侧,将这些功能排列在画布上。在数据流达到一个决策点时,使用网关功能。

业务流程的所有数据流都是通过使用序列流功能将各项功能连接在一起来处理的。定期保存工作是一个不错的想法。形成您的业务流程的每个元素,根据您想要它执行的功能来为它命名。

图 1 显示了 John 创建的设计。您也可以创建同样的设计。请注意,依据不同的通道,这些图标会有细微的变化。Team 通道假设某个人将参与该活动。System 通道假设一个程序将处理某个功能。任何活动都通过从面板拖放 Activity 来创建。决策由 Gateway 图标执行。要将各部分连接起来(通常称为连线),可以使用 Sequence Flow 图标。

我们看看该设计。业务流程首先获取客户编号,检查该客户是否已采用节能计划。执行此检查很重要,因为如果客户已经采用了节能计划,则无需执行进一步的处理。接下来,业务流程显示了这个已采用节能计划的客户的客户编号。如果该客户编号未在节能计划中,那么业务流程请求获得该客户的能源账单的增长数据,然后检查增幅是否超过了某个标准,该标准被设置为 15%。这些活动如图 1 所示。

图 1. 检查客户是否已采用节能计划

协作式业务流程开发,第 1 部分: 启动流程

如果客户未采用节能计划,而且能源账单增幅低于该条件 (15%),Increase Over Criteria 网关上执行的决策会导致显示该客户编号。John 和 Susan 寻找的目标客户是超过 15% 的标准的客户。这类客户可能很快就会成为竞争对手的客户。获取客户的信息后,向他们发送一封电子邮件,其中包含削减能源成本的新节能计划。这些活动如图 2 所示。

图 2. 向超过标准的客户发送电子邮件

协作式业务流程开发,第 1 部分: 启动流程

回页首

在组件间传递数据的变量

在设计业务流程的数据流之后,是时候开始实现我们的计划了。一个不错的起点是变量。这些变量是在业务流程中的组件间传递数据的方式。对于 John,他需要一个表示客户帐号的变量,一个表明客户是否已采用节能计划的变量,一个捕获客户能源账单增幅的变量,以及一个包含客户的个人信息(比如电子邮件地址和姓名)的变量。

这些变量被分解为输入变量(捕获用户输入的信息或将传递到系统中的变量)和输出变量(来自已转换该数据的业务流程部分的变量)。

具体来讲,输入变量如下所示:

  • customerID (String) :这是客户的帐号。
  • increaseMax (Integer) :这是客户能源账单增幅的最大值。如果能源账单增幅高于此值,则表明客户的账单发生了显著增长,该客户可能很快成为竞争对手的客户。
  • customerInfoInput (customerPersonal) :customerPersonal 包含电子邮件(字符串)、名字(字符串)和姓氏(字符串) – 客户的个人信息。请注意,customerPersonal 是一种复杂类型,它表示一个业务对象 (BO)。

输出变量如下所示:

  • customerInfoOutput (customerPersonal) :这是客户的个人信息。因为业务流程将转换客户的个人信息,所以 John 创建了一个输入变量和输出变量。
  • energySaver (String ):这是一个指示符,表明客户是否已采用节能计划。
  • energyIncrease (Integer) :这个指示符表明了客户的能源账单中的增幅。

为了创建这些变量,John 在 Customer Retainer 业务流程定义中时单击 Variables 选项卡,使用 Add InputAdd Output 按钮添加这些变量。他可以在 Variable Types 节中更改变量的类型。通过单击 Variable Types 节中的 New ,他创建了 customerPersonal 业务对象,该对象拥有自己的表示客户个人信息的变量集合。

对于 increaseMax,他还使用 Has Default 属性,并将该属性设置为 15,因为我们的目的是选择能源账单增幅超过 15% 的客户。

您可以参考附加的流程应用程序,在您构建自己的应用程序时,可以自行创建这些变量,以便省去一些不必要的工作。您将在 Variables 编辑器中看到以下各项,如图 3 所示。

图 3. 一个业务流程的变量

协作式业务流程开发,第 1 部分: 启动流程

获取或显示信息的用户界面

作为业务流程的第一次迭代,John 首先将会创建用户界面。他记住了与 Susan 的对话。第一个阶段是设计总体业务流程,并在 Integration Designer 中实现一个活动。此活动将会识别已采用节能计划的客户。通过排除这些客户,John 和 Susan 可将精力集中在很可能由于其增高的能源成本而离开的客户。

他认识到他可以创建用户界面来获取客户编号,以便开始整个业务流程,然后创建一个用户界面来显示已采用节能计划的客户。

John 按照这些步骤创建了自己的用户界面来获取客户编号。

在业务流程中,他选择并右键单击 Get Customer Number 。然后从菜单中选择 Activity Wizard 。在 Activity Wizard 页面上,他看到名称是相同的,活动类型为 User Task 。名称 Get Customer Number 已在 Library Element Selection 下列出。本节还支持将另一个服务与该活动相关联,但 John 希望使用他自己创建的服务。他进入到了下一页。

下一页显示了他创建的所有变量,这些变量可供此用户界面使用。John 单击 Finish 。John 创建了一个人工服务。例如,如果他单击导航栏中的 User Interface ,那么他会看到一个名为 “Get Customer Name” 的新人工服务。当然,John 仍需要执行一些开发工作。

在 Activity Wizard 关闭时,John 返回到了业务流程中。他保存了自己的工作。双击 Get Customer Number 活动,在人工服务编辑器中打开它。像业务流程一样,此服务有一个 StartEnd 图标。只有一个活动,即 Coach 活动。请注意,Coach 是一个用户界面的名称,因为 Coach 为构建用户界面的人提供了帮助。

John 将 Coach 的名称更改为 “Get Customer Number”,如图 4 所示。John 注意到,该用户界面中已经添加了一个按钮。为什么这个按钮这么重要?在运行一个业务流程且到达该业务流程中的一个需要用户提供信息的步骤时,如果没有这个按钮,业务流程将会挂起!为什么?因为没有这个按钮,业务流程将无法确定用户是否已完成必要信息的输入,所以业务流程会无限期等待。

图 4. 创建人工服务

协作式业务流程开发,第 1 部分: 启动流程

John 双击 Get Customer Number 打开 Coach 编辑器构建用户界面。他注意到,基于这些变量,系统已经为他创建了许多用户界面元素。他删除了除 customerID 外的所有元素。然后拖入一个 Vertical Section 作为框架,将 customerID variable 拖入到该框架中,在属性中更改各个名称,创建用户界面,如图 5 所示。如果您在阅读本文的过程中构建这个流程应用程序,那么您可以尝试为自己的流程应用程序构建一个类似的用户界面。

图 5. 创建用户界面

协作式业务流程开发,第 1 部分: 启动流程

John 创建了一个类似的用户界面来显示客户是否已采用节能计划。他从 Display If Energy Saver 活动中选择 Activity Wizard 来开始创建这个用户界面。将这个 Coach 重命名为 “Display If Energy Saver”。这一次,他保留 customerID 和 energySaver 变量,然后在该 Coach 中使用它们。他将按钮名称更改为 “Close”。为什么?如果客户已采用节能计划,那么除了结束该业务流程之外,没有其他任何要做的事情。如果再次查看 John 的设计,就可以看到单击 Close 按钮会结束该流程。

John 认识到他可以测试自己的用户界面,单击右上角的 Run Service 指示符来查看它在运行时的样子,如图 6 所示。

图 6. 测试用户界面

协作式业务流程开发,第 1 部分: 启动流程

John 的用户界面类似于图 7 中的用户界面。

图 7. 在运行时的用户界面

协作式业务流程开发,第 1 部分: 启动流程

回页首

创建 Advanced Integration Services

John 认识到他需要创建其他一些必要的项目,才能与在 Integration Designer 中工作的 Susan 携手工作。他需要创建一些 Advanced Integration Services。这些服务可帮助 Process Designer 和 Integration Designer 协同工作。

具体地讲,他需要创建一个 Advanced Integration Service 来确定客户的编号是否已采用节能计划。他还需要创建一个 Advanced Integration Service 来获取可通过加入节能计划而受益的客户的个人信息。

请注意,John 不需要为 Get Energy Bill Increase 组件创建一个 Advanced Integration Service。为什么?Susan 告诉他,此服务已存在于 Integration Designer 中。Susan 向他公开该服务,这使得 Process Designer 也可看到它。然后,他可以将该服务附加到他的组件。

一个 Advanced Integration Service 会自动创建。完成创建之后,Activity Wizard 会转到创建的 Advanced Integration Service。

John 选择 Implementation > Advanced Integration Service 。在随后出现的对话框中,他将其服务命名为 “Check For Energy Saver Service”,并为该服务添加了一段描述。在编辑器中的 Parameters 下,他添加了一个字符串类型的 customerID 作为输入。他添加了一个字符串类型的 energySaver 作为输出,如图 8 所示。

如果自行构建一个 Advanced Integration Service,您可以做另一件事:添加一个变量来表示一个错误条件。在业务流程从其他地方调用一个实现时可能发生故障,所以拥有错误消息,该消息会表明是哪个 Advanced Integration Service 发生了故障。

然后,John 保存工作并关闭编辑器。请注意,这些变量是 Advanced Integration Service 的局部变量,但他们拥有与全局变量相同的名称和类型。

图 8. 创建 Advanced Integration Service

协作式业务流程开发,第 1 部分: 启动流程

John 从他的业务流程中选择 Check For Energy Saver 。在使用 Activity Wizard 时,John 注意到活动类型为 System Task ,而不是 User Task。系统任务由系统完成,而不是由人来完成。他选择了 Attach an existing Service or Process 。在 Advanced Integration Service 下的一个菜单中,他选择了 Check For Energy Saver Service 。他单击 Finish 并保存自己的工作。

如何处理这些变量?请记住,服务中创建的变量是局部变量。在 IBM BPM 看到局部变量和全局变量具有相同的名称和类型时,它会自动为它们建立映射关系。当 John 在 Properties 视图中选择 Data Mapping 选项卡时,就会看到变量的映射方式。图 9 显示了输入变量映射关系。

图 9. 映射变量

协作式业务流程开发,第 1 部分: 启动流程

John 重复这个创建过程创建了一个 Get Customer Information Service,它具有输入参数 customerID (String) 和 customerInfoInput (customerPersonal),以及输出参数 customerInfoOutput (customerPersonal),如图 10 所示。请注意,业务对象(或复杂类型)是作为变量传递的。然后,通过使用 Activity Wizard,他将自己的 Get Customer Information Service 附加到 Get Customer Information 活动。他通过检查 Properties 视图中的 Data Mapping 选项卡,检查他的局部变量是否是采用与全局变量的相同方式创建的。

图 10. 创建一个具有业务对象的 Advanced Integration Service

协作式业务流程开发,第 1 部分: 启动流程

先轮到 Susan 上场了。请记住,业务流程中的开发是协作式的。John 电话联系 Susan,询问她能否实现 Advanced Integration Service 的第一部分。实现这一部分使得业务流程能够确定所检查的客户编号是否已属于某位节能客户。如果是,那么业务流程不需要对它执行任何进一步处理。

回页首

在 Integration Designer 中工作

Process Designer 可供像 John 这样的业务分析师使用。该工具可用于布局业务流程,创建用户界面,创建通常指向其他进行实际开发的区域的服务。例如,对于一个 Advanced Integration Service,John 使用输入和输出变量实际创建了 shell,并将编码工作留给 Susan。

Integration Designer 可供像 Susan 这样的 IT 专业人员使用。它适合开发人员。在 Integration Designer 中工作时,它的特征不同于 Process Designer。例如,Process Designer 与一个特定的 Process Center 紧密相连。这是一种一对一的关系。保存 Process Designer 中的工作时,您会写入并更新一个特定的 Process Center。

在 Integration Designer 中,您不会与一个 Process Center 紧密相连。您决定要使用哪个 Process Center。换句话说,您与一个 Process Center 是松散连接的。这是一种一对多的关系,因为 Integration Designer 可以连接许多 Process Center。

这种安排很有用,因为许多组织将拥有许多像 John 这样的业务用户,他们从业务角度看待其企业问题并希望快速建模其业务流程。但是,大多数组织也将拥有像 Susan 这样的员工,他们在需要时为像 John 这样的人编写业务流程中所需的自定义代码。

Susan 要在 Integration Designer 中做的第一件事是,在 Preferences 节中表明要访问哪个 Process Center 和访问它所使用的密码,如图 11 所示。Susan 从 John 获取此信息。

图 11. 在 Preferences 中指定 Process Center 位置

协作式业务流程开发,第 1 部分: 启动流程

接下来,Susan 需要将 Process Center(John 在这里创建了他的项目)中的工作带到她的 Integration Designer 工作区中。当 Susan 转到 Process Center 时,她发现了 Customer Retainer 流程应用程序。她单击它旁边的 Open in Workspace 将该流程应用程序调入到 Integration Developer 中。请注意,在 John 使用 Process Center 时,他单击 Open in Designer 来将同一个流程应用程序调入 Process Designer 中。

图 12 显示了 Susan 在 Integration Designer 中看到的内容,如果您按照步骤创建自己的应用程序,您就会看到相应的内容。

图 12. 将未实现的 Advanced Integration Services 调入 Integration Designer 中

协作式业务流程开发,第 1 部分: 启动流程

要注意的一些地方是:两个 Advanced Integration Services 都被标记为 unimplemented 。Process Designer 中创建的业务对象 customerPersonal 位于一个库中,这个库在 Process Designer 和 Integration Designer 之间共享对象。已为 Advanced Integration Services 创建了接口,这些接口也已放在库中。

Susan 首先在总体上实现 Advanced Integration Services:Check For Energy Saver Service 和 Get Customer Information Service。

Susan 首先选择 Get Customer Information Service 并单击 Implement 。在下面的菜单中,Susan 选择了 Empty implementation ,如图 13 所示。Susan 打算在以后需要查找可从节能计划获益的客户的信息时,能够在与 John 的迭代中完成此实现。

图 13. 创建空的实现

协作式业务流程开发,第 1 部分: 启动流程

创建一个导出,如图 14 所示。什么是导出?在 Integration Designer 中, 导出 将 Integration Designer 中的实现向外部服务器、应用程序或工具(比如 Process Designer 和 Process Center)公开。

图 14. 创建一个导出

协作式业务流程开发,第 1 部分: 启动流程

Susan 接下来需要使用 Check For Energy Saver Service。Check For Energy Saver Service 是 Susan 想要在与 John 的第一次迭代中完成的 Advanced Integration Service。对于这个 Advanced Integration Service,Susan 选择了一个 Java component 实现,如图 15 所示。Susan 被告知,采用节能计划的客户的客户编号中包含字符 “1GRN”,所以只需编写几行 Java™ 代码,就可以检查客户编号是否已是采用节能计划的客户。

图 15. 创建 Java 实现

协作式业务流程开发,第 1 部分: 启动流程

在您做出此选择后,Integration Designer 会自动构建一个 shell Java 应用程序。Susan 在寻找一个 invoke 方法,它在这个方法中找到了需要实现的方法的提示。她将在 Process Designer 和 Integration Designer 之间传递客户编号的 invoke 方法,替换为一些在客户编号中寻找 1GRN 的代码行。此方法的 Java 代码如清单 1 所示。您也可以在本文的下载部分找到此代码。

在大多数业务流程中,要做的工作不仅仅是添加一些 Java 代码。出于教学用途,我们打算展示 Integration Designer 中的工作是如何与来自 Process Designer 的工作进行交互的。

如果按照本文的步骤自行操作,您可以将此 Java 代码添加到 invoke 方法中。

清单 1. 确定客户是否使用了节能计划的方法

public String invoke (String customerID) { // Initialize local variable String sLocal = "Yes";  // Determine if customer number represents an // energy saver and return a Yes or No value if (customerID.startsWith("1")) {  if (customerID.startsWith("1GRN")) { sLocal = "Yes"; } else { sLocal = "No"; } } else if (customerID.startsWith("0")) { sLocal = "No"; }  return new String(sLocal); }

Susan 保存了她的工作并关闭了 Java 编辑器。她的 Java 实现显示在 CheckForEnergySaverService 导出旁边,如图 16 所示。不同于在 Process Designer 中工作,在 Integration Designer 中工作时保存工作不会将工作保存到 Process Center 中。请记住,在 Integration Designer 中工作的人可连接到无限多个 Process Center。这很有用,因为像 Susan 这样的人可与多个像 John 这样的业务流程设计人员合作。

图 16. 连接到一个导出的 Java 实现

协作式业务流程开发,第 1 部分: 启动流程

为了将工作推送到 John 所使用的 Process Center,Susan 选择了她的 Customer Retainer 流程应用程序并单击 Refresh and Publish 。此命令将她的工作与 Process Center 中的当前工作同步。

现在 Susan 可以开始对 Check For Energy Saver Service 执行单元测试,通过查看 Assembly 编辑器中的图标就可以看到该服务已准备就绪。

回页首

Integration Designer 中的单元测试

单元测试意味着测试一个有限的领域。在这种情况下,Susan 希望检查一个客户编号(比如 “1GRN5555” 是否返回了 “Yes”。也就是说,客户已经采用了节能计划。但是,像 1TOR1234 这样的客户编号户会返回 “No”。Integration Designer 内置了一个测试框架。为了使用该框架,Susan 选择了 “Customer Retainer” 并启动 Test > Test Process Application 。然后,她选择了测试组件 CheckForEnergySaverService 和操作 invoke,输入 “1GRN5555” 作为 customerID 变量的值,如图 17 所示。

图 17. 启动 Integration Test Client

协作式业务流程开发,第 1 部分: 启动流程

然后,Susan 运行了 Integration Test Client 工具。energySaver 变量返回 “Yes”。Susan 对 1TOR1234 重复了该测试,它返回 “No”。此客户编号未采用节能计划,如图 18 所示。

图 18. 评估测试的结果

协作式业务流程开发,第 1 部分: 启动流程

随后,Susan 调用了 Refresh and Publish 命令来将她的更改推送到 Process Center。请记住,Integration Designer 与 Process Center 的连接比较松散,不像与 Process Center 紧密连接的 Process Designer。必须从 Integration Designer 刷新并发布,才能将更新推送到 Process Center。

她告诉 John,其项目的第一次迭代已准备好使用 Process Designer 中的另一个测试工具全面测试。这里的区别在于,Process Designer 测试工具(名为 Inspector)包含用于输入数据的普通用户界面。

回页首

实现一个决策网关

在开始测试第一次迭代之前,John 还有另一项任务要做。他需要实现一个决策网关。决策网关是业务流程中的一个点,它以某种方式发送数据。具体地讲,他需要实现 Energy Saver Separator。如果从 Susan 在 Integration Designer 中实现的 Advanced Integration Service 返回 “Yes”,那么数据将会进入 “Display If Energy Saver” 活动。

他选择了 Energy Saver Separator 并单击 Implementation 选项卡。在 Decisions 节下,他使用一个图标选择一个变量,使用一个用户界面选项来选择一个操作符,然后键入文本来创建 “to Display If Energy Saver” 路径的 JavaScript 语句的等效代码: tw.local.energySaver == "Yes";

他使用同样的方式创建 “to Get Energy Bill Increase” 路径的 JavaScript 语句的等效代码,如图 19 所示: tw.local.energySaver == "No"; 。他保存工作并准备测试第一次迭代。如果构建这个业务流程,那么可以尝试实现该决策网关。或者,看看本文中包含的流程应用程序。

图 19. 实现一个决策网关

协作式业务流程开发,第 1 部分: 启动流程

出于教学的用途,我们使用了一个简单的二选一的决策。但是,对于在运行时可能存在许多条件的真实应用程序,很可能会使用业务操作语言 (Business Action Language, BAL) 规则来创建决策服务。

回页首

使用 Inspector 执行单元测试

John 启动了 Process Designer,对其项目的第一次迭代执行测试。目的类似于 Susan 的测试:类似 1GRN5555 这样的值返回 “Yes”– 客户编号表明客户采用了节能计划。请注意,John 无法测试 Susan 使用的另一个值 1TOR1234,因为他需要完成业务流程的更多工作,才能确定在客户未采用节能计划时需要做什么。

John 从用户的视角进行测试。他运行了自己使用 Coach 编辑器创建的用户界面,输入测试值,然后再次在另一个用户界面中查看输出,该用户界面显示了客户已采用节能计划时的结果。他的测试是使用一个名为 Inspector 的测试工具在 Process Designer 内执行的。如果已在自行构建此流程应用程序,那么还可以使用 Inspector 测试您的应用程序。为了启动 Inspector,John 打开他的 Customer Retainer 流程并单击 Run Process 图标,如图 20 所示。

图 20. 启动 Inspector

协作式业务流程开发,第 1 部分: 启动流程

单击 Run Process 将 IBM BPM 切换到运行时。在运行时,可以找到在开发时很难发现的错误。换句话说,存在开发时错误和运行时错误。

举例而言,IBM BPM 执行一些初步检查,查看变量是否都已声明并且可以在 Variables 选项卡中找到。如果找到错误,那么可以查看在继续之前需要修复的错误。除了您看到的错误之外,还可以查找 Data Mapping 区域中的错误。不要假设您为您在 Variables 选项卡中更改了一个变量,这样所有引用(比如 Data Mapping 节)都会更新。

在修复最初的运行时错误后,就可以继续执行您的操作了。系统会要求您切换到 Inspector ,这是 Process Center 运行时测试环境。单击 Yes 可以切换到 Inspector。

Inspector 停在需要输入的位置。需要输入内容的任务周围会出现一个光环。对于本例,需要输入客户编号。在业务流程上方,可以看到实例名称 (Customer Retainer)。当前运行的实例名为 Tip ,如图 21 所示。

图 21. 开始使用 Inspector

协作式业务流程开发,第 1 部分: 启动流程

为了继续执行后面的操作,可以选择第一个任务 Get Customer Number,并单击 Runs the selected task 图标,如图 22 所示。

图 22. 运行一个任务

协作式业务流程开发,第 1 部分: 启动流程

此刻,系统会要求您挑选团队中一个可运行这个流程应用程序的用户,如图 23 所示。每个活动(在运行时通常称为一个任务)都会分配一个团队中的一些团队成员。可以允许一个团队执行常规的活动,比如向业务流程提供一个客户编号,而另一个团队可能拥有添加或删除客户编号的管理权限。在安装 IBM BPM 时,会创建一个管理员名称和密码,通常可在此列表中找到这些信息。John 创建了一个 “bpmadmin” 用户 ID 和密码,所以他将使用该角色。

图 23. 选择一个角色来运行任务

协作式业务流程开发,第 1 部分: 启动流程

Coach 创建的用户界面将会出现,John 可以输入他的测试数据,测试客户是否已采用节能计划。John 输入 1GRN5555 并单击 Next ,如图 24 所示。

图 24. 输入测试数据

协作式业务流程开发,第 1 部分: 启动流程

此刻,您需要返回到 Inspector,再次检查 Tip,以便查看是否出现了一个新任务。John 单击 Customer Retainer 正在运行的实例 Tip,光环就会移动到 Display If Energy Saver 活动上。这意味着数据已传输到 Advanced Integration Service,已由 Process Center 使用 Susan 所创建的 Integration Designer 功能处理,而现在已经发回结果。结果为 “Yes”。

为了显示结果,John 可以单击 Display If Energy Saver 步骤并运行该任务,如图 25 所示。

图 25. 前进到下一个任务

协作式业务流程开发,第 1 部分: 启动流程

再一次,John 被提示选择团队的用户。然后他看到预期的结果,如图 26 所示。

图 26. 对第一次迭代的测试结果

协作式业务流程开发,第 1 部分: 启动流程

John 关闭用户界面。John 已完成测试。事实上,这是他此刻惟一可测试的业务流程部分。请注意,还有其他一些日常工作要做。您需要关闭正在运行的实例。否则,该实例将一直运行并消耗内存。要关闭正在运行的实例,可选择 Tip (Customer Retainer 流程应用程序的正在运行的实例),单击删除业务流程定义 (BPD) 的图标,如图 27 所示。

图 27. 删除正在运行的实例

协作式业务流程开发,第 1 部分: 启动流程

作为最后一个任务,John 需要创建一个快照。快照通常在一次迭代结束时创建。一些功能已开发且能够运行。这个快照会变成未来开发的基准。

快照的创建是在 Process Center 中完成的。John 选择 Customer Retainer,然后单击 Create New Snapshot 。他将其快照命名为 “Customer Retainer 1.0”,添加一段描述来表明该流程应用程序检查客户是否已采用节能计划,如图 28 所示。

图 28. 创建快照

协作式业务流程开发,第 1 部分: 启动流程

创建快照后,可以将流程应用程序导出为一个文件。

回页首

结束语

在创建这个快照后,这个由两部分组成的文章系列的第一部分就完成了。您了解了 Process Designer、Integration Designer 和 Process Center 之间的关系,以及该技术关系如何成为一个项目上的协作关系的基础。本文还介绍了如何创建一个业务流程,在 Process Designer 中创建在 Integration Designer 中实现的服务。您学习了如何在 Integration Designer 和 Inspector 中执行单元测试。还学习了如何构建用户界面和在一次开发迭代结束时创建快照。

在第二篇文章 中,我们将重点介绍 IBM BPM 如何促进业务组织的自然的协作性。这一次,我们的技术专家 Susan 将 Integration Designer 中的现有应用程序推送到 Process Designer 中;也就是说,您将看到如何让 Integration Designer 中的应用程序可供在 Process Designer 中工作的人看到。我们还将分析如何访问一个后端系统,企业将大量数据存储在这个系统中。不幸的是,该数据可能具有不同的格式,所以您还将学习如何使用映射将数据转换为不同环境中需要的格式。

致谢

感谢 Paul Pacholski 审阅本系列文章。

回页首

下载

描述 名字 大小
代码示例 code_sample.zip 467KB
正文到此结束
Loading...