activiti学习笔记 最简单入门实例

activiti是JBPM4的后续产品,因为没有用过JBPM4,所以开始对这个产品摸不着头脑,不知道怎么用。后来看了很多案列,说的是快速入门(比如xx兔,某水果OA的),其实有一定难度,关键在于不好理解。

现在我大概有个简单入门,使用acitiviti大概有下面步骤:

1,使用eclipse4.3 kelper版本安装流程设计器(原因:支持activiti5.14.1版本的流程设计器,其他的版本安装了可能用不起);

2,下载activiti;

3,建立项目,导入JAR包,配置文件activiti.cfg.xml(没有使用maven构建是因为网络慢,也不熟悉);

4,绘制流程,生成bpmn形式的XML文件;

5,建立测试class,运行(就是普通的类,手动创建代码来测试装好没有以及大概了解activiti的运作模式);

具体的:

1,eclipse官方下载4.3.2kelper J2EE版本,安装activiti5.14.1 designer流程设计器

(在线安装方式,安装后可以直接使用:)地址:http://activiti.org/designer/update/

   jboss bpmn6 设计器,参考http://download.eclipse.org/bpmn2-modeler/updates/kepler/1.0.1

(或者下载后放到plug下)下载地址:http://activiti.org/designer/archived/

说明:myeclipse10是eclipse3.7版本,安装了activiti designer后不能正常使用,很麻烦,myeclipse10以下更加无法安装;

2,下载activiti,地址:http://activiti.org/download.html

5.14.1这个版本下的libs文件夹就是JAR包,但是没有依赖包;需要依赖包,一个方法是用maven下载依赖(我觉得很麻烦),或者打开目录下的wars文件夹,有个activiti-explorer.war,解压,里面的LIBS就全部包括,直接拷贝;

3,建立web项目,导入LIB方便,配置activiti.cfg.xml文件,放在根目录下,不要放在文件包里面,不然可能找不到。

   配置文件: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"
        xsi:schemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd" >
 
     < bean  id = "processEngineConfiguration"  class = "org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration" >
         < property  name = "jdbcUrl"  value = "jdbc:mysql://localhost:3306/act" />
         < property  name = "jdbcDriver"  value = "com.mysql.jdbc.Driver" />
         < property  name = "jdbcUsername"  value = "root" />
         < property  name = "jdbcPassword"  value = "123" />
         <!-- 自动构建数据库表,设置value="true",第一次启动建表;设置value="drop-create",每次启动时建新表->
         <property name="databaseSchemaUpdate" value="true" />
     </bean>
     <!--以下是使用H2作为数据库,测试的时候非常好用!-->
     < bean  id = "processEngineConfiguration"  class = "org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration" >
         <!--<property name="jdbcUrl" value="jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000" />-->
         < property  name = "jdbcUrl"  value = "jdbc:h2:file:~/wayhb;AUTO_SERVER=TRUE"  />
         < property  name = "jdbcDriver"  value = "org.h2.Driver"  />
         < property  name = "jdbcUsername"  value = "sa"  />
         < property  name = "jdbcPassword"  value = ""  />
         <!-- Database configurations -->
         < property  name = "databaseSchemaUpdate"  value = "true"  />
         <!-- job executor configurations -->
         < property  name = "jobExecutorActivate"  value = "false"  /> 
     </ bean >
</ beans >

44,绘制流程图:


生成文件MYprocess.bpmn的配置文件放在根目录,其实这个东西就是生成了符合BPMN2规范的XML文件,这个文件可以单独拿出来使用;

5,建立一个普通CLASS用于测试,没有使用junit:

package  main.java;
 
import  org.activiti.engine.ProcessEngine;
import  org.activiti.engine.ProcessEngines;
import  org.activiti.engine.RepositoryService;
import  org.activiti.engine.RuntimeService;
import  org.activiti.engine.TaskService;
import  org.activiti.engine.task.Task;
import  org.springframework.context.ApplicationContext;
import  org.springframework.context.support.ClassPathXmlApplicationContext;
 
import  com.sun.corba.se.spi.activation.Repository;
 
public  class  First {
 
     public  static  void  main(String[] args) {
     //加载配置文件activiti.cfg.xml,创建引擎,如果出现null,多半是加载路径不是根目录。
     //获取配置文件后,引擎开始创建数据库。
         ProcessEngine engine=ProcessEngines.getDefaultProcessEngine();
     //获取流程储存服务组件
         RepositoryService rs=engine.getRepositoryService();
     //获取运行时服务组件
         RuntimeService rse=engine.getRuntimeService();
     //获取流程中的任务TASK组件
         TaskService ts=engine.getTaskService();
     
     //部署流程,只要是符合BPMN2规范的XML文件,理论上都可以被ACTIVITI部署
         rs.createDeployment().addClasspathResource( "MYprocess.bpmn" ).deploy();
     
     //开启流程,myprocess是流程的ID 
         rse.startProcessInstanceByKey( "myProcess" );
     //利用taskservice进行任务查询,查询第一个任务,查询后完成
         Task task=ts.createTaskQuery().singleResult();
         System.out.println( "第一个流程任务完成前" +task.getName());
         ts.complete(task.getId());
     
     //完成第一个任务后再次查询,出现第二个任务名称,完成第二个任务   
         task=ts.createTaskQuery().singleResult();
         System.out.println( "第二个流程任务完成前" +task.getName());
         ts.complete(task.getId());
     
     //再次查询,TASK是NULL   
         task=ts.createTaskQuery().singleResult();
         System.out.println( "结束后" +task);
     }
 
}

后台结果:

?
1
2
3
第一个流程任务完成前expense request
第二个流程任务完成前handle request
结束后NULL



从官方的文档来看,activitie就是提供一系列服务,上面的代码配合图一目了然,就是载取配置文件activiti.cfg.xml,然后开启ProcessEngine,然后从ProcessEngine中获取各种服务。


简介

本项目旨在让初学者快速入门Activiti。

作者咖啡兔

项目主页http://www.kafeitu.me/activiti/2012/05/26/kft-activiti-demo.html

在线演示http://demo.kafeitu.me:8080/kft-activiti-demo

git:https://github.com/henryyan/kft-activiti-demo

Wiki文档:https://github.com/henryyan/kft-activiti-demo/wiki

QQ群在线支持:: 236540304

《Activiti实战》:Activiti项目Team Leader Tijs Rademakers认可并推荐,详情访问http://www.kafeitu.me/activiti-in-action.html





猜你喜欢

转载自blog.csdn.net/yh869585771/article/details/80020303
今日推荐