`

转:工作流概念、流程引擎及实现

阅读更多

关键字: java工作流, 自定义工作流, 流程设计器

      曾经在2001年做CRM产品的时候,因为CRM产品的客户状态升迁,每个具体用户的升迁规则可能会不一样,技术主管说要集成一个工作流软件工具......,那是我第一次听说工作流。当时很不理解,这工作流软件如何能做到将业务流程定义进去呢?当然,那时候工作流软件工具还不成熟和完善,也或者我们也没有达到那个层次,后来终究还是没有用上工作流。
 
      工作流软件,顾名思义,就是业务信息数据在多个环节模块之间的流转。按照工作流管理联盟的定义,工作流指的是“业务过程的部分或全部在计算机应用环境下的自动化”。在实际应用过程中,为了实现对业务过程的工作流管理,需要对业务流程及其各个步骤之间业务规则的抽象,概括,做成一个统一通用的流程管理软件系统,这种软件系统就是工作流管理系统。   
   
      工作流管理系统的主要功能是通过计算机技术的支持去定义、执行和管理工作流,协调工作流执行过程工作之间以及群体成员之间的信息交互。工作流管理系统将业务流程中工作如何组织协调在一起的规则抽象出来,从而分离了具体工作的逻辑和流程组织的逻辑。实现对业务过程的抽象建模、业务过程仿真分析、业务过程优化、业务过程管理与集成。从而最终实现业务过程的流程自动化管理。
    开发人员或者流程的应用人员遵从工作流管理系统的规则或约定,设计和实现具体的业务流程。 

 

工作流系统结构图:
    
   

    
    
  天蓝色蓝色:软件构件,完成工作流管理系统不同组成部分功能的实现;


  黄色:系统控制数据,工作流管理系统中的一个或多个软件构件使用的数据;

  棕色:应用与应用数据,对于工作流管理系统来说,它们不是工作流管理系统的组成部分,而是属于外部系统和数据,它们被工作流系统调用来完成整个和部分工作流管理的功能。 



    web工作流管理系统主要功能:
    业务流程建模;
    参与的用户,权限,角色设计;
    工作流测试运行;
    业务表单模块的建立;
    流程发布运行;
    流程管理和监控;
    流程出错后的修复。 
  
    
    通常开发一个工作流管理系统主要包含如下几个部分:     
    工作流引擎开发  
    工作流定义工具
    自定义表单模块
    流程管理和监控 

    工作流引擎: 主要是实现业务流程的规则抽象,模型的建立,解释,以及为流程实例提供运行环境,并解释执行流程实例。 
    工作流定义工具:主要是实现工作流的描述文件的定义和建立,通过可视化的方式把复杂的流程定义以图形化的方式显示出来,并加以操作。

 

    自定义模块:主要指自定义表单,实现业务模块的工具。


    流程管理和监控:主要指组织机构、角色,流程实例等数据的维护管理和流程执行情况的监控;

工作流引擎,主要是实现业务流程的规则抽象,模型的建立,解释,以及为流程实例提供运行环境,并解释执行流程实例。
      工作流引擎必须要包含一个工作流模型的设计,工作流模型就是对业务流程抽象的一个模型,是整个工作流引擎的基础。所以模型设计的好坏决定引擎的功能是否灵活,也决定了工作流管理系统从设计实现到运行实施等诸多环节。
 
  在信息管理自动化的环境下,工作流模型必须采用简单、直观、又具有较强描述能力的模型。我们公司的自定义工作流系统采用了有限状态机的数学模型来实现工作流模型,有限状态机(FSM)又称为有限状态自动机或简称状态机,是表示有限个状态以及这些状态之间的转移和动作等行为的数学模型。
状态转换图:

状态转换图

 

  上图左数第一个图:为初始状态,用粗线圈表示;
                             SX,S0,S01,S011,S0110 为状态名称
                             U=0表示处于该状态的输入
                             连线箭头上的0或1表示导入状态转换时的输入

 

      工作流模型正是利用这种状态和动作,动作的结果导致状态的转移来达到流程的流转。

 

      工作流引擎的每一种状态(state)被描述成为一个步骤(step)和步骤的状态(status)。工作流实例从一种状态(state)升迁到另外一种状态是通过执行动作(action)来达到的,动作的结果(result)导向另外一种状态(state),这样达到流程的流转。在一个工作流实例的生命周期内通常有一个或者多个活动的状态(state)。这些简单的思想表现在工作流引擎的核心包里面,并且通过一个简单的XML文件来描述业务工作流程。

 

 一个简单的流程描述xml文件是这样的:

上图xml流程的图解状态过程如下:


开始节点-》初始化动作--》步骤节点-》动作节点--》结束


工作流引擎的基本元素:
步骤(step)
    一个step描述的是工作流所处的位置。可能从一个step transtion到另外一个step,或者也可以在同一个step内流转(因为step可以通Status来细分,形成多个state)。一个流程里面可以有多个step。


状态(status)
    状态status 是用来描述工作流程中具体step(步骤)状态的字符串。eWorkFlow中预置了三种步骤的状态 Underway(进行中)、Queued(等候处理中)、Finished(完成),用户可以任意扩展自己的状态。而工作流的状态state则是由step(步骤)+status(步骤的状态)组成的。工作流状态state的升迁来达到工作流实例的推进。


流转(transtion)
    一个工作流实例状态state到另一个状态state的转移。


动作(action)
    action 触发了发生在 step 内或 step 间的流转,或者说是基于 state 的流转。一个 step 里面可以有多个action。action 和step 之间的关系是,step 说明“在哪里”,action 说明“去哪里”。 一个 action 典型地由两部分组成:可以执行此action(动作)的condition(条件),以及执行此动作后的 result(结果)。   


任务(task)
  任务是当工作流状态发生转移的时候,产生的任务。任务可以指定为一个具体的角色,人,或者群组。任务具体,待办,已办,竞争办理,代理待办等多种功能。


条件(condition)
类似于逻辑判断,可包含“AND”和“OR”逻辑。比如一个请假流程中的“本部门审批阶段”,该阶段利用“AND”逻辑,判断流程状态是否为等候处理中,以及审批者是否为本部门主管。


结果(result)
Result 代表执行action(动作)后的结果,指向新的 step 及其 step status,也可能进入 split 或者 join。result 分为两种, contidional-result (有条件结果),只有条件为真时才使用该结果,和 unconditional-result(无条件结果),当条件不满足或没有条件时使用该结果。


分支/合并(split/join)
流程的分支和合并。分支是指流程下一步可以同时分发给多个步骤,分支split 提供多个unconditional-result(无条件结果);join 则判断多个current step 的状态提供一个 result(结果)。


子流程(subflow)
子流程,动作的结果可以指向一个子流程,子流程是一个独立的流程,可以单独启动也可以嵌套在另外的流程中启动,和主流程有同步或异步衔接的属性。


自由流 (free transtion)
自由流是指当一个步骤的动作执行完成后,需要跳转到任务的步骤。任意步骤,是指整个流程范围内的任意步骤,包含执行过的或未执行过的。

 

回退流(return transtion)
 回退指当流程实例运行到某个步骤的时候,由于某些特殊原因需要回退到已经执行过的某个步骤上。回退是一种特殊的过程,只有在运行过程中才会明确指导要回退到那个步骤,回退往往需要执行业务补偿。回退和自由流不一样,回退会摸掉当前步骤到回退步骤之间的运行轨迹,就像初次运行到回退的步骤一样,同时需要辅助业务补偿来到达业务数据的回退。
   


      工作流引擎核心包内,对这些基本元素做解释,并提供流程实例启动,动作执行,任务完成等等API,达到对业务流程的抽象。业务系统集成工作流后,做好业务流程建模,然后利用自定义表单做好相应业务数据的处理,将表单挂接到流程上。启动工作流系统,就可以实现业务系统了。

分享到:
评论

相关推荐

    轻量级工作流引擎的设计与实现

    针对目前企事业的一般业务,我们运用了轻量级工作流引擎的概念,主要探讨轻量级工作流引擎的具体设计和具体实现。实践证明,轻量级的工作流引擎可以满足企事业一般的需求,而且明显缩短了开发周期。

    Activiti工作流笔记.chm

    1:工作流的概念 1 2:工作流的执行过程 1 3:Activiti介绍 1 3.1:工作流引擎 2 3.2:BPMN 2 3.3:数据库(先学后看) 2 3.4:activiti.cfg.xml(activiti的配置文件) 4 3.5:logging.properties(日志处理) 5 4...

    驰骋工作流引擎 CCFlow(.NET平台源码下载)

    该资源是驰骋工作流引擎的开源版本,.NET平台,可用于二次开发,也可以直接下载部署使用。 基础功能: 1、流程引擎设计支持所见即所得的设计:节点设计、表单设计、单据设计、报表定义设计,方向条件设计.... 2、...

    长庆油田办公自动化系统中工作流的设计与实现

    重点研究了在采用工作流技术开发的业务流程中,运用工作流处理引擎,轻松定制各种工作流程的方法,让系统具有极大的伸缩性。能够集成其他业务系统,实现了业务系统中的数据和办公流程的完美结合。

    工作流引擎

    本文档简单介绍了工作流引擎的概念和一些技术特点,对比了当前主流的流程引擎之间的区别。

    两款开源.NET工作流引擎 Elsa与ccflow使用比较.docx

    相对java开源的工作流程引擎.net开源的工作流程引擎相对较少,这里整理两款.net开源工作流引擎,做一下对比使用。 elsa示例代码:Githubd地址:https://github.com/zhenl/MyElsa ccflow下载地址:...

    工作流引擎 Osworkflow 及其持久化机制的研究

    由OpensymPhony组织开发的开源工作流引擎 OSWorkflow是一种非常灵活的工作 流引擎。它主要基于有限状态机理论,通过状态的迁移描述工作的流转。每一种状态(state) 被描述成为 step ID和 status。从一种状态(state)...

    JBPM4工作流应用开始指南.rar

    第一篇 jBPM工作流开发基础 1 第1章 工作流基础 2 1.1 工作流概念 2 1.1.1 工作流管理思想之于企业现代化管理 2 1.1.2 工作流技术在企业中的应用 5 1.1.3 如何从一个开发者的角度看工作流技术 6 1.2 工作流管理系统...

    web工作流管理系统开发

    web工作流管理系统开发之一 工作流概念 web工作流管理系统开发之二 工作流引擎 web工作流管理系统开发之三 可视化流程设计器 web工作流管理系统开发之四 自定义表单 web工作流管理系统开发之五 开源osworkflow之用户...

    基于web的工作流管理系统的设计与实现

    web工作流管理系统开发之一 工作流概念 web工作流管理系统开发之二 工作流引擎 web工作流管理系统开发之三 可视化流程设计器 web工作流管理系统开发之四 自定义表单 web工作流管理系统开发之五 开源osworkflow之...

    Node.js流程控制引擎Stepify.zip

    Stepify(node-stepify) 是一个简单易扩展的Node.js流程控制引擎,采用方法链(methods chain)的方式定制异步任务,使得Node.js工作流易于理解和维护。 目标是将复杂的任务进行拆分成多步完成,使得每一步的执行过程...

    HF BPM(工作流平台) V1.01源码

    HF BPM(工作流平台) V...我们实际工作中的每一个环节并不是孤立的,每个环节前后都有千丝万缕的联系,要记录这些环节,做到精确控制,所以我们引入了工作流的概念,推出了工作流系统。 作者:云飞扬 网址:www.hfbpm.com

    CCFlow驰骋工作流引擎-.net

    10、CCFlow是国内流程引擎与表单引擎集成较好的bpm软件,流程引擎可以操纵表单引擎数据实现复杂的业务数据处理与权限控制。 11、CCFlow拥有200多个流程演示模版,涵盖了我们在开发过程中遇到的很多的应用场景,参考...

    java基于BS结构下的OA流程可视化的研究与实现

    第一部分介绍了工作流和工作流设计工具的相关概念与开发背景;第二部分对工作相关基础理论技术、系统环境与平台基础、以及开发技术进行了描述;第三部分对系统功能进行了分析;第四部分详细介绍了系统流程、流程可视...

    Python程序基础:网络爬虫的概念及数据抓取.pptx

    网络爬虫的概念及数据抓取;本章导读;学习目标;网络爬虫(Web Spider)又称网络蜘蛛或网络机器人,是一段用来实现自动采集网站数据的程序。 网络爬虫不仅能够为搜索引擎采集网络信息,而且还可以作为定向信息采集器,...

    Activiti6.0教程例子下载

    Activiti 作为一个遵从 Apache 许可的工作流和业务流程管理开源平台,其核心是基于 Java 的超快速、超稳定的 BPMN2.0 流程引擎,强调流程服务的可嵌入性和可扩展性,同时更加强调面向业务人员。 Activiti 流程引擎...

    X5快速开发手册

    X5平台是基于“业务模型驱动(BMD)”方法作为设计思想,X5平台包含业务层和界面层,业务层包括数据概念模型、过程模型通过数据模型引擎和工作流引擎进行实现;表现层的界面模型通过组件机制进行实现。X5平台提供了...

    zeebe:用于微服务编排的分布式工作流引擎

    Zeebe.io-用于微服务编排的工作流引擎 Zeebe提供对跨多个微服务的业务流程的可视性并对其进行控制。 为什么选择Zeebe? 在可视化地定义流程选择您的编程语言使用和部署建立对来自和其他消息队列的消息作出React的...

    Activiti:Activiti是面向商人,开发人员和系统管理员的轻量级工作流和业务流程管理(BPM)平台。 它的核心是用于Java的超快速,坚固的BPMN 2流程引擎。 它是开源的,并根据Apache许可进行分发。 Activiti可在任何Java应用程序,服务器,集群或云中运行。 它与Spring完美集成,非常轻巧,基于简单的概念

    Activiti是一个轻量级的工作流和业务流程管理(BPM)平台,面向业务人员,开发人员和系统管理员。 它的核心是用于Java的超快速,坚固的BPMN 2流程引擎。 它是开源的,并根据Apache许可进行分发。 Activiti可在任何...

Global site tag (gtag.js) - Google Analytics