第二章、搭建Activiti开发环境

来源:互联网 发布:什么是js面向对象 编辑:程序博客网 时间:2024/05/23 19:59

下载Activiti文件

进入https://www.activiti.org/,下载Activiti的压缩包。我使用的版本是activiti-5.22.0。

文件目录

Activiti5.10之前的版本和之后的版本有很大的区别,这里只给出5.10之后的目录结构

  • database:该目录包含了对Activiti引擎表的创建、删除、升级三种类型的脚本。对于不同的数据库都提供了不同的类型的脚本
  • docs:该目录包含三种文档:javadocs、userguide、xsd
  • libs:相比5.10之前的版本移除了第三方的依赖,仅仅包含Activiti引擎的各个模块的class文件以及源码。
  • wars:存在activiti-explorer.war和activiti-rest.war两个war包模块,能够部署到tomcat等Web服务器中

Javadocs

Javadocs中包名按照功能模块划分,一共存在11个package

  1. org.activiti.engine:里面包含了七大类Service接口、异常类定义和流程引擎以及流程引擎配置,另外还定义了一些运行时异常类
  2. org.activiti.engine.delegate:该包定义了处理流程的行为、监听事件的规范
  3. org.activiti.engine.form:该包应用在内置表单的场景下,在一些企业或客户要求自定义表单你的需求中使用。一种是直接在流程定义中设置每个节点的表单内容,可以设置每个字段的类型,是否可以编辑等属性。另一种就是通过外置表单的形式,通过formkey指定外置表单文件的名称,类型可以是.xml或者是.form。表单的读取,提交都可以通过FormService接口完成。
  4. org.activiti.engine.history:包含了历史记录查询对象及查询结果的历史数据对象接口
  5. org.activiti.engine.identity:用来管理身份和认证,功能依托IdentityService接口
  6. org.activiti.engine.management:该包主要用来实现针对流程引擎的管理功能,通过调用接口ManagementService可以监控引擎状态,任务调度,数据库数据读取
  7. org.activiti.engine.query:该包没有具体的功能,定义了查询的共有特性
  8. org.activiti.engine.repository:包含了针对流程资源的管理与查询。依托的RepositoryService接口可以部署流程定义、自定义表单、规则等文件,还可以读取流程图片、流程定义文件
  9. org.activiti.engine.runtime
  10. org.activiti.engine.task
  11. org.activiti.engine.test

安装activiti-explorer

在下载好的activiti压缩包中,存在wars这样的文件夹,该文件夹中存在activiti-explorer.war和activiti-rest.war两个文件,需要将activiti-war文件放入到tomcat文件安装路径中webapps这个目录下,启动tomcat,然后再浏览器中输入http://localhost:8080/activiti-explorer/就可以进入登录页面

这里写图片描述

activiti的hello world

由于activiti的工程目录就是一个maven的工程目录,所以我就直接新建了一个maven-webapp的项目,项目结构如下
这里写图片描述
在eclipse中做activiti的工程,我们需要在eclipse中安装activiti的插件,如有安装出错请参考http://blog.csdn.net/yixiaoping/article/details/44515513安装完的eclipse是可以新建activiti的工程和diagram。
在src/main/resources下新建diagrams/SimpleLeaveProcess.bpmn diagrams是一个文件夹,同时需要在src/main/resources下新建activit.cfg.xml这个是spring bean文件。

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/db_activiti" />        <property name="username" value="root" />        <property name="password" value="root" />        <property name="defaultAutoCommit" value="false" />    </bean>    <bean id="processEngineConfiguration"        class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">        <property name="dataSource" ref="dataSource" />        <property name="databaseSchemaUpdate" value="true" />    </bean></beans>

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/maven-v4_0_0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>org.activiti.examples</groupId>  <artifactId>activiti-examples</artifactId>  <version>1.0-SNAPSHOT</version>  <packaging>jar</packaging>  <name>BPMN 2.0 with Activiti - Examples</name>  <properties>    <activiti-version>5.18.0</activiti-version>  </properties>  <dependencies>    <dependency>      <groupId>org.activiti</groupId>      <artifactId>activiti-engine</artifactId>      <version>${activiti-version}</version>    </dependency>    <dependency>      <groupId>org.activiti</groupId>      <artifactId>activiti-spring</artifactId>      <version>${activiti-version}</version>    </dependency>    <dependency>      <groupId>org.codehaus.groovy</groupId>      <artifactId>groovy-all</artifactId>      <version>2.4.3</version>    </dependency>    <dependency>      <groupId>com.h2database</groupId>      <artifactId>h2</artifactId>      <version>1.3.168</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>mysql</groupId>        <artifactId>mysql-connector-java</artifactId>        <version></version>    </dependency>    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>4.11</version>    </dependency>  </dependencies>     <build>    <plugins>      <plugin>        <groupId>org.apache.maven.plugins</groupId>        <artifactId>maven-compiler-plugin</artifactId>           <version>2.3.2</version>        <configuration>             <source>1.6</source>             <target>1.6</target>           </configuration>         </plugin>         <plugin>        <groupId>org.apache.maven.plugins</groupId>        <artifactId>maven-eclipse-plugin</artifactId>        <inherited>true</inherited>        <configuration>             <classpathContainers>               <classpathContainer>org.eclipse.jdt.USER_LIBRARY/Activiti Designer Extensions</classpathContainer>             </classpathContainers>           </configuration>         </plugin>    </plugins>     </build></project>

SimpleLeaveProcess.bpmn截图

其实这个文件也就是一个xml文件
这里写图片描述
右击activiti,生成测试单元代码

package org.activiti.designer.test;import static org.junit.Assert.*;import java.util.HashMap;import java.util.Map;import java.io.FileInputStream;import org.activiti.engine.RepositoryService;import org.activiti.engine.RuntimeService;import org.activiti.engine.runtime.ProcessInstance;import org.activiti.engine.test.ActivitiRule;import org.junit.Rule;import org.junit.Test;public class ProcessTestMyProcess {    private String filename = "F:\\workspace\\activiti_demo\\src\\main\\resources\\diagrams\\SimpleLeaveProcess.bpmn";    @Rule    public ActivitiRule activitiRule = new ActivitiRule();    @Test    public void startProcess() throws Exception {        RepositoryService repositoryService = activitiRule.getRepositoryService();        repositoryService.createDeployment().addInputStream("myProcess.bpmn20.xml",                new FileInputStream(filename)).deploy();        RuntimeService runtimeService = activitiRule.getRuntimeService();        Map<String, Object> variableMap = new HashMap<String, Object>();        variableMap.put("name", "Activiti");        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess", variableMap);        assertNotNull(processInstance.getId());        System.out.println("id " + processInstance.getId() + " "                + processInstance.getProcessDefinitionId());    }}

运行结果显示

这里写图片描述

说明

运行完的程序会在MySQL数据库,对应的db_activiti的数据库中的表中写入24张表,每一张表都是有不同的作用,对应着程序运行时,历史记录,等有关信息。本代码是采用的xml文件的配置方式,也是可以在代码中直接写上数据库的配置信息。类似于官方用户指南中写的

ProcessEngine processEngine = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration()  .setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE)  .setJdbcUrl("jdbc:h2:mem:my-own-db;DB_CLOSE_DELAY=1000")  .setAsyncExecutorEnabled(true)  .setAsyncExecutorActivate(false)  .buildProcessEngine();
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 两个人不合适且结了婚怎么办 国税局寄来的邮件没收到怎么办 新疆办理暂住证有案底不办给怎么办 我的驾驶证吊销了车年审怎么办 好几个超速分不够扣了怎么办 刚拿c1驾照扣6分怎么办 别人开我车扣12分怎么办 办健康证大便拉不出来怎么办 欠信用卡钱被网上通缉抓到后怎么办 上海房子卖了户口没地方迁怎么办 没有户口本在北京身份证丢了怎么办 武汉科目四考试居住证过期了怎么办 农行卡密码输错3次怎么办 驾照罚款缴纳了网上没消怎么办 外地驾驶证分数扣12分了怎么办 有生产日期的赠品在超市过期怎么办 6年免检车辆逾期未年检怎么办 行驶证检验有效期过期2年怎么办 骑摩托车忘带驾驶证和行驶证怎么办 驾驶证逾期未审验怎么办有什么后果 车祸至人腿部骨折沒钱偿还的怎么办 我有c4驾驶证想办c3怎么办 驾驶证和行驶证被交警扣了怎么办 行驶证被交警弄丢了怎么办 没带行驶证让警察发现怎么办 首尔转机换票换乘怎么办过境签证 驾驶证约考帐号与登密码丢失怎么办 考驾照的时候预约密码忘了怎么办 考驾照的预约密码忘了怎么办 摩托车不能挂档不能摘挡了怎么办 身份证丢失了派出所不给挂失怎么办 快递员在中午还送货夏天怎么办啊 驾照一个记分周期扣满12分怎么办 佛山南海车管所怎么办替人消分流程 福州快处中心几流程要怎么办 被对方追尾了对方只有交强险怎么办 摩托车行驶证年检过期一年半怎么办 户口迁到杭州了身份证掉了怎么办 户口已迁至外面要补办结婚证怎么办 汽车年检时间过了1个月怎么办 户口在老家在北京工作怎么办招工