码迷,mamicode.com
首页 > 其他好文 > 详细

Cordys BOP 4平台的子流程与嵌入子流程对比以及子流程建模技术

时间:2015-04-24 22:46:22      阅读:429      评论:0      收藏:0      [点我收藏+]

标签:for each   子流程   嵌入子流程   bpmn   cordys   

    子流程含义是在某个流程流转过程中可以创建一个新的流程并执行,结束后可以在此返回父流程。

关于子流程

子流程

    子流程是BPMN构件,是在一个流程中的复合的活动。子流程可以分解为一系列更精细的活动。子流程通过父流程实例化。

    子流程可以设计成交易的一部分,下面列出三种可能的交易结果:

  • 成功完成(Successful completion):流程按顺序执行,并且交易执行成功;
  • 取消(Cancel):交易内的活动回滚,并且补充特定活动;
  • 异常(Exception):出现异常活动不需要回滚,将从错误事件继续流转。

嵌入子流程

    嵌入子流程是BPMN组构件,用于分组属于特定环境的活动。这有助于通过折叠一个嵌入的子流程来隐藏活动的复杂性。它也有助于链接超时异常和补偿,这是常见的嵌入子流程的所有活动。

    注:

    当超时事件附上嵌入子流程,所有未完成任务从消息箱移除。

    如果在流程执行期间遇到“终止活动(terminate actively)”,那么所有未完成任务从收件消息箱中移除,并且活动置成“废弃(Obsolete)”。这种状态从流程实例活动视图中可见。终止表示嵌入子流程终止,并且流程流转从下一个活动继续流转(在嵌入子流程之后)。嵌入子流程图例如下图所示。

    技术分享

            图1-1

子流程与嵌入子流程对比

    嵌入子流程不是一个独立流程,没有起始事件(Start event)和结束事件(End event),只是流程中的局部,为了表示简单才采用嵌入子流程方法。

    子流程是一个独立完成的流程,可供其他正常流程调用,有起始事件(Start event)和结束事件(End event)


子流程建模及使用

第一步:新建流程

    在Workspace Documents中新建Business Process Model,如下图2-1所示空白流程,包括两个活动环节,流程命名为sub_processA。

    技术分享

                                 图2-1

    对流程进行如下配置,效果如下图2-2所示。

    技术分享

                                图2-2

(1)流程挂接表单

    拖拽表单(名称为TestForEach)到流程活动环节上,如上图2-2所示,Activity分别命名为“子流程活动1”、“子流程活动2”。

(2)消息配置(Message map)

    技术分享

                                    图2-3

    创建消息(Message)名称为sub_msg,内包含两个元素(Element)sub_msg_name、sub_msg_data。

(3)消息绑定到表单

    在每个活动环节上,使用“Pre Assignments”绑定输入消息元素到表单中Input上,如上图2-3所示,使用“Post Assignments”绑定表单输入Input到消息元素上。

(4)配置流程启动事件(Start Event)

    此处配置是为流程接收父流程传入参数而设置输入消息接口,设置Start属性(Properties),其中Trigger Type为“Message”,Input Message设置为“bpm:sub_msg”(通过XPath表达式获得)。

    技术分享

                                    图2-4

(5)配置流程结束事件(End Event)

    此处配置是为流程结束时返回消息给父流程而设置的输出消息接口,设置End属性,其中End Type为“Message”,Output Message为“bpm:sub_msg”。

    注:此处的Message是在Message Map中配置过的内容。

    技术分享

                                     图2-5

(6)发布流程

    发布流程,可做为其他流程的子流程来使用。

第二步:新建流程使用子流程

    本段第二步内容是讲述流程使用子流程方法,以及父子关系的设置。

(1)新建流程

    新建流程做为父流程使用,准备使用前面所建的流程。在Business Process Model界面左侧,切换选项页面到Workspace,按下图2-6所示,拖拽上面新建流程“sub_processA”到图中。

技术分享

                                        图2-6

    拖拽到位后,所拖拽图示变成类似活动环节,再画上连接线即可,如下图2-7所示。把后续活动节点命名为主流程活动2,并绑定表单。命名流程为TestSubProcess1。

   技术分享

                                       图2-7

(2)新建主(父)流程消息(Message Map)

    创建消息(Message)名称为main_msg,内包含两个元素(Element)main_msg_name、main_msg_data。

    技术分享

                                         图2-8

(3)配置子流程活动环节

    子流程活动(sub_processA)属性定义如下:

    General内容如下图2-9所示,基本保存默认状态。

    技术分享

                                       图2-9

    Message没人如下图2-10所示,基本保持默认值即可。

    技术分享

                                        图2-10

(4)消息绑定到子流程

    这里所说的子流程就是上面拖拽进入流程中“sub_process”流程,按流程活动环节方式配置,使用“Pre Assignments”绑定输入消息元素到子流程中Message上,做为子流程的输入,如上图2-8所示,main_msg_name对应sub_msg_name、main_msg_data对应main_msg_data。使用“Post Assignments”绑定子流程结束事件消息输出主流程消息元素上。

(5)配置流程启动事件(Start Event)

    此处配置是为流程接收外部传入参数而设置输入消息接口,设置Start属性(Properties),其中Trigger Type为“Message”,Input Message设置为“bpm:main_msg”(通过XPath表达式获得)。

(6)其他配置
    略。
(7)发布流程

第三步、测试流程

(1)先测试子流程
(2)测试主流程
    在Debug测试主流程过程中,将会出现子流程Debug界面,在子流程Debug完成后,再回到主流程界面。

在子流程活动环节上使用For Each循环

第一步:新建流程

    同“子流程建模及使用”章节的第一步,在此略。

第二步:新建流程使用子流程和For Each循环

(1)新建流程

    新建流程命名为TestSubProcess2,其中“子流程在主流程1”是名称为sub_processA流程。按For Each循环方法把子流程活动配置成For Each循环组构件。

    技术分享

                                         图3-1

(2)新建主(父)流程消息(Message Map)

    创建消息(Message)名称为main_msg,先建迭代元素,命名为main_elem,内包含两个元素(Element)main_elem_name、main_elem_data。此main_msg消息承载迭代参数到子流程。

    再创建消息名称为main_ret_msg,做为接收子流程返回消息使用,接着在其内部建两个元素(Element)main_ret_msg_name、main_ret_msg_data。

    技术分享

                                         图3-2

(3)配置For Each属性

    设置迭代变量Iterator Name为iterator subprocess,选择条件值Select Condition为bpm:main_msg/bpm:main_elem。(注,此值是通过XPath选择器获得)

    技术分享

                                图3-3

(4)消息绑定到子流程

    这里所说的子流程就是上面拖拽进入流程中“sub_process”流程,按流程活动环节方式配置,使用“Pre Assignments”绑定输入消息元素到子流程中Message上,做为子流程的输入,如上图3-2所示,main_elem_name对应sub_msg_name、main_elem_data对应main_msg_data。

    注:输入消息是迭代数据,所以main_elem_name实际对应XPath表达式是instance:iterator_subprocess/bpm:main_elem_name/text(),如下图3-4所示。

    技术分享

                               图3-4

(5)绑定子流程返回消息到主流程

    使用“Post Assignments”绑定子流程结束事件消息输出主流程消息元素上,sub_msg_name对应main_ret_msg_name、sub_msg_data对应main_ret_msg_data,如下图3-5所示。

    技术分享
                                 图3-5

(7)发布流程


第三步:测试流程

    略。

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

参考:

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

Cordys BOP 4平台开发入门实战演练——流程建模开发(BPM) 肖永威 2015.4


Cordys BOP 4平台的子流程与嵌入子流程对比以及子流程建模技术

标签:for each   子流程   嵌入子流程   bpmn   cordys   

原文地址:http://blog.csdn.net/xiaoyw71/article/details/45226041

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!