activiti学习
来源:互联网 发布:网络黑界知名林子颜 编辑:程序博客网 时间:2024/05/14 01:54
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>
<?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();
- }
- }
/* 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来完成以上的工作。
- Activiti学习
- 学习Activiti
- activiti学习
- activiti学习
- activiti学习
- activiti学习资料(Activiti Initiative)
- activiti学习资料(Activiti Modeler)
- activiti学习--01什么是activiti
- Activiti学习资料(Activiti Explorer中文汉化)
- activiti学习资料(Signavio打包Activiti Modeler)
- Activiti学习笔记一初识activiti面目
- Activiti学习笔记
- activiti学习资料
- activiti学习资料
- Activiti Modeler学习资料
- Activiti学习资料(单元测试)
- activiti学习资料(job)
- activiti学习资料
- 《JAVA与模式》之责任链模式
- Mongodb Mapreduce 初窥
- Wamp修改端口
- 如何映射网络驱动器
- 嗯,关于JS函数内部变量的赋值和调用以及this的用法
- activiti学习
- Liux下Mysql命令操作
- VC2010配置附加路径(工程相对路径)
- 文件中图片和文档存储到手机和SDCard中
- 使用XML的五种场合
- PHP扩展安装
- CSS颜色代码大全
- the advantages of using SRL16 to make large delay
- Erlang入门(一)