Activiti学习笔记

Activiti学习笔记

Activiti是一个开源的工作流引擎,主页在http://www.activiti.org/,要下载的话直接点上面的download就可以啦。下载下来的东西里面有document,tutorial,还有需要的所有的jar包,还有一些demo。目前最新的版本是activit-5.9

这个项目的project leader是鼎鼎大名的Tom Baeyens,据说他以前是做jbpm的,做到jbpm4的时候,他离开了JBoss,到了Alfresco公司,组建起了这个Activiti研发团队,某种程度上,可以说这个Activiti才是真正jbpm5,而现在所谓的jbpm5几乎放弃了jbpm4的所有代码,从新开始,是以前的drool flow。

下载到的zip文件解压之后,第一件事当然是去看里面的document了,有个readme.html就是了。

看看看,他会告诉你怎么去运行它的demo,就是到setup目录下运行ant demo.start。我当时运行的时候,还出了点问题。运行demo.start会做几件事情:

1.      会自动建立H2数据库,建表,倒入数据

2.      自动联网去下载一个适合版本的tomcat,具体的配置信息在setup目录下的build.properties和build.db.properties中查看

3.      自动发布工程activiti-explorer和activiti-rest到那个tomcat上

4.      给你打开浏览器,访问这个工程activiti-explorer

太傻瓜,太自动化了。

如果自己已经有了好的tomcat,而且不想然它去下载,那也简单,只要按

build.properties中的配置,添加你的tomcat到上面命令生成downloads目录,而且修改恰当的tomcat版本号,就可以了。

如果不出意外,你一步到位的跑完,你已经看到activiti-explorer的登录界面了,这个demo默认的登录用户文档中说了,比如管理员kermit/kermit,登录上去玩吧。登录上去以后可以看到task,process和database,database是管理员才可以看到的。database可以看到数据库里面的数据。这些数据保存在H2中的,有兴趣的自己去研究一下这个H2数据库,只要一个jar包,嵌入式的,牛逼着呢,呵呵。

点到process上,可以看到一些已经发布了的流程demo,右上角有个startprocess的按钮,可以启动一个流程的。流程启动了就需要人去完成的,如果流程启动以后,当前登录用户碰巧可以做这个task,那么当前用户就会受到一个Inbox的task,点开Task,Inbox有了。如果流程定义的时候task是给一个group的话,那么就说明这个group的人都可以完成这个任务,如果当前用户想做的话,就claim它。

废话有点多了。还是好好看document,tutorial吧!

实际项目运用中,我们不会把数据存在H2上面的,一般Oracle,mysql。现在我们拿mysql说事。也很简单,首先在你的mysql中建立一个数据库,比如名为activiti吧,不需要建立表的,只要空数据库。

在eclipse上建立一个Java Project,导入{activiti}\setup\files\dependencies\libs.engine.runtime.txt中列出的jar包,另外加一个mysql的驱动包,由于下面activiti.cfg.xml的配置,这里需要用到commons-dbcp和commons-pool包,也要加进来,就可以啦。

然后在工程的源文件目录下新建一个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="dataSource" class="org.apache.commons.dbcp.BasicDataSource" >
	  <property name="driverClassName" value="com.mysql.jdbc.Driver" />
	  <property name="url" value="jdbc:mysql://localhost:3306/activiti" />
	  <property name="username" value="root" />
	  <property name="password" value="leonsu" />
	  <property name="defaultAutoCommit" value="false" />
	</bean>
	
	<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
		<property name="databaseSchemaUpdate" value="true"/>

		<!--
		<property name="jdbcUrl" value="jdbc:h2:tcp://localhost/activiti" />
		<property name="jdbcDriver" value="org.h2.Driver" />
		<property name="jdbcUsername" value="sa" />
		<property name="jdbcPassword" value="" />
		-->

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

		<property name="jobExecutorActivate" value="true" />
	</bean>

</beans>

现在运行activiti-engine-5.x.jar包中org.activiti.engine.impl.db.DbSchemaCreate这个类,对了有源码的,activiti-engine-5.x-sources.jar这个包就是对应的源码了,DbSchemaCreate的源码: 

/* Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.activiti.engine.impl.db;

import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl;
import org.activiti.engine.impl.util.LogUtil;


/**
 * @author Tom Baeyens
 */
public class DbSchemaCreate {

  static {
    LogUtil.readJavaUtilLoggingConfigFromClasspath();
  }

  public static void main(String[] args) {
    ProcessEngineConfiguration
      .createProcessEngineConfigurationFromResourceDefault()
      .setDatabaseSchemaUpdate(ProcessEngineConfigurationImpl.DB_SCHEMA_UPDATE_CREATE)
      .buildProcessEngine();
  }

}
从这里看,这段代码还是Tom写的呢。

运行它的main方法就可以自动建立数据库了,很简单的啦。

至于它后台怎么交互数据库,详细代码,自己去查源码深究吧,他这里使用mybatis作为ORM层框架的。

另外org.activiti.db.create下面有sql文件,你觉得这样麻烦,想自己跑这些sql语句也可以的。不过,新建上面这个Java Project很有用,下面的学习有用的。

这些sql文件跑完只有表结构,都是空表。

如果想导入数据,比如想连接mysql,不想连接H2 来运行这个activiti-explorer,可以去{activiti}\setup\build\demo\h2.data.sql看,跑一下这个sql文件就OK啦。

然后还需要修改tomcat/webapp/下面的activiti-explorer和activiti-rest的数据库连接,改到mysql上面,并且导入必要的jar包,如mysql驱动包。

重新启动tomcat就可以将数据库切换到mysql来运行demo了。

下面才是核心,那就是学习Activiti工作流引擎的API了。

关于配置文件的配置,关于ProcessEngine类,关于流程定义语法规则,关于如何发布流程到引擎上,如何启动一个流程,如何获得工作列表,等等。。。

其实很简单,核心都在ProcessEngine,由它产生各种Service来完成以上的工作。



 

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值