Cordys BOP 4平台开发入门实战演练——For Each流程建模开发

关于For Each

    For Each是BPMN组结构,并且体现应该执行消息内每个子单元的活动或子流程。For Each循环使用一个计数器,称为一个详尽描述重复执行相同活动的迭代器。For Each代表图如下图1所示。

    Cordys BOP 4平台开发入门实战演练——For Each流程建模开发_第1张图片

                                                    图1

    迭代器有下述3个数值:

  • 初始迭代器值
  • 增量值
  • 执行条件

    在执行条件失败时循环结束。应复制对于结构中“Message Map”的递归元素(Element)的XPath去工作。


For Each循环流程实践

(1)新建BPM流程

    按下图2所示,用鼠标圈上活动环节,点击鼠标右键,在弹出菜单中选中“Group as”,及后续弹出选中“For Each”,创建For Each组。

Cordys BOP 4平台开发入门实战演练——For Each流程建模开发_第2张图片

                                                               图2

    拖拽与活动组相关的箭头到For Each组边界,调整好的流程图如图1所示。

(2)创建Message名称为ApplyMsg

    在Message中Element为重复记录,先定义Element为apply,在apply中再定义Element分别为name和data。如下图3所示。

    Cordys BOP 4平台开发入门实战演练——For Each流程建模开发_第3张图片

                  图3

(3)新建测试XForm表单

    Cordys BOP 4平台开发入门实战演练——For Each流程建模开发_第4张图片

                                     图4

    在图例4的XForm中新建两个Input分别为名称(Input1)和数量(Input2),拖拽绑定表单到活动环节上。


(4)配置For Each属性Properties

    Cordys BOP 4平台开发入门实战演练——For Each流程建模开发_第5张图片

                         图5

    在For Each的属性(Properties)页面的General分页中,需要在Iterator Name输入框中定义迭代器名称为iteratorName。再点击Select Condition输入框中,如上图5所示点击配置查询图标,弹出XPath Editor窗口。

(5)配置For Each条件

     Cordys BOP 4平台开发入门实战演练——For Each流程建模开发_第6张图片

                                           图6

    在XPath Editor界面,拖拽messagemap中的ApplyMsg到XPath窗口,删除调其中的“text()”文本。为什么呢?因为是传入Message是多行记录,是apply元素多条记录。

(6)环节绑定Message

    在TestForEach活动环节上把表单上输入框与Message绑定:name对应Input1,data对应Input2,如下图7所示。

    Cordys BOP 4平台开发入门实战演练——For Each流程建模开发_第7张图片

                                       图7

    注意:需要定位到内部Element,体现出是循环多条记录,针对传入messagemap的实例(instance),其中的实例变量是iteratorName。这样,按下图8所示,第一步先拖拽“instance:iteratorName”到XPath窗口,第二步再拖拽“bpm:name”到前字符串后面,第三步修改字符串为:instance:iteratorName/bpm:name/text()。对于data元素,最后则为:instance:iteratorName/bpm:data/text()。

    Cordys BOP 4平台开发入门实战演练——For Each流程建模开发_第8张图片

                                             图8

    图例8中,详细操作过程如下:

    (第1步)instance:iteratorName/text()

    (第2步)bpm:ApplyMsg/bpm:apply/bpm:name/text()

    (第3步)手动编辑合并为:instance:iteratorName/bpm:name/text()

    含义是按instance:iteratorName变量迭代,取多重变量bpm:name/text()。

测试流程

(1)开始Debug流程

    在TestForEach流程建模界面,点击鼠标右键,进入Bebug界面。

    Cordys BOP 4平台开发入门实战演练——For Each流程建模开发_第9张图片

                                             图9

(2)执行“Activity By Activity”传入Message

<ApplyMsg xmlns="http://schemas.cordys.com/default">

  <def:apply xmlns:def="http://schemas.cordys.com/default">
    <def:name>PARAMETER</def:name>
    <def:data>PARAMETER</def:data>
  </def:apply>
</ApplyMsg>

    修改传入参数如下:

<ApplyMsg xmlns="http://schemas.cordys.com/default">
  <def:apply xmlns:def="http://schemas.cordys.com/default">
    <def:name>1</def:name>
    <def:data>1</def:data>
  </def:apply>
  <def:apply xmlns:def="http://schemas.cordys.com/default">
    <def:name>2</def:name>
    <def:data>2</def:data>
  </def:apply>
</ApplyMsg>

(3)执行将弹出2次XForm界面
    迭代第一次:
    Cordys BOP 4平台开发入门实战演练——For Each流程建模开发_第10张图片
                      图10
    迭代第二次:
    Cordys BOP 4平台开发入门实战演练——For Each流程建模开发_第11张图片
                            图11
    For Each流程建模测试完成。

    由于作者水平有限,欢迎反馈讨论。



详尽操作参见:
 Cordys BOP 4平台开发入门实战演练——流程建模开发(BPM) 肖永威 2015.4

你可能感兴趣的:(for,each,bpmn,流程建模)