各种工作流模式的实现
- 格式:pdf
- 大小:952.13 KB
- 文档页数:27
一种多实例工作流模式的解决方案
陈大锋;吴泉源;刘江宁;刘必欣
【期刊名称】《计算机工程与科学》
【年(卷),期】2005(027)001
【摘要】多实例MI是一种重要的工作流模式,由于它引入了许多与工作流语言的语义和系统实现相关的问题,在许多情况下难以被直接有效地实现.本文在对MI的类型和实现技术进行分析的基础上,提出了一种基于"活动数组"的方案.它不仅能明显简化MI的建模,提高模型语义的精确性,并且具有较强的表达能力,实现较简洁.【总页数】4页(P89-92)
【作者】陈大锋;吴泉源;刘江宁;刘必欣
【作者单位】国防科技大学计算机学院,湖南,长沙,410073;国防科技大学计算机学院,湖南,长沙,410073;国防科技大学计算机学院,湖南,长沙,410073;国防科技大学计算机学院,湖南,长沙,410073
【正文语种】中文
【中图分类】TN311.5
【相关文献】
1.基于网络划分的多实例工作流模式解决方案 [J], 胡飞虎;张丹丹;杨慧媛;马玲
2.多实例工作流模式的π演算形式化 [J], 梁爱南;李长云;黄贤明
3.针对工作流模式执行约束的解决方案 [J], 付丽娜;郝克刚
4.一种基于BPEL4WS的多实例工作流模式的解决方案 [J], 刘利;范磬亚;徐汀荣
5.基于π演算的多实例工作流模式的建模方法 [J], 梁爱南;李长云;黄贤明
因版权原因,仅展示原文概要,查看原文内容请购买。
workflow源码解析Workflow是一种用于描述和执行工作流程的编程模型,它可以帮助我们更好地组织和管理复杂的业务流程。
本文将对Workflow的源码进行解析,分析其实现原理和核心功能。
Workflow的源码主要包括工作流引擎、工作流定义和工作流实例三个部分。
工作流引擎是整个系统的核心,它负责解析工作流定义,创建和管理工作流实例,并根据定义中的规则和条件来驱动工作流的执行。
工作流定义是工作流的静态描述,它由一组任务和它们之间的关系组成。
每个任务代表一个具体的操作,比如发送邮件、生成报告等。
任务之间的关系包括顺序、并行和条件等,用于定义任务的执行顺序和条件。
工作流实例是工作流的动态执行过程,它由一组任务实例和它们的执行状态组成。
任务实例代表工作流中的一个具体任务的执行过程,包括任务的执行状态、输入参数和输出结果等。
工作流实例根据工作流定义的规则和条件来驱动任务实例的执行,实现整个工作流的自动化执行。
Workflow的源码采用面向对象的设计思想,使用Java语言实现。
它使用了一些设计模式,如工厂模式、观察者模式和状态模式等,来实现工作流引擎的灵活性和扩展性。
工作流引擎是Workflow的核心组件,它负责解析工作流定义,创建和管理工作流实例,并根据定义中的规则和条件来驱动工作流的执行。
工作流引擎首先读取工作流定义的XML文件,将其解析成一个内部的工作流模型。
工作流模型包括任务、任务之间的关系和任务的执行规则等信息。
然后,工作流引擎根据工作流模型创建一个工作流实例,并将其添加到工作流实例列表中。
工作流实例是Workflow的动态执行过程,它由一组任务实例和它们的执行状态组成。
工作流实例根据工作流定义的规则和条件来驱动任务实例的执行,实现整个工作流的自动化执行。
工作流实例首先根据工作流模型创建任务实例,并将其添加到任务实例列表中。
然后,工作流实例根据任务实例的执行状态和执行规则来选择下一个要执行的任务实例,并将其状态设置为"执行中"。
办公自动化系统中动态工作流研究摘要:传统的工作流系统规定只能够在流程设计阶段对流程进行编辑和修改,在流程开始运行之后就不能再对其进行任何操作。
但随着应用的不断深入和企业自身不断发展,业务流程变得更加复杂,控制步骤和流转规则的不可预知性越来越大;业务种类变得更加多样,设计阶段并不能将所有业务都包含进去;业务发生环境和外部条件的变更变得更加频繁,极其容易发生流转失败,进而导致流转的停滞或回退。
因此,需要使用动态工作流思想指导工作流模型的设计,在确保不影响工作流正常流转的情况下,允许用户进行动态修改,提高系统的适应性和柔性。
关键词:办公自动化;动态工作流;动态工作流引擎;动态修改0 引言现代企业经常会发生工作流实例和预定义时建立起来的模型不一致的情况,特别是一些意外情况和事件。
让用户参与并解决是一个有效的方法。
这就需要工作流系统能为用户提供修改工作流的功能,并且在修改后,能保证整个系统继续运行和数据的一致性。
1 工作流技术综述1.1 工作流定义根据国际工作流管理联盟(Workflow Management Coalition,简称WfMC)的定义,工作流(Workflow)是根据预先定义的逻辑规则对业务全部或部分进行自动运作,目的是使流程参与者能相互协作,把信息在他们之间自动传递。
换句话说,工作流就是为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递文档、信息或者任务。
1.2 工作流引擎工作流引擎的工作原理是对过程定义进行解析,从而实现过程实例化,根据过程定义和运用时的信息动态决定业务过程的执行,实现业务过程的计算机管理。
其中关键是控制过程实例和活动实例的状态转换。
目前主流的开源引擎有:由Enhydra组织开发的Shark、OpenSymphony组织开发的OSWorkflow和JBOSS项目集成的JBPM。
2 动态工作流2.1 动态工作流含义对于动态工作流中的“动态”,不同的研究者有着不同的认定,但是其本质和特点是基本一致的。
工作流Activiti介绍与应用工作流(workflow)就是工作流程的计算模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。
我的理解就是:将部分或者全部的工作流程、逻辑让计算机帮你来处理,实现自动化。
1Activiti简介Activiti是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理,工作流,服务协作等领域的一个开源,灵活的,易扩展的可执行流程语言框架。
它实现了BPMN 规范,可以发布设计好的流程定义,并通过api进行流程调度。
1.1Activiti基础编程框架Activiti的基础编程框架如下:Activiti基于Spring,ibatis等开源中间件作为软件平台,在此之上构建了非常清晰的开发框架。
上图列出了Activiti的核心组件。
:流程引擎的抽象,对于开发者来说,它是我们使用Activiti的外观(faade),通过它可以获得我们需要的一切服务。
(TaskService,RuntimeService,RepositoryService...):Activiti按照流程的生命周期(定义,部署,运行)把不同阶段的服务封装在不同的Service中,用户可以非常清晰地使用特定阶段的接口。
通过ProcessEngine能够获得这些Service实例。
1.2Activiti重要服务类ProcessEngine:流程引擎的抽象,通过它我们可以获得我们需要的一切服务。
RepositoryService: Activiti中每一个不同版本的业务流程的定义都需要使用一些定义文件,部署文件和支持数据(例如 XML文件,表单定义文件,流程定义图像文件等),这些文件都存储在Activiti内建的Repository中。
RepositoryService提供了对 repository 的存取服务。
TaskService:在Activiti业务流程定义中每一个执行节点都被称作一个Task,流程运行过程中,与每个任务节点相关的接口,比如complete, delete,delegate等等都是TaskService提供的。
工作流操作手册目录工作流操作手册 ....................................................................................................................................... 1-1 1说明 .................................................................................................................................................................... 1-1 2创建工作流模板 ............................................................................................................................................ 2-12.1打开工作流设计器......................................................................................................................... 2-12.2新建节点模版 .................................................................................................................................. 2-12.3设置流程回退任务......................................................................................................................... 2-32.4设置任务属性 .................................................................................................................................. 2-12.4.1设置提醒.............................................................................................................................. 2-12.4.2设置签发.............................................................................................................................. 2-12.4.3设置发放.............................................................................................................................. 2-22.4.4设置模板可用.................................................................................................................... 2-22.4.5编辑工作流模板............................................................................................................... 2-2 3启动工作流...................................................................................................................................................... 3-13.1新建工作流 ....................................................................................................................................... 3-13.2执行工作流 ....................................................................................................................................... 3-13.2.1查看任务“目标”和“引用”.............................................................................................. 3-13.2.2执行工作任务.................................................................................................................... 3-1 4功能配置参考................................................................................................................................................. 4-14.1添加引用 ............................................................................................................................................ 4-14.2设置外出代理 .................................................................................................................................. 4-14.3设置工作流代理人......................................................................................................................... 4-14.4设置作废 ............................................................................................................................................ 4-24.5设置共享文件夹 ............................................................................................................................. 4-24.6设置文件关联 .................................................................................................................................. 4-44.7查询活动-非活动用户 .................................................................................................................. 4-34.7.1添加新查询......................................................................................................................... 4-34.7.2执行查询.............................................................................................................................. 4-21说明1.工作流是完成目标的一个或几个业务流程的自动化操作,工作流程由用户(不能是dba用户)发起,具体的工作流任务将指派给用户。
公文流转系统中简单工作流的设计与应用[摘要]根据调研需求,提出了一个顺序工作流模型,利用Lotus Notes自身的工作流特性,和基本设计元素及高效的权限控制,用有效,易于实现的设计方法,完成了一个基于简单工作流的公文流转系统的应用。
[关键字]工作流Lotus Notes/Domino 公文流转1.引言各个单位的业务和职能各不相同,因此对于办公自动化系统的需求也有差异,但是一般的,公文是政府机关处理公务和行政管理的重要工具,在各级机关,单位中,“办公”的一个重要内容就是办理和制发文件,即收文,发文管理,收发文是机关单位大量的,日常的工作,机关办公自动化系统均以公文处理和机关事务管理为核心,同时提供信息通讯与服务等其他功能,因此,典型的办公自动化应用是以公文流转系统为基础的。
依靠网络信息技术对公文进行高效有序的电子化处理,是实现无纸办公的关键,是电子政府建设的重要组成部分。
2.系统方案的选择办公自动化是典型的文档处理系统,他所处理信息的载体大多是以文件,报表,信函,传真等形式出现,主要办公也是收文,发文,签阅,归档等公文管理功能,公文管理本身就是一项非常典型的工作流,有固定的程序,如发文要经过起草,编辑,审阅,成稿等,工作流通过将工作活动分解成任务,角色,规则和过程来进行执行和监控,达到提高工作效率的目的。
用户可以使用可视化定义工具灵活自主地定义工作流,采用“群件”技术实现工作流的自动化。
Lotus Notes/Domino是IBM 公司推出的集文档数据库,快速应用开发技术以及WEB技术为一体的电子邮件与群件平台,全面实现了对非结构化信息的管理和共享,可以跨越地域,部门之间的界限,内含强大的工作流软件开发环境,并提供多级安全措施,是高效的协同工作和战略级解决方案。
一般的,Lotus Notes/Domino中创建工作流应用程序有三种实现办法:1)基于邮件系统的工作流工作流管理信息系统是由电子邮件来串联工作的不同阶段,各阶段的工作通过相应的电子表格体现出来,这些表格包含完成这些工作所需的信息。
目录第一章SDO实例分析 (1)一、目的: (1)二、手段: (1)三、分析: (1)四、过程: (2)4.1.对象字典的编写 (2)4.1.1各节点ID分配 (2)4.1.2对节点1进行对象字典编写 (2)4.1.3对节点2进行对象字典编写 (2)4.1.4对节点3进行对象字典编写 (3)4.2节点1读取节点2数据 (3)4.2.1节点1发送请求读取命令至节点2 (3)4.2.2 节点2响应节点1读取命令 (4)4.3 节点1写入数据至节点3 (6)4.3.1 节点1 发送数据至节点3 (6)4.3.2 节点3响应节点1写入数据命令 (7)参考文献 (8)附录一: (9)第一章SDO实例分析一、目的:实现节点2的数据传送到节点3二、手段:使用SDO进行传送注:SDO不能实现从节点之间数据的直接传送三、分析:图1-1 SDO客户/服务器通讯模式[1]SDO通讯可以描述成客户/服务器模型,SDO的客户/服务器通讯模式如图1-1所示。
两节点中请求进行读写操作的节点为客户端节点,数据被读写的节点为服务器节点[3]。
SDO通讯用于主节点对从节点对象字典的读写访问,以实现对从节点参数的设置,下载程序,定义PDO的通讯类型和数据格式等 [1]。
由此可知要实现将节点2中数据传送给节点3的实现方法为:设置节点1为主站(Client),数据传送过程由SDO传送的特点分为两段:节点1读取节点2(server)数据,节点1写入数据到节点3(server)。
从而实现了节点2(server)的数据传送到节点3(server)。
如图1-2所示。
节点1节点2节点3图1-2 数据传送过程四、过程:4.1.对象字典的编写对象字典的结构和条目对于所有设备是共同的,本例中采用索引定位,子索引确定对象的思想构建对象字典,方法是使用结构体定义子索引,子索引结构体的成员变量包含对象的属性(读写权限,数据类型,数据长度等)和指向对象的指针,定义索引时包含指向子索引的指针和子索引数目,对象字典各项在代码中采取如图4-1所示的方式来组织构建,这样可以方便地通过索引和子索引一找到对应的项,对象定义为指针的形式可以通过主站的SDO报文进行读写,实现对对象字典的灵活配置,同时这种方式实现通讯层与应用层共享数据变量的特点。
基于移动Agent的工作流管理系统的研究的开题报告一、研究背景和意义随着信息化的快速发展,业务流程的自动化与信息化已经成为企业管理的重要手段之一。
而工作流管理系统作为信息化时代企业管理中的重要工具,在不断优化、智能化,以满足企业对更高效、更省时省力的管理需求。
移动Agent作为一种新兴技术,可以配合工作流管理系统,使其更加强大、智能,为企业管理提供更优质的服务。
个体移动Agent作为一种自包含的软件工具,具有分布式、动态、自治、移动等特点,可以自主地在网络环境中协同工作。
在工作流管理系统中,移动Agent可以通过从浏览器中植入表单,模拟用户输入,代表用户完成相应的操作,以实现自动化、智能化的工作流管理。
本文旨在利用移动Agent技术,构建一种智能的、高效的工作流管理系统,以实现企业管理的信息化、自动化、智能化,提供高质量服务,提升企业的竞争力。
二、研究内容和目标本论文的研究内容是基于移动Agent技术的工作流管理系统的设计和实现。
主要包括以下内容:1. 系统的总体设计:设计智能化的工作流管理系统的总体框架,包括系统的功能需求、架构设计、数据结构、技术选型等。
2. 移动Agent的设计:研究移动Agent的相关技术,设计移动Agent实现自动化的工作流管理,探索移动Agent在工作流管理系统中的应用。
3. 工作流引擎的设计:研究和设计工作流引擎,实现各种工作流模式的流程控制和业务流程自动化管理。
4. 系统模块的实现:实现工作流管理系统中必要的功能模块,包括用户身份认证、任务分配、流程控制、业务数据管理等。
5. 系统测试和性能优化:测试系统效果,并对系统进行优化,提高系统的性能和智能化程度。
本论文的目标是设计一种基于移动Agent的工作流管理系统,能够实现智能化的工作流管理,提高企业管理的效率和质量。
三、研究方法和步骤本研究采用以下研究方法:1. 文献调研:通过查阅相关文献,了解当前工作流管理系统和移动Agent技术的最新进展及应用。
工作流简介工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。
通俗的说,流程就是多个人在一起合作完成某件事情的步骤,把步骤变成计算机能理解的形式就是工作流。
工作流要解决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递文档、信息或者任务。
工作流管理系统(Workflow Management System, WfMS)是一个软件系统,它完成工作流的定义和管理,并按照在系统中预先定义好的工作流规则进行工作流实例的执行。
工作流管理系统不是企业的业务系统,而是为企业的业务系统的运行提供了一个软件的支撑环境。
工作流管理联盟(WfMC,Workflow Management Coalition)给出的关于工作流管理系统的定义是:工作流管理系统是一个软件系统,它通过执行经过计算的流程定义去支持一批专门设定的业务流程。
工作流管理系统被用来定义、管理、和执行工作流程。
工作流应用广泛,在由任务驱动的各种系统中都有应用,例如OA、CRM、ERP、ECM、BI等。
在企业应用中还有很多产品或平台集成工作流引擎,用来处理系统运行过程中发起的业务流程。
工作流总是以任务(Task)的形式驱动人处理业务或者驱动业务系统自动完成作业。
有了工作流引擎之后,我们不必一直等待其他人的工作进度,直白地说,我们只需要关心系统首页的待办任务数即可,由系统提醒当前有多少待办任务需要处理。
采用工作流管理系统的优点:1)提高系统的柔性,适应业务流程的变化2)实现更好的业务过程控制,提高顾客服务质量3)降低系统开发和维护成本工作流生命周期一个完整的工作流生命周期会经过五个步骤,并且迭代循环:定义:工作流生命周期总是从流程定义开始。
此阶段的任务主要是收集业务需求并转化为流程定义。
业务流(BPM)与工作流(workflow) 的区别在SOA 实践中,对于 BPM面临着不少困惑与选择,主要是工作流与业务流的架构区别。
有些项目把业务流产品用作工作流设计,而有些工作流为主的产品工具却作为业务流实现。
这里简单地讨论一下 BPM 中业务流与工作流的作用区别。
简要概述了工作流与业务流的主要区别。
工作流与业务流的主要区别斯欧信息简言之,业务流程管理主要包含业务建模,组装,部署及管理。
使用业务流或工作流工具似乎都能设计开发业务流程管理。
但从 SOA 的角度,服务的划分及交互通常是项目关注的重点。
所以, SOA 强调的是如何灵活组合业务服务。
而业务流的核心功能是编排流程服务,并且主要针对企业级应用整合。
同时利用 BPM 工作流的主要功能,诸如 : 活动(任务)节点的人工任务配置,流程运转时的活动节点调控等。
在 SOA/BPM 初始阶段,如果一个企业没有较深的 IT 或 ERP 根基,实施业务流会有相当的阻力。
因为业务流程管理并非主要是技术问题。
对于有些中小型企业或应用 ( 特别是那些没有规范支撑的人工流程模式 ),一些随意包干,或带有自由流功能的工作流系统一般更易于接受。
对于同样的一个较为复杂的流程应用项目, 如果使用工作流, 会显得很复杂, 结果是很多流程产出件, 而如果使用业务流,一般架构设计较为规范, 流程量骤然减少, 重用性提高。
值得一提的是,工作流与业务流的定义范围有相当程度的交叠与互斥,这取决于采用的流程管理产品(或几个不同产品)及架构设计及理念。
工作流可以理解为技术层面的东西或办公自动化,而 SOA 关注业务流的实现,及与之相关的价值链,并且关注流程的生命周期管理。
其实,工作流或业务流本身并无绝对优势,在SOA/BPM 都要用到,如何用好用对才是关键。
竭诚为您提供优质文档/双击可除公文流转的四种模式篇一:公文流转系统概述公文流转系统概述摘要公文流转系统是办公自动化系统的核心,在介绍公文流转系统中工作流的基础上,对目前国内外公文流转用到的相关技术进行了总结,最后对公文流转的发展方向进行了展望。
关键词公文流转;办公自动化;工作流本文由收集整理。
1前言随着信息技术在我国的普及,各类信息化技术手段在政府企业中不断得到应用,极大地提高了政府企业的办公效率,对行政办公模式的变革产生了深远的影响。
日常公文处理在政府机关或者企业的工作中是一项繁杂而重要的工作,在工作中,往往会因为个人文书管理不当,产生文件遗失,过时未批,或者出差在外,无法及时批阅等情况。
传统的数据文件是一份份厚重的文件档案及纸制文件,要查询一份历史数据就要到文件的归档部门,再去查询归档的年份,找到归档的档案,即耗时又烦琐。
因此,需要开发公文流转系统,让人员从长期繁杂的办公事务中解放出来,提高工作效率,降低行政成本,实现办公自动化。
办公自动化(oa)是20世纪70年代兴起的基于数据库技术、网络技术、软件工程技术发展起来的一门技术科学。
目前,oa已经从最初的汉字输入、文字处理、排版编辑、查询检索等的单机应用软件逐渐发展成为现代化的网络办公系统[1]。
公文流转是oa的核心,也是实现无纸办公的重要标志。
政府和企事业单位正在积极采用办公自动化系统提高办公效率。
公文流转子系统作为所有oa的公共构件,它利用计算机网络的高速迅捷和计算机控制的严格准确性实现公文的处理,对目前传统公文处理而言,很大程度上提高了公文处理效率和准确性[2]。
本文将从多个方面全面论述目前公文流转的相关技术和国内外研究现状,分析公文流转的优缺点。
论文首先介绍公文流转的发展趋势,然后开始介绍公文流转的一些概念和需要用到的相关技术,以及目前国内外的研究现状,最后对未来公文流转的研究提出自己的观点。
2公文流转的发展趋势事实上,现在的办公已经不再是简单的文档处理,不再是单纯的行政事务了。
各种工作流模式的实现作者:非也QQ:20674450Email:nychen2000@目录1.概述 (3)2.Fire Workflow流程元素介绍 (3)1)Activity和Task: (3)2)Synchronizer、StartNode、EndNode (4)3)Transition (4)3.设计约束 (4)1)约束1 (4)2)约束2 (4)3)约束3 (5)4)约束4 (5)5)关于设计约束的说明 (5)4.顺序、分支、汇聚 (6)1)顺序分支汇聚其实是统一的 (6)2)顺序业务流程举例 (8)3)并行业务流程举例 (8)4)分支选择业务流程举例 (9)5)汇聚业务流程举例 (10)5.子流程 (11)1)流程设计 (11)2)流程模拟 (12)3)关于“Multi-Merge”的探讨 (13)6.“自由流”(Jump) (14)1)流程设计 (14)2)流程模拟 (14)3)相关API (17)7.循环(Loop) (18)1)流程设计、模拟 (18)2)相关API (18)8.略过(Skip) (18)1)流程设计 (18)2)流程模拟 (19)9.会签 (20)10.委派 (21)11.任务完成期限 (21)1)流程设计、模拟 (21)2)相关API (22)12.监听工作流事件 (22)1)TaskInstance事件监听器 (22)2)ProcessInstance事件监听器 (23)13.表单绑定 (24)14.流程元素属性详细说明 (25)1)所有流程元素通用属性 (25)2)WorkflowProcess的属性 (25)3)StartNode、Synchronizer、EndNode属性 (25)4)Activity属性 (25)5)Transition的属性 (26)6)Subflow Task的属性 (26)7)Tool Task的属性 (26)8)Form Task的属性 (26)1.概述本文最初始的标题是“21种工作流模式的实现”,但是我觉得21种工作流模式总结的并不科学,“21中工作流模式”只看到了业务现象,没有反应出业务的本质。
例如:“并行模式(Parallel Split)”、“单选(Exclusive Choice)”、“多选(Multi Choice)”没有实质区别,都是从流程的分支中选择若干个执行。
具体选择哪几个是由“转移条件”决定的,如果转移条件计算结果为true则执行,否则不执行。
因此并行模式只是分支选择模式的一个特例,即所有的转移条件计算结果都是true。
再例如:21中工作流模式中的“同步(Synchronization)”、“简单汇聚(Simple Merge)”也没有实质区别,在Fire Workflow中这都是“同步器”节点统一处理。
我甚至认为21中工作流模式存在一些谬误,我简单阐述我的看法,欢迎探讨。
例如:21种工作流模式对“简单汇聚(Simple Merge)”的解释是“流程中的某个节点,使得两个或者多个流程分支汇聚在一起”,之所以将这种汇聚称为“简单汇聚”,是“假设多个流程分支不并行执行,因此汇聚点不需要进行复杂的同步操作”。
这种强行的“假设”看似简化了问题,实际上非常不合理。
这种假设要求汇聚点“预知”多个分支中只有一个分支被执行,这种预知是很难实现的;或者限制多个分支中只允许一个被执行,这种后继节点限制前驱节点的行为是很荒谬的。
因此,本文将工作流模式按照我自己的理解重新组织。
本文档的所有示例流程都在example_workflow_process.rar中。
2.Fire Workflow流程元素介绍在使用Fire Workflow设计业务流程之前,非常有必要介绍一下Fire Workflow的工作流元素。
Fire workflow的元素分成三类:1)Activity和Task,2)Synchronizer、StartNode、EndNode,3)Transition1)Activity和Task:Acitivty在中文里一般称为“活动”,但是在我的文档里习惯称之为“环节”。
Task是任务,代表具体的业务逻辑,如录入一张表单、调用一段java代码或者调用另外一个流程(子流程Task)。
一个环节中可以有多个任务。
例如某个入职流程中有一个体检环节,体检环节包含了“检查视力”、“检查肝功能”、“检查心血管功能”等等多个任务。
在Fire workflow 中,体检环节建模如下:2)Synchronizer、StartNode、EndNodeSynchronizer是同步器。
此处的“同步”是一个更加广义的概念,他代表工作流子系统的计算逻辑。
开始节点(StartNode)和结束节点(EndNode)是同步器的特例,开始节点是没有输入“边”的同步器,结束节点是没有输出“边”的同步器。
3)Transition转移(Transition)在Fire workflow并不仅仅是一条连接线,他代表控制权在工作流子系统和业务子系统之间交换。
3.设计约束在本人看来,可以将整个系统分成业务子系统和工作流子系统。
Activity和Task代表业务子系统的计算逻辑;Synchronizer、StartNode、EndNode代表工作流子系统的计算逻辑;Transition代表控制权在业务子系统和工作流子系统之间转移。
有如下流程设计约束。
1)约束1每个Activity的前驱节点、后继节点必须是同步器。
即控制权从工作流子系统获得,业务执行完毕后控制权必须交还给工作流子系统。
2)约束2每个Activity只允许有一个输入Transition,一个输出Transition。
为什么呢?如果某个Activity有多个输入Transition,则说明此Acitivty需要执行“汇聚”逻辑,然而“汇聚”并不是Activity的职责,而是同步器的职责;同理,如果某个Activity 有多个输出Transition,则说明该Activity需要执行“分支”逻辑,这也不是Activity的职责。
3)约束3每个同步器的前驱节点和后继节点都必须是Activity。
即从业务子系统获得控制权后,进行汇聚和分支计算,然后把控制权再交给业务子系统。
在Fire Workflow中,顺序流程中的同步器与复杂逻辑中的同步器的算法是一致的,如下图,S1是S2的特列。
4)约束4一个流程有且只有一个开始节点,至少有一个结束节点。
5)关于设计约束的说明Fire Workflow是以Petri Net作为理论基础的,因此上述设计约束首先是Petri Net的要求。
但是Fire Workflow也力求不生搬硬套Petri Net;我通过学习研究,发现用Petri Net可以非常恰当地描述“控制权”在“业务子系统”和“工作流子系统”之间相互转换这样一个业务模型。
可以用Petri Net中的token来刻画“控制权”这个概念,用T来刻画“业务子系统”这个概念,用P来刻画“工作流子系统”这个概念。
因此,上述设计约束可以精确、严密地描述业务流程。
4.顺序、分支、汇聚1)顺序分支汇聚其实是统一的首先,Fire Workflow认为,“分支”和“汇聚”都是一种计算逻辑,这种计算逻辑应该由“工作流子系统”负责完成。
Fire Workflow用“同步器”节点在模型中表示这种计算逻辑。
如下图,同步器“S”是一个一般意义上的同步器。
上图中“S”首先对t1、t2、t3执行汇聚操作。
在Fire Workflow中,不管t1、t2、t3中哪个或者哪几个流程分支被执行,S都能正确地进行汇聚。
S汇聚完成后,根据转移条件的计算结果,启动t_a,t_b,t_c中的一个或者几个分支。
为什么说顺序、分支、汇聚是统一的呢?A)在上图中,如果“S”的前驱和后继都是唯一的,则形成一个特例,即顺序流程。
如下图。
B)如果上图中“S”的前驱是唯一的,后继有多个,则形成了“21中工作流模式”中的“并行模式(Parallel Split)”、“单选(Exclusive Choice)”、“多选(Multi Choice)”。
如下图C)如果上图中“S”的前驱有多个,后继仅有一个分支,则形成“汇聚”,如下图。
不仅顺序、分支、汇聚是统一的,同步器、开始节点、结束节点也是统一的,即开始节点和结束节点是同步器的特例。
如果同步器的前驱为0,则形成开始节点,如果同步器的后继节点为0,则形成结束节点。
在Fire Workflow中分别用和表示这两个节点。
2)顺序业务流程举例顺序模式的实现以及模拟请参阅《2_通过设计器和模拟器快速了解Fire Workflow》流程定义文件是MyFirstProcess.xml3)并行业务流程举例并行业务流程其实是分支选择的一个特例,即所有的转移条件计算结果为true。
在Fire workflow中如果Transition的转移条件EL表达是为空,则默认其结果为true。
业务举例:某商场送货流程。
仓库备货完成后流程分拆为两个并行的分支,一个分支通知送货员送货;另一个线程启动短信发送程序,预约客户在家等候收货。
如下图:相关的流程定义文件见:And Split.xml。
流程模拟通过模拟器可以模拟该流程,如下图。
可以看到,在“仓库备货”环节完成后,两个分支执行线程并行执行。
4)分支选择业务流程举例以典型的请假流程为例,如果请假天数小于等于2天,项目经理审批即可,否则需要部门经理审批。
该流程图如下。
在本流程中定义了一个名称为days的流程变量。
流程定义文件是:choice.xml流程模拟:启动流程,在工具栏上点击,设置流程变量days的值为3,如下图签收并完成“填写请假条”任务后,系统启动了“部门经理审批”环节,而没有启动“项目经理审批”环节,如下图:读者可以重新模拟该流程,将days的值设置为1看看结果如何。
5)汇聚业务流程举例在上述“并行业务业务流程举例”中,结束节点实际上进行了汇聚。
我们从模拟器可以看到,当“仓库备货”环节完成后,“手机短信发送程序”被自动执行,此时结束节点的颜色变成黄色,表示正在等待另一个分支完成。
当送货分支完成后,结束节点变成蓝色,整个流程实例执行完毕。
5.子流程1)流程设计在Fire Workflow看来,子流程是父流程的一个任务。
可以通过创建一个附带子流程任务的环节,也可以在已经存在的环节中增加子流程任务。
在本文提供的子流程实例如下图,在父流程和子流程中都定义了一个流程变量xyz,在下一节流程模拟中可以看到,父流程的流程变量的值传递给了子流程。
父流程图子流程图流程定义文件是:parent.xml,child.xml2)流程模拟首先在父流程的模拟器界面启动父流程,并点击设置流程变量xyz的值为100,如下图签收并通过Activity1.Task1后,系统弹出选择文件的对话框,定位到child.xml流程定义文件,然后确定。