工作流框架的介绍

发表时间:2017-07-18 19:00:29 浏览量( 15 ) 留言数( 0 )

学习目标:

1、了解Java的历史

2、为什么要学习Java语言

3、端正学习态度


学习过程:

一、工作流

   平时我们去政府办事都有一套流程的,比如先去那个窗口填写资源,再去另外一个窗口进行申报等,这就是工作流,抽象点的说工作流,指“业务过程的部分或整体在计算机应用环境下的自动化”。是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。平时我们使用大量系统都会使用到工作流,比如政府的OA系统,财务的审批系统等等,都会使用工作流,工作流成也不是一成不变的,经常会因为业务变化而变化,如何可以快速的设计工作流程,并应用到系统中,那么就必须产品化工作流。设计一个工作流引擎。工作流引擎是指workflow作为应用系统的一部分,并为之提供对各应用系统有决定作用的根据角色、分工和条件的不同决定信息传递路由、内容等级等核心解决方案。工作流引擎包括了,流程的节点管理、流向管理、流程样例管理等重要功能。

   市场上有很多工作流引擎,比较出名的有jbpm和activiti两个,可以让我们免费使用,我们这几天主要学习的时activiti。

二、简介和历史

Activiti官方网站

http://www.activiti.org/download.html

1、Activiti的简介 

   Activiti项目是一项新的基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的BPMN 2.0标准,包括支持对象管理组(OMG),面对新技术的机遇,诸如互操作性和云架构,提供技术实现。

    创始人Tom Baeyens是JBoss jBPM的项目架构师,以及另一位架构师Joram Barrez,一起加入到创建Alfresco这项首次实现Apache开源许可的BPMN 2.0引擎开发中来。

    Activiti是一个独立运作和经营的开源项目品牌,并将独立于Alfresco开源ECM系统运行。 Activiti将是一种轻量级,可嵌入的BPM引擎,而且还设计适用于可扩展的云架构。 Activiti将提供宽松的Apache许可2.0,以便这个项目可以广泛被使用,同时促进Activiti BPM引擎和BPMN 2.0的匹配,该项目现正由OMG通过标准审定。 加入Alfresco Activiti项目的是VMware的SpringSource分支,Alfresco的计划把该项目提交给Apache基础架构,希望吸引更多方面的BPM专家和促进BPM的创新。

2、JBPM和Activiti

   jBPM是目前市场上主流开源工作引擎之一,在创建者Tom Baeyens离开JBoss后,jBPM的下一个版本jBPM5完全放弃了jBPM4的基础代码,基于Drools Flow重头来过,目前官网已经推出了jBPM6的beta版本;Tom Baeyens加入Alfresco后很快推出了新的基于jBPM4的开源工作流系统Activiti。由此可以推测JBoss内部对jBPM未来版本的架构实现产生了严重的意见分歧。本文试着对二者做一些比较。

   Activiti5与jBPM5技术组成对比:

 

序号   技术组成      Activiti                             jBPM5

1    数据库持久层ORM    MyBatis3                            Hibernate3

2    持久化标准           无                                       JPA规范

3    事务管理              MyBatis机制/Spring事务控制              Bitronix,基于JTA事务管理

4    数据库连接方式        Jdbc/DataSource                         Jdbc/DataSource

5   支持数据库             Oracle、SQL Server、MySQL等多数数据库   Oracle、SQL Server、MySQL等多数数据库

6   设计模式               Command模式、 观察者模式等

7   内部服务通讯           Service间通过API调用                     基于Apache Mina异步通讯

8   集成接口               SOAP、Mule、RESTful                      消息通讯

9   支持的流程格式         BPMN2、xPDL、jPDL等                      目前仅只支持BPMN2 xml

10  引擎核心               PVM(流程虚拟机)                        Drools

11  技术前身              jBPM3、jBPM4                              Drools Flow

12  所属公司              Alfresco                                 jBoss.org

 

    从技术组成来看,Activiti最大的优势是采用了PVM(流程虚拟机),支持除了BPMN2.0规范之外的流程格式,与外部服务有良好的集成能力,延续了jBPM3、jBPM4良好的社区支持,服务接口清晰,链式API更为优雅;劣势是持久化层没有遵循JPA规范。

    jBPM最大的优势是采用了Apache Mina异步通信技术,采用JPA/JTA持久化方面的标准,以功能齐全的Guvnor作为流程仓库,有RedHat(jBoss.org被红帽收购)的专业化支持;但其劣势也很明显,对自身技术依赖过紧且目前仅支持BPMN2。

    所以两者之间没有谁好谁坏的,两个都有很多公司使用,只是我个人更喜欢Activit的API接口,所以比较倾向Activiti


三、架构图


attcontent/f9b20f2f-2e64-4054-b837-e3024eb1b2e0.png

Activiti核心配置文件:activiti.cfg.xml

ProcessEngineConfiguration:通过activiti.cfg.xml创建。

ProcessEngine:通过ProcessEngineConfiguration创建

Service:通过ProcessEngine获取。 (核心重点)

RepositoryService    activiti的资源管理类 ,用于流程部署,获取流程部署的资源。。

RuntimeService    activiti的流程运行管理类,用于启动一个流程实例,操作当前运行的流程信息

TaskService    activiti的任务管理类,操作个人任务,组任务

HistoryService    activiti的历史管理类,用于操作历史 流程信息

IdentityService    activiti的用户身份管理类,设置用户、组(角色)、用户和组关系 。。

FormService    activiti的表单管理类,实现activiti中配置表单数据。

ManagerService    activiti的引擎管理类,用于activiti运行的监控,给超级管理员使用。

注:红色标注为常用service。

创建方式

通过ProcessEngine创建Service。

调用 ProcessEngine.getXXXXX方法获取service。

注意:如果和spring整合后,service直接可以从spring容器中获取。