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

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

关于子流程

子流程

子流程是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

时间: 2024-11-08 04:33:46

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

Cordys BOP 4平台开发入门实战演练——While循环流程建模开发及测试

关于While循环 Cordys C3版本中,While循环解释如下: While循环是BPMN组构造,用于一组活动或子流程执行所满足的While条件.在每个循环体开始,进行测试条件,如果测试结果为"假"是则不执行.因此,这组活动或子流程将执行0或多次.While结构用于执行多次循环或根本不执行:也就说,从开始条件是假,将不执行循环.当在循环体内迭代循环,当前循环的打破也是下一次循环迭代的开始.打破循环功能有助于打破或退出循环,继续执行循环体后续活动环节.While结构代表图例如下图1

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

关于Until流程 Until是BPMN组结构,用于一组活动环节或子流程在条件为真之前执行.不象While组结构,这组活动环节或子流程至少执行一次.Until结构图表示如下图1所示. 图1 Until流程建模实践 (1)Until流程建模 在Business Process Model里画出如图1所示的流程图. (2)流程绑定表单 流程绑定WhileTest表单. (3)创建Message并与表单绑定 图2 (4)流程Start活动设置Input Message (5)配置Until属性Prop

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

关于For Each For Each是BPMN组结构,并且体现应该执行消息内每个子单元的活动或子流程.For Each循环使用一个计数器,称为一个详尽描述重复执行相同活动的迭代器.For Each代表图如下图1所示. 图1 迭代器有下述3个数值: 初始迭代器值 增量值 执行条件 在执行条件失败时循环结束.应复制对于结构中"Message Map"的递归元素(Element)的XPath去工作. For Each循环流程实践 (1)新建BPM流程 按下图2所示,用鼠标圈上活动环节,点击

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

关于会签 会签是指联合发文时,由各发文机关的领导共同签署文件. 会签是撰拟公文的过程中,主办单位主动与有关单位协商并核签的一种办文程序,一般当公文的内容涉及本单位的多个部门或与其他单位有关时,需要进行会签.会签根据对象的不同分为内部会签和外部会签. 会签流程是指包含有会签环节的流程.会签动作用于多人同时审核,结束会签任务,生成下一步任务. 会签实例演练 (1)准备XForm界面 新建"BPMTestInstance"界面,如图1所示,同意.不同意为Check控件,ID分别为check_

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

1.流程建模开始 在Workspace的项目中,本文项目名称为:Training_WSApp.在项目中根目录下建立BPM文件夹,然后鼠标右键,在弹出菜单中选择New ->Business Process Model组件,进行流程建模开发. 图1 图2 2.图形化建模 在Business Process Model工作台上,图形化.拖拽绘制流程图. 图3 (1)为BPM流程配置表单(新建) 图4 注意:发布表单 图5 在Business Process Model界面中,在其左下角选择Worksp

OpenText Cordys BOP 4平台开发入门实战演练——基础理论知识

前言 随着互联网技术的发展,基于B/S结构的软件架构,呈现出多样化,所涉及到的富客户端.Webservice.WEB 2.0.HTML5等技术也粉墨登场,本文将介绍基于OpenText Cordys产品的SOA体系架构和相关开发技术,为开发人员分享另一种软件系统开发实践. 其中,富客户模型将界面分解成许多的既可以和用户直接交互又可以和服务器进行通信的小单元模块,所涉及到开发语言是JavaScript,以及围绕HTML DOM开发动态网页. 关于SOA SOA是面向服务的体系结构,它将应用程序的不

Cordys BOP 4平台开发入门实战演练——Webservices开发(使用MongoDB数据库)

1.在WS-AppServer Package中新建自定义类"C_MongoPackage" 2.添加自定义方法Method,expandDocument和findDocuments两个方法. 3.方法设置两个参数,分别是collectionName和JSONString. 4.由系统产生Java代码 5.弹出如下"Generate Java Code on WS-AppServer Models"窗口. 6.由系统生产WebService 7.弹出Generate

Cordys BOP 4平台开发实战——MongoDB提供文档服务(1)

在Cordys平台,使用WS-AppServer Package组件,新建C_MongoPackage自定义类. 1.查询返回单个文档JSON数据 (1)查询返回独立文档 MongoDB语法: .find({"ID":"2015040011"}) Soap请求: <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP:Body>

Cordys BOP 4平台开发入门实战演练——Webservices开发(2)

1.前言 本文主要是通过实战演练,介绍各类个性化.自定义WebService及其方法的开发方法,以及相关技术,重点介绍Cordys NOM类型(底层基于C语言的XML对象解析),以及Java中Soap WebService的调用技术. 首先介绍本文所依赖的数据库设计,采用常用的主从表模式,包括:用户账号表"sm_account".登录验证用户表"sm_auth_account".租户账号表"sm_tenant_account ",提供人员多重身份