完整文档下载地址:

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

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

activiti完整教程相关推荐

  1. Ajax 完整教程 (转)

    Ajax 完整教程 第 1 页 Ajax 简介 Ajax 由 HTML.JavaScript™ 技术.DHTML 和 DOM 组成,这一杰出的方法可以将笨拙的 Web 界面转化成交互性的 Ajax 应 ...

  2. 【★】KMP算法完整教程

    2019独角兽企业重金招聘Python工程师标准>>> KMP算法完整教程 全称:                               Knuth_Morris_Pratt ...

  3. MVC5+EF6 入门完整教程七

    原文:MVC5+EF6 入门完整教程七 本篇我们针对表格显示添加一些新功能. 前面我们已经讲解过表格显示数据了,现在我们添加三个常用功能: 对显示结果进行排序.过滤.分页. 文章提纲 理论基础/前置准 ...

  4. python爬虫教程入门-零基础入门Python爬虫不知道怎么学?这是入门的完整教程

    原标题:零基础入门Python爬虫不知道怎么学?这是入门的完整教程 这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑 ...

  5. TensorFlow教程之完整教程 2.7 字词的向量表示

     TensorFlow教程之完整教程 2.7 字词的向量表示 知与谁同 2017-08-22 15:37:40 浏览67 评论0 函数 摘要: 本文档为TensorFlow参考文档,本转载已得到T ...

  6. MVC5+EF6 入门完整教程十

    原文:MVC5+EF6 入门完整教程十 本篇是第一阶段的完结篇. 学完这篇后,你应该可以利用MVC进行完整项目的开发了. 本篇主要讲述多表关联数据的更新,以及如何使用原生SQL. 文章提纲 多表关联数 ...

  7. 安装完php后iis 503,IIS上安装PHP5.3的完整教程方法(及5.3.0以后版本的方法)

    IIS上安装PHP5.3的完整教程方法(及5.3.0以后版本的方法) 作者:随然 日期:2009-11-06 字体大小: 小 中 大 由于PHP5.3的全新特效及改进,原有的isapi方式解析PHP脚 ...

  8. MVC5+EF6 入门完整教程 总目录

    本系列文章会从一个主干开始,逐渐深入,初步规划30篇.初级10篇,中级10篇,综合项目实战10篇 初级10篇 MVC5+EF6 入门完整教程10:多对多关联表更新&使用原生SQL@201505 ...

  9. 开源题材征集 + MVCEF Core 完整教程小结

    到目前为止,我们的MVC+EF Core 完整教程的理论部分就全部结束了,共20篇,覆盖了核心的主要知识点. 下一阶段是实战部分,我们将会把这些知识点串联起来,用10篇(天)来完成一个开源项目. 现向 ...

最新文章

  1. C#数组排序(按列)
  2. python给函数设置超时时间_在 Linux/Mac 下为Python函数添加超时时间的方法
  3. hikari如何切换数据源_hikari数据库连接池
  4. Nginx_日志文件讲解
  5. 5 月份最热的 GitHub 项目
  6. 智慧数字门店管理系统、PAD、门店系统、收银开单、预约服务、会员管理、账单管理、数据统计、商品、库存、美容美体、美甲美睫、医疗美容、美发造型、医疗诊所、中医理疗、宠物服务、美业、经营业务、售卡、交班
  7. maven项目pom中scope类型
  8. HtmlUnit初探
  9. nginx两台文件服务器集群,keepalived结合nginx状态检测脚本实现对web服务器集群的高可用...
  10. python数据模型和各种实用小技巧,保证让你更PYTHONIC
  11. 印象笔记Mac版的快捷键有哪些?Evernote for Mac快捷键大全
  12. 使用并解析 OPML 格式的订阅列表来转移自己的 RSS 订阅(概念篇)
  13. 银行双活数据中心建设项目实践
  14. MOS管开启过程中VGS的台阶——米勒平台?
  15. Matlab——常用函数的用法总结(部分直接摘自mathwork,持续更新)
  16. 【RGBCW五路调光投光灯照明方案】 共阳极无频闪调光驱动IC 内置MOS降压恒流LED驱动芯片FP7122
  17. 输入一行只包含加法和乘法的算式,输出结果
  18. initramfs详解----设备文件系统
  19. java线程 睡眠_java如何编写线程睡眠工具类包括随机睡眠时长
  20. 广义线性模型 1统计学导论【作业】

热门文章

  1. 【图像处理】相机、透镜、人眼、小孔成像原理
  2. 郭国骥课题组《Nature communications》发表非洲爪蟾单细胞图谱并解析变态发育过程的调控机制...
  3. 线性代数-01矩阵与行列式
  4. 二项堆与斐波那契堆各个操作时间复杂度
  5. 美国往事 - 追忆我的房东Dick - 搞笑回忆
  6. java 类继承命名_Java oop 代码7:A1,A2继承A且B1,B1继承B且A,B继承C的商品类,人物模型类两道题...
  7. layui XmSelect扩展组件二次扩展
  8. 距阵乘以一个未知距阵得单位矩阵 怎么算_贷款利息怎么算,房贷车贷消费贷,利息有什么区别...
  9. java调用MySQL数据库
  10. 深入理解Java虚拟机:Jvm性能调优