一、 什么是工作流
以请假为例,现在大多数公司的请假流程是这样的
员工打电话(或网聊)向上级提出请假申请——上级口头同意——上级将请假记录下来——月底将请假记录上交公司——公司将请假录入电脑
采用工作流技术的公司的请假流程是这样的
员工使用账户登录系统——点击请假——上级登录系统点击允许
就这样,一个请假流程就结束了
有人会问,那上级不用向公司提交请假记录?公司不用将记录录入电脑?答案是,用的。但是这一切的工作都会在上级点击允许后自动运行!
这就是工作流技术。
Georgakopoulos给出的工作流定义是:工作流是将一组任务组织起来以完成某个经营过程:定义了任务的触发顺序和触发条件,每个任务可以由一个或多个软件系统完成,也可以由一个或一组人完成,还可以由一个或多个人与软件系统协作完
二、 工作流技术的优点
从上面的例子,很容易看出
工作流系统,实现了工作流程的自动化,提高了企业运营效率、改善企业资源利用、提高企业运作的灵活性和适应性、提高量化考核业务处理的效率、减少浪费(时间就是金钱)。
而手工处理工作流程,一方面无法对整个流程状况进行有效跟踪、了解,另一方面难免会出现人为的失误和时间上的延时导致效率低下,特别是无法进行量化统计,不利于查询、报表及绩效评估。
三、 Java开发者会为什么要学Activiti 工作流
在Java领域,JBPM和Activiti 是两个主流的工作流系统,而Activiti 的出现无疑将会取代JBPM(Activiti 的开发者就是从Jbpm开发者出来的)。
四、 Activiti 工作流学习要点
1. 1个插件
在Eclipse中安装Activiti 插件,让你可以在Eclipse中绘制Activiti 工作流图
2. 1个引擎
ProcessEngine对象,Activiti 工作流引擎。这是Activiti工作的核心。负责生成流程运行时的各种实例及数据、监控和管理流程的运行。
所有的操作都是从获取引擎开始的,所以一般会把引擎作为全局变量
ProcessEngine processEngine =ProcessEngines.getDefaultProcessEngine();
3. 1个配置文件
activiti.cfg.xml。Activiti核心配置文件,配置流程引擎创建工具的基本参数和数据库连接池参数
4. 5种数据库表
Activiti的后台是有数据库的支持,所有的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。用途也和服务的API对应。
ACT_RE_*: 'RE'表示repository。 这个前缀的表包含了流程定义和流程静态资源(图片,规则,等等)。
ACT_RU_*: 'RU'表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据,在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。
ACT_ID_*: 'ID'表示identity。 这些表包含身份信息,比如用户,组等等。
ACT_HI_*: 'HI'表示history。 这些表包含历史数据,比如历史流程实例,变量,任务等等。
ACT_GE_*: 通用数据,用于不同场景下,如存放资源文件。
5. 23张表
不同的表存放不同方面的数据,有流程定义表、任务结点表、流程变量表、任务历史表等等。
6. 5项Service
不同的Service类对应不同的功能。
比如TaskService,是activiti的任务服务类。可以从这个类中获取任务的信息。
而HistoryService,则是activiti的查询历史信息的类。在一个流程执行完成后,这个对象为我们提供查询历史信息。
RepositoryService 管理流程定义
RuntimeService 执行管理,包括启动、推进、删除流程实例等操作
TaskService 任务管理
HistoryService 历史管理(执行完的数据的管理)
IdentityService 组织机构管理
FormService 一个可选服务,任务表单管理
ManagerService
7. 7项基本操作
设计流程图(各种组件,如连线、用户任务、网关)
流程定义增删改查
流程变量增删改查
启动流程定义
任务增删改查
完成任务
历史信息查询
五、 安装activiti流程设计器插件
第一步:获得下载activiti-eclipse插件的安装包
第二步:解压安装包,复制解压文件里面的activiti到eclipse中的dropins目录中
第三步:重启eclipse,勾选save选项
第四步:如果重启eclipse无法显示activiti图标,表明所使用的eclipse版本不支持该插件,可以选择换myeclipse或其他版本的eclipse
六、 初始化activiti框架数据表
5.1 下载activiti框架
Activiti框架下载地址:http://activiti.org/
5.2创建一个数据库
5.3使用activiti框架的自动建表功能
activiti框架提供了和hibernate类似的自动建表功能
搭建开发环境:
第一步:创建一个java项目activiti1110
第二步:导入jar包(从下载下来的activiti-5.13工作流引擎下面的DEMO导入jar包),还需要导入mysql驱动包
1、不使用配置文件(不建议)
测试代码:
package net.csdn.activiti;
import org.activiti.engine.ProcessEngine;
importorg.activiti.engine.ProcessEngineConfiguration;
import org.junit.Test;
public class HelloWorld {
/**
* 使用activiti框架提供的自动建表(没有配置文件)
*/
@Test
public void test1(){
//创建一个流程引擎配置对象
ProcessEngineConfiguration configuration =ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
//配置数据源
configuration.setJdbcDriver("com.mysql.jdbc.Driver");
configuration.setJdbcUrl("jdbc:mysql://localhost:3306/activiti_1110?useUnicode=true&characterEncoding=UTF-8");
configuration.setJdbcUsername("root");
configuration.setJdbcPassword("root");
//设置自动建表
configuration.setDatabaseSchemaUpdate("true");
//创建一个流程引擎对象,在创建流程引擎对象过程中会自动创建表
ProcessEngine processEngine =configuration.buildProcessEngine();
}
}
2、使用配置文件
配置文件activiti-context.xml如下:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-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/activiti_1110"/>
<property name="jdbcUsername" value="root" />
<property name="jdbcPassword" value="root" />
<property name="databaseSchemaUpdate" value="true" />
</bean>
</beans>
测试代码:
/**
* 使用框架提供的自动建表(提供配置文件)---配置文件activiti-context.xml可以从框架提供的例子程序中获取
*/
@Test
public void test2() {
String resource = "activiti-context.xml";// 配置文件名称
String beanName = "processEngineConfiguration";// 配置id值
ProcessEngineConfiguration conf =ProcessEngineConfiguration
.createProcessEngineConfigurationFromResource(resource,
beanName);
ProcessEngine processEngine =conf.buildProcessEngine();
}
3、使用配置文件(使用默认配置)
要求配置文件名称必须为activiti-context.xml或者activiti.cfg.xml因为,因为默认的配置ProcessEngines.getDefaultProcessEngine();会初始化这两个文件的其中一个,默认的配置信息如下:
测试代码:
/**
* 使用框架提供的自动建表(使用配置文件)
*/
@Test
public void test3() {
ProcessEngine processEngine =ProcessEngines.getDefaultProcessEngine();
}
转自:http://www.it165.net/pro/html/201504/37443.html