XPDL学习与分享 一
最近从事工作流引擎的设计与开发工作,准备在学习标准入手,从而更深入的了解工作流。俗话说“教学相长”,希望一起讨论,一起成长。如果文中有错误或者版权问题,请指出,谢谢! XPDL是xml工作流定义语言,使wfmc制定的一个国际标准,期望建立一个统一的标准,并且通过此标准,能够让不同的流程引擎能够相互交户。 wfmc工作流定义的元模型如下图: 图中的方框,我们称之为实体(entity),其中Activity这里翻译为活动,Participant翻译为参与者,relevant data翻译为关联数据。
1.1. XPDL实体概述数据模型呈现了工作流定义中的最基本的组成实体,下面逐个对每个实体简单介绍一下:
1.1.1. 工作流定义工作流定义为工作流中其他实体提供了上下文描述,包含自身信息,流程制定人和管理者的信息,或者是流程运行时需要用的数据,比如说初始化参数、流程限制时间、检查点、需要通知的人等。
1.1.2. 工作流活动(Activity)工作流是由一个或多个活动组成的,每个活动都是由一个有逻辑的、自包含的工作组成。活动体现为工作,工作可以是参与者参与的,也可以是计算机的应用程序。其他的可选的信息包含活动是否由流程管理系统自动开始或者结束,活动相对于同一个流程中其他活动的对资源的优先级,活动也可以指定流程中特殊的关联数据,也可以指定为一个子流程。一个活动可以包含子流程,子流程可以是同一个流程引擎解析,也可以是远程调用其他流程引擎解析。子流程定义清楚了该子流程包含的活动、trasition、参与者等信息。子流程成中的关联数据可以作为子流程输入和输出。活动可以包含一个活动块,这个活动块执行一组活动,活动和活动之间有Transition,这些活动与transition共用相同的命名空间。
1.1.3. Transition信息活动与活动之间通过Transition连接的。一个Transition有三部分组成,起始活动(From-Activity)、终止活动(To-Activity)以及转换条件(Condition),连接活动与活动之间的Transition可以通过条件判断是否允许通过。Transition能连接串行的或者并行的活动。Transition的连接类型有split和join两种。Split是指由活动分出去的类型,Join是连接到活动的类型。
1.1.4. 工作流参与者定义参与者定义了各个关卡的执行者,参与者可以为预先定义好的人、也可以为计算机的应用程序或者是计算机设备。参与者为人时,不一定是一个人,也可以为一组人。
1.1.5. 资源库资源库使得参与者能够为人、设备或者是应用程序,经典的资源库就是组织模型。
1.1.6. 工作流应用程序定义工作流应用程序定义的是一个工作流程、或者活动能调用的应用程序或者是接口。这些应用程序可能是设备、企业中其他应用程序或者是接口。工作流应用程序定义指的是连接工作流引擎的应用程序或者接口,其中包含需要传递的参数。
1.1.7. 工作流关联数据流程执行过程中流程实例产生或者用到的数据,这些数据可能作用于运行过程中的活动,也可能是用于显示的数据,也可能是用于决定活动与活动之间Transition中条件的数据,也可能是用户获取参与人的数据。XPDL定义了基础或者复杂类型的关联数据,活动、应用程序、Transition中的条件会引用这些数据。
1.1.8. 系统与环境数据系统与环境数据是通过工作流管理系统或者本地系统维护的,这些数据可以被活动访问到,也会用户Transition中条件的判断。
1.1.9. 数据类型和表达式工作流模型定义了一组数据类型,比如字符型、引用型、整型、浮点型、日期型等,这些类型将会用于定义关联数据、环境数据以及参与者数据。通过这些类型的数据,Transition中的条件能执行表达式。数据类型能通过xml或者扩展资源扩展。
1.1.10. 流程与包上图所示,流程由各种各样的实体组成,通常情况下,参与者、关联数据经常会被多个流程引用到。数据模型呈现了关联工作流管理系统的,控制组成流程的各种类型实体的流程定义的库的用处。包就是一个容器,包含了一些公共属性,比如作者、版本、状态等。包中的每个流程定义都可以继承这些公共属性,如果他们自己定义了,则不再继承。包中会定义一些全局的实体,以便其他流程可以引用,这些实体一般为: n 工作流参与者 n 工作流应用程序定义 n 工作流关联数据定义 包允许引用包内部定义的实体,也可以引用其他包定义的东西,比如: n 其他包中的流程id作为子流程 n 工作流参与者定义
XPDL学习与分享 一相关推荐
- PHP学习课程和培训方向学习路线分享
PHP学习课程和培训方向学习路线分享 php语言的优越性,集结了很多的开发爱好者,无论行业前景和个人发展来说,php正飞速的发展,php在不断兼容着类似closures和命名空间 等技术,同时兼顾性能 ...
- 机器人操作学习系列分享:模仿学习
2020-07-29 20:16:12 随着学会的队伍不断发展壮大,分支机构的发展愈发完善,丰富多彩的分支活动与学术分享也频频呈现.疫情期间,CAAI认知系统与信息处理专委会积极倡导学会"疫 ...
- ajax不执行_好程序员Java学习路线分享原生Ajax的使用
好程序员Java学习路线分享原生Ajax的使用,首先我们先来看一下什么是 AJAX AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. AJAX 就是 异步.JavaScript ...
- 关于QVariant 的学习一点分享
关于QVariant 的学习一点分享 目录 **关于QVariant 的学习一点分享** Variant类的开发手册解读 QVariant 类的支持的类型: 常用函数: QVariant 变量在类之间 ...
- system.img解包打包工具_好程序员云计算学习路线分享文件打包及压缩
好程序员云计算学习路线分享文件打包及压缩 好程序员 建议针对目录 Demo: 复制未打包的文件到远程主机 [root@yangs ~]# du -sh /etc 39M /etc [root@yang ...
- 如何使用jquery_好程序员web前端学习路线分享jQuery学习技巧
好程序员web前端学习路线分享jQuery学习技巧,jQuery在web前端学习中是一个必不可少的内容,很多小伙伴都在学习这阶段的时候遇到问题,今天我们就来聊一下jQuery,让我们一起来看一看吧! ...
- js怎么在一个div中嵌入另一网站_好程序员web前端学习路线分享HTML5常见面试题集锦一...
好程序员web前端学习路线分享HTML5常见面试题集锦,接下来将会持续为大家分享几篇HTML5常见面试题. 1.布局 左边20% 中间自适应 右边200px 不能用定位 答案:圣杯布局/双飞翼布局或者 ...
- css清除浮动的几种方法_web前端学习路线分享CSS浮动-清除浮动篇
web前端学习路线分享CSS浮动-清除浮动篇,为什么要清除浮动 这里所说的清除浮动,并不是不要浮动了,而是清除浮动与浮动之间的影响.那么到底会有什么影响呢? 1.高度塌陷 举个例子我们看一下. 我们在 ...
- 表单提交中文乱码_Java学习路线分享如何处理中文参数
Java学习路线分享如何处理中文参数,为什么表单中会产生中文乱码 产生乱码,就是因为服务器和客户端沟通的编码不一致造成的,因此解决的办法是:在客户端和服务器之间设置一个统一的编码,之后就按照此编码进行 ...
- hive hql文档_大数据学习路线分享hive的运行方式
大数据学习路线分享hive的运行方式,hive的属性设置: 1.在cli端设置 (只针对当前的session) 3.在java代码中设置 (当前连接) 2.在配置文件中设置 (所有session有效) ...
最新文章
- getaddrinfo()函数详解
- ModelSim之命令行仿真入门 (step 2)
- 和 Gmail 先生面对面
- 设计模式学习笔记(十六:桥接模式)
- html文件上传数量限制,使用HTML中的input上传文件最多可以上传多少张?
- android相对布局代码,Android基础_3 Activity相对布局(示例代码)
- WPF实现仪表盘(刻度跟随)
- 设计模式——原型模式
- LeetCode 1665. 完成所有任务的最少初始能量(贪心)
- php上传文件 按日期文件夹,fckeditor上传文件按日期存放及重命名方法
- Python人工智能入门(修订版)
- 小米6x更换关机音量键记录
- Dubbo(二):Dubbo和ZooKeeper的协同工作原理
- LM4766T/NOPB小秘密
- 中考计算机考键盘,信息技术中考键盘常识复习讲座.ppt
- 【STM32】几款常用产品(F1、F4、F7)的区别
- webstorm或phpstorm配置CSS或JS压缩
- 趋势 |「酸性设计」到底有多酷?
- 不会编程,别着急!免编程工具助你快速开发App
- CVE-2021-30461 - VoIPMonitor未授权远程代码执行漏洞