第二章、搭建Activiti开发环境

下载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开发环境_第1张图片

activiti的hello world

由于activiti的工程目录就是一个maven的工程目录,所以我就直接新建了一个maven-webapp的项目,项目结构如下
第二章、搭建Activiti开发环境_第2张图片
在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文件内容


<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.0modelVersion>
  <groupId>org.activiti.examplesgroupId>
  <artifactId>activiti-examplesartifactId>
  <version>1.0-SNAPSHOTversion>
  <packaging>jarpackaging>
  <name>BPMN 2.0 with Activiti - Examplesname>
  <properties>
    <activiti-version>5.18.0activiti-version>
  properties>
  <dependencies>
    <dependency>
      <groupId>org.activitigroupId>
      <artifactId>activiti-engineartifactId>
      <version>${activiti-version}version>
    dependency>
    <dependency>
      <groupId>org.activitigroupId>
      <artifactId>activiti-springartifactId>
      <version>${activiti-version}version>
    dependency>
    <dependency>
      <groupId>org.codehaus.groovygroupId>
      <artifactId>groovy-allartifactId>
      <version>2.4.3version>
    dependency>
    <dependency>
      <groupId>com.h2databasegroupId>
      <artifactId>h2artifactId>
      <version>1.3.168version>
    dependency>
    <dependency>
      <groupId>org.slf4jgroupId>
      <artifactId>slf4j-apiartifactId>
      <version>1.7.6version>
    dependency>
    <dependency>
      <groupId>org.slf4jgroupId>
      <artifactId>slf4j-jdk14artifactId>
      <version>1.7.6version>
    dependency>
    <dependency>
        <groupId>mysqlgroupId>
        <artifactId>mysql-connector-javaartifactId>
        <version>version>
    dependency>
    <dependency>
      <groupId>junitgroupId>
      <artifactId>junitartifactId>
      <version>4.11version>
    dependency>
  dependencies>
     <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.pluginsgroupId>
        <artifactId>maven-compiler-pluginartifactId>
           <version>2.3.2version>
        <configuration>
             <source>1.6source>
             <target>1.6target>
           configuration>
         plugin>
         <plugin>
        <groupId>org.apache.maven.pluginsgroupId>
        <artifactId>maven-eclipse-pluginartifactId>
        <inherited>trueinherited>
        <configuration>
             <classpathContainers>
               <classpathContainer>org.eclipse.jdt.USER_LIBRARY/Activiti Designer ExtensionsclasspathContainer>
             classpathContainers>
           configuration>
         plugin>
    plugins>
     build>
project>

SimpleLeaveProcess.bpmn截图

其实这个文件也就是一个xml文件
第二章、搭建Activiti开发环境_第3张图片
右击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 variableMap = new HashMap();
        variableMap.put("name", "Activiti");
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess", variableMap);
        assertNotNull(processInstance.getId());
        System.out.println("id " + processInstance.getId() + " "
                + processInstance.getProcessDefinitionId());
    }
}

运行结果显示

第二章、搭建Activiti开发环境_第4张图片

说明

运行完的程序会在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();

你可能感兴趣的:(Activiti事务流)