当前所在位置: 首页 >BPM教程 >正文

返回列表页

合并/拆分

时间:2012-08-16分类栏目:BPM工具作者:佚名

1. 关于本章

简介:

本章我们将学习如何对流程实例进行拆分/合并。流程的拆分/合并活动是流程设计中常见的,重要的用于提高流程的执行效率的一种方法。

目标:

 使用Studio图形化的设计拆分/合并回路。

 使用Code Editor来为回路的跳转条件编写相关的逻辑代码。

 使用Code Editor来编写显示与语句来验证在拆分/合并回路中设置的变量已经成功的被合并活动所传递。

 使用Work Portal来测试拆分/合并回路。

任务:

流程说明文档用于帮助业务分析人员,开发人员及最终用户理解整个流程及流程中的活动。

1) 在流程中增加一个拆分/合并回路。

2) 为合并活动增加逻辑操作。

3) 测试拆分/合并回路

预览:

splitjoin

如上图所示,一个拆分活动 允许一个流程实例被拆分成多个并行实例同时运行。这些任务的同时执行将显著的缩短流程从开始节点到结束节点的流转的周期。

在运行状态,经过拆分节点后,将为其后的每个分支产生流程实例的副本。在上面的例子中,经过拆分节点后,将同时产生"Check Credit"活动,"Check Inventory"活动和"Check Freight"活动

在流程中,拆分活动和合并活动都是成对出现的,合并活动用于结束整个回路并继续正常流程的运行。拆分活动产生的流程实例的副本在合并节点被收集。一个拆分活动至少具有两个流出跳转。在拆分/合并回路中的活动不能具有跳出回路的跳转,也不能就具有跳入到回路的跳转。

2. 任务一:在流程中增加拆分/合并回路

增加拆分/合并回路

1. 在Studio中打开上一章中我们完成的流程。

2.如下图所示:增加两个新的AutomaticHandler角色

splitjoin

当增加AutomaticHandler角色的时候,在Name栏不要输入任何的名称,而是通过下拉选择的方式选择AutomaticHandler。

splitjoin

3. 增加拆分 (Route Order) 的活动及拆分 (Join) 活动。移动跳转线路到如下图所示的状态:

splitjoin

4. 保持已经存在的 介入 Check Inventory和 Order Product活动的条件跳转逻辑。

5.为这些新的条件跳转增加如下的逻辑

splitjoin

6. 删除原来存在的介入Check Credit 和 Ship Product 的条件跳转。

7. 从工具栏中选择 检查 并 保存流程。

3. 任务二:在合并活动中加入逻辑代码

1.双击合并活动,增加如下的逻辑代码

splitjoin

2. 为了测试在拆分/合并回路中的变量被正确的传递,在Ship Product活动增加如下的逻辑代码:

splitjoin

3.重新发布并部署流程。

4. 通过在WorkPortal中发起一新的流程实例来测试拆分/合并回路。

4. 任务三:测试拆分/合并回路

测试一个不是Credit Order的流程实例

1.首先创建一个不是Credit Order的流程实例,在 Create Order活动的下拉列表中选择"FOB 30" 或 "PO"。

splitjoin

执行的结果是一旦实例到达Route Order的拆分活动,流程实例的复本将被发往两个方向。

splitjoin

流程的副本被分别路由到Check Inventory和Check Freight活动(这是因为我们在条件跳转逻辑中对于非credit order,不会进行CheckCred活动)。当流程实例离开了Route Order的拆分活动,在Work Portal上将看到如下的流程实例列表。

splitjoin

当流程实例到达Ship Product活动,逻辑代码被执行后,在Work Portal 上将显示下面的信息:

splitjoin

测试一个Credit Order的流程实例

2. 创建另外一个为credit order的流程实例:

splitjoin

对于Credit Order,跳转到Check Credit的条件为真。当流程实例到达Route Order拆分活动后,将产生三个流程实例的副本。

splitjoin

当流程实例到达Ship Product活动后,在work portal中将显示如下的信息。

splitjoin

我们可以看出,Credit Status为空。对于credit order,我们并不希望这里显示空值。下面我们将调试为什么 creditStatus 在这里并没有被赋值。

5. 任务四:对流程进行debug调试

1. 首先,我们尝试对问题进行描述,在这个案例中症状是当到达Ship Product活动时在creditStatus没有值。

2.检查 (Ship Product)活动中的逻辑代码

a. 检查Ship Product 活动– 是不是我们显示了正确的变量名称 (creditStatus)。

b. 检查合并活动中的逻辑代码

i.在when及子语句活动的名称是否拼写正确(没有空格字符和大小写问题),变量是在Check Credit 活动中被赋予值的。

splitjoin

ii. 当我们在Studio中查看log的时候,我们可以看到如下的log信息。

splitjoin

双击在log信息的活动名称:查看里面的代码。

iii.变量(creditStatus) 是否被正确的设置?

iv. 在赋值语句的右边是否使用 "copy."语法,并保证在语句的左边没有 "copy."。

v. 在when语法中添加log信息帮助我们进行变量值的测试。

splitjoin

重新发布并部署,在Work Portal中创建一个新的credit order,发送到Check Credit活动。

splitjoin

检查log信息

splitjoin

从上面我们可以得出线索,变量的值没有正确的传递到Join活动

3.在这里我们可以得出结论,在这个例子中,我们希望在Check Credit活动中给creditStatus赋值。然而当Credit Scores大于或等于MIN_CREDIT_SCORE Business Parameter的时候,我们没有做任何的赋值操作。

文章来源:
上一篇:Aqualogic BSI Stduio基础教程(下)下一篇:屏幕流