activiti完整教程

  • Post author:
  • Post category:其他









Activiti

教程







1.





activiti

介绍







Activiti

是由


Alfresco


软件在


2010





5





17


日发布的业务流程管理


(BPM)


框架


,


它是覆盖了业务流程管理,工作流,服务协作等领域的一个开源,灵活的,易扩展的可执行流程语言框架。




Activiti

基于


Apache


许可的开源


BPM


平台,创始人


Tom Baeyens





JBoss JBPM


的项目架构师,它的特色是提供了


eclipse


插件,开发人员可以通过插件直接绘画出业务流程图。












1.1






工作流引擎







ProcessEngine

对象,这是


Activiti


工作的核心。负责生成流程运行时的各种实例及数据,监控和管理流程的运行。











1.2





BPMN






业务流程建模与标注(


Business Process Model and Notation,BPMN



),描述流程的基本符号,包括这些图元如何组合成一个业务流程图


(Business Process Diagram)





2.






准备环境








2.1





activiti

软件环境






  1. JDK1.6

    或者更高版本



  2. 支持的数据库有

    :h2,mysql,oracle,mysql,db2





  3. 支持

    activiti

    运行的


    jar


    包,可以通过


    maven


    依赖引入



  4. 开发环境为

    Eclipse3.7

    或者以上版本,


    myeclipse





    8.6


    版本





2.2

安装流程设计器


(eclipse


插件


)







1

)打开


Help



à


Install New Software


à


Add



输入


Name:   Activiti Designer





Location: http://activiti.org/designer/update/



输入完成后,单击


OK


按钮等待下载完成后安装。



安装完成后在菜单选项中会出现


activiti


的目录选项









2.3

设置


eclipse activit


插件的画流程图 选项







打开菜单


Windows –> Preferences –> Activiti –>Save


下流程图片的生成方式







勾选上


Create process definition image when saving  the diagram



操作,勾选上这个操作后在画流程图后保存


eclipse


会自动生成对应的流程图片。






2.4

准备开发环境









2.4.1

创建


maven web


项目,在


maven


中添加


activiti


依赖










eclipse



左边工作栏右键


New


选择创建


Maven Project


项目,创建一个名为


ActivitiTest


的项目












点击


Finish


完成。



右键项目选择


Properties



,选择


Project Facets


勾选上图中的选项,点击


Apply


,再点击


OK







然后将项目转换成


web



项目


,


右键项目选择


Properties,





Project Facets


中做如下勾选


,


然后点击


Appy


应用和


OK


确定












然后右键项目



Properties

,选择


Deployment Assembly,





test


相关目录


Remove


掉之保留


main


下面需要发布的内容,如下图











然后点击


Appply






OK




然后在


pom.xml


文件中添加以下依赖


<project


xmlns=”http://maven.apache.org/POM/4.0.0″ xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>


<modelVersion>4.0.0</modelVersion>


<groupId>ActivitiTest</groupId>


<artifactId>ActivitiTest</artifactId>


<version>0.0.1-SNAPSHOT</version>


<packaging>war</packaging>


<dependencies>






<dependency>








<groupId>org.activiti</groupId>








<artifactId>activiti-engine</artifactId>








<version>5.22.0</version>






</dependency>






<dependency>








<groupId>org.activiti</groupId>








<artifactId>activiti-spring</artifactId>








<version>5.22.0</version>






</dependency>






<dependency>








<groupId>org.codehaus.groovy</groupId>








<artifactId>groovy-all</artifactId>








<version>2.4.3</version>






</dependency>







<dependency>








<groupId>org.slf4j</groupId>








<artifactId>slf4j-api</artifactId>








<version>1.7.6</version>






</dependency>






<dependency>








<groupId>org.slf4j</groupId>








<artifactId>slf4j-jdk14</artifactId>








<version>1.7.6</version>






</dependency>







<dependency>








<groupId>junit</groupId>








<artifactId>junit</artifactId>








<version>4.11</version>






</dependency>







<!– postgresql

数据库驱动包开始




根据数据库选择



–>






<dependency>








<groupId>org.postgresql</groupId>








<artifactId>postgresql</artifactId>








<version>9.3-1103-jdbc41</version>






</dependency>






<!– postgresql

数据库驱动包结束


–>









<dependency>








<groupId>mysql</groupId>








<artifactId>mysql-connector-java</artifactId>








<version>5.1.38</version>






</dependency>




</dependencies>



</project>



更新



maven

项目下载


jar








2.4.2

初始化数据库







1




src/main/resource


目录下创建




activiti.cfg.xml




文件



,

内容如下






<?


xml






version


=




“1.0”








encoding


=




“UTF-8”




?>


<


beans






xmlns


=




“http://www.springframework.org/schema/beans”








xmlns:xsi


=




“http://www.w3.org/2001/XMLSchema-instance”







xmlns:context


=




“http://www.springframework.org/schema/context”








xmlns:tx


=




“http://www.springframework.org/schema/tx”







xmlns:jee


=




“http://www.springframework.org/schema/jee”








xmlns:aop


=




“http://www.springframework.org/schema/aop”







xsi:schemaLocation


=




“http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd





http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd





http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd





http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd





http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd”




>







<bean id=”processEngineConfiguration”






class=”org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration”>






<property name=”jdbcDriver” value=”com.mysql.jdbc.Driver” />









<property name=”jdbcUrl” value=”jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8″ />






<property name=”jdbcUsername” value=”root” />






<property name=”jdbcPassword” value=”123456″ />






<property name=”databaseSchemaUpdate” value=”true”/>




</bean>



</


beans


>




jdbcUrl

为你电脑数据库的


url




jdbcUsername

为数据库用户名




jdbcPassword

为数据库密码







2)




main/java


目录下创建任意目录和类




编写创建


activiti


数据表方法




public








class




CreateTable {





/****




*

创建流程表




* */




@


Test






public








void




createTable() {






ProcessEngine


processEngine


= ProcessEngineConfiguration.




createProcessEngineConfigurationFromResource




(


“activiti.cfg.xml”


)










.buildProcessEngine();









System.






out






.println(


“——processEngine:”


+


processEngine


);




}


}




然后运行该测试方法,如果运行成功,在数据库中应该会产生

25




activiti


的相关数据表









2.4.3 activiti

表说明







下面是概括了几个常用的数据表






流程部署相关表



act_re_deployement

部署对象表




act_rep_procdef

流程定义表




act_ge_bytearray

资源文件表




act_ge_prperty

主键生成策略表(对于部署对象表的主键


ID










流程实例相关表



act_ru_execution

正在执行的执行对象表(包含执行对象


ID


和流程实例


ID


,如果有多个线程可能流程实例


ID


不一样)




act_hi_procinst

流程实例历史表




act_hi_actinst

存放历史所有完成的任务










Task

任务相关表




act_ru_task

代办任务表 (只对应节点是


UserTask


的)




act_hi_taskinst

代办任务历史表 (只对应节点是


UserTask


的)







act_hi_actinst

所有节点活动历史表 (对应流程的所有节点的活动历史,从开始节点一直到结束节点中间的所有节点的活动都会被记录)










流程变量表



act_ru_variable

正在执行的流程变量表




act_hi_variable

流程变量历史表






3.

核心


API









3.1 ProcessEngine






说明


:



1)




Activiti


中最核心的类,其他的类都是由他而来。




2)

产生方式




ProcessEngine



processEngine



= ProcessEngines.




getDefaultProcessEngine




();




如果是



spring

配置文件可以配置


bean


注入:




<!– activiti

开始


–>




<bean id=”processEngineConfiguration” class=”org.activiti.spring.SpringProcessEngineConfiguration”>



<property name=”dataSource” ref=”dataSource” />



<property name=”transactionManager” ref=”transactionManager” />



<property name=”databaseSchemaUpdate” value=”true” />



<property name=”jobExecutorActivate” value=”false” />



</bean>






<bean id=”processEngineFactory” class=”org.activiti.spring.ProcessEngineFactoryBean”>



<property name=”processEngineConfiguration” ref=”processEngineConfiguration” />



</bean>






<bean id=”repositoryService” factory-bean=”processEngineFactory” factory-method=”getRepositoryService” />



<bean id=”runtimeService” factory-bean=”processEngineFactory” factory-method=”getRuntimeService” />



<bean id=”formService” factory-bean=”processEngineFactory” factory-method=”getFormService” />



<bean id=”identityService” factory-bean=”processEngineFactory” factory-method=”getIdentityService” />



<bean id=”taskService” factory-bean=”processEngineFactory” factory-method=”getTaskService” />



<bean id=”historyService” factory-bean=”processEngineFactory” factory-method=”getHistoryService” />



<bean id=”managementService” factory-bean=”processEngineFactory” factory-method=”getManagementService” />





<!– activiti

结束


–>







3

)可以产生


RepositoryService




RepositoryService





repositoryService





=



processEngine



.getRepositoryService();






4)

可以产生



RuntimeService



RuntimeService





runtimeService





=



processEngine



.getRuntimeService();






5)

可以产生



TaskService



TaskService





taskService





=



processEngine



.getTaskService();










各个



Service

的作用




RepositoryService



管理流程定义



RuntimeService



执行管理,包括启动,推进,删除流程实例等操作



TaskService



任务管理











3.2 RepositoryService






Activiti

的仓库服务类。所谓的仓库指流程定义文档的两个文件:


bpmn


文件和流程图片







service


可以用来删除部署的流程定义。





3.3 RuntimeService









activiti


的流程执行服务类,可以从这个服务类中获取很多关于流程执行的相关的信息。





3.4 TaskService









activiti


的任务服务类。可以从这个类中获取任务的相关信息,如当前正在执行的个人待办和用户组待办任务。





3.5 HistoryService









activiti


的查询历史信息的类,在一个流程执行完成后,这个对象为我们提供查询历史信息,可以跟踪流程实例对应所有待办节点的运行情况。





3.6 ProcessDefinition






流程定义类,可以从这里获得资源文件等。





3.7 ProcessInstance






代表流程定义的执行实例,当一个部署的流程图启动后,该流程只有一条流程实例数据,但是它的流程任务可以有多个,每个任务对应流程图中相应的流程节点。











4.

入门


HelloWorld


程序









4.1





创建流程图方法








点击



ActivitiTest




项目,在


src/main/java


目录下创建一个




diagrams

目录用来存放流程图




在当前项目右键选择


Activiti Diagram



流程图输入流程图名称


HelloWorld


,然后点击


OK











在控制面板的右边栏有相关的画图图标操作







其中一个流程必须包含一个开始节点和一个结束节点,结束节点可以有多个。



然后使用


StartEvent, UserTask,EndEvent



画出下面的流程图,然后用


Connection


中的


SequenceFlow


连线连接起来。














4.2

创建流程图,如下图











完整文档下载地址:



http://download.csdn.net/download/qq_29582193/10266221