【activiti】1.activiti介绍与demo搭建

Activiti5是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。Activiti基于Apache许可的开源BPM平台,创始人Tom Baeyens是JBoss jBPM的项目架构师,它特色是提供了eclipse插件,开发人员可以通过插件直接绘画出业务流程图。

API文档地址:
http://www.mossle.com/docs/activiti/index.html
协议
Activiti是基于Apache V2协议发布的。
下载
http://activiti.org/download.html
源码

发布包里包含大部分的已经打好jar包的源码。 如果想找到并构建完整的源码库,请参考 wiki “构建发布包”。

必要的软件

JDK 6+

Activiti需要运行在JDK 6或以上版本上。 进入 Oracle Java SE 下载页面 点击 "下载 JDK"按钮。页面上也提供了安装的方法。 为了验证是否安装成功,可以在命令行中执行 java -version。 它将会打印出安装的JDK的版本。

Eclipse Indigo 和 Juno Mars(我本地用的)

(译者注:Eclipse 3.7 版本代号 Indigo 靛青, Eclipse 4.2 版本代号 Juno 朱诺)。 在Eclipse下载页面下载你选择的eclipse发布包。 解压下载文件,你就可以通过eclipse目录下的eclipse文件启动它。 此外,在该用户指南后面,专门有一章介绍安装eclipse设计器插件。

相关资源下载

1)JDK可以到sun的官网下载http://www.oracle.com/technetwork/java/javase/downloads/index.html

2)数据库,例如:mysql可以在官网上下载。 http://www.mysql.com

3)activiti也可以到Activiti官方网站下载得到。 http://activiti.org/download.html

一分钟入门

安装流程设计器(eclipse插件)

1.安装方式一

在有网络的情况下,安装流程设计器步骤如下: 打开Help -> Install New Software. 在如下面板中:

然后填入下列字段

Name: Activiti BPMN 2.0 designer
Location: http://activiti.org/designer/update/

回到Install界面,在面板正中列表中把所有展示出来的项目都勾上:

点击复选框,在Detail部分记得选中 "Contact all updates sites.." ,因为它会检查所有当前安装所需要的插件并可以被Eclipse下载.

2.安装方式二

在没有网络的情况下,安装流程设计器步骤如下: 1)下载插件的jar包,下载地址:http://download.csdn.net/detail/u013517797/9763166 1)解压此jar包 2)把压缩包中的内容放入eclipse根目录的dropins文件夹下

重启eclipse,点击新建工程new->Other…打开面板,如果看到下图内容:

对流程设计器的使用说明

打开菜单Windows->Preferences->Activiti->Save下流程流程图片的生成方式:将create选中。流程文件保存时候会自动生成一个图片。

虽然流程引擎在单独部署bpmn文件时会自动生成图片,但在实际开发过程中,自动生成的图片会导致和BPMN中的坐标有出入,在实际项目中展示流程当前位置图会有问题。 所在完成以上配置后,会由我们自己来管理流程图片。在发布流程时把流程规则文件和流程图片一起上传就行了。

准备Activiti5开发环境

创建一个Activiti工程

我们的项目目前是Maven结构,里面有pom.xml资源配置。 业务类写在src/main/java下,相应的资源文件放置在src/main/resources下。 同理,测试的业务类在src/test/java下,相应的测试资源文件放置在src/test/resources下。

将创建的项目转化为Maven项目,pom配置情况:

<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.19.0</activiti-version>
    <!-- spring版本号 -->
	<spring.version>4.2.9.RELEASE</spring.version>
	<aspectj.version>1.6.10</aspectj.version>
	<tomcat.version>8.0.39</tomcat.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>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
    </dependency> -->
    <!-- httpclient start-->
	<dependency>
	    <groupId>org.apache.httpcomponents</groupId>
	    <artifactId>httpclient</artifactId>
	    <version>4.5.2</version>
	</dependency>
	<dependency>
	    <groupId>org.apache.httpcomponents</groupId>
	    <artifactId>httpmime</artifactId>
	    <version>4.5.2</version>
	</dependency>
	<!-- httpclient end-->
	<!-- fileupload start -->
	<dependency>
		<groupId>commons-fileupload</groupId>
		<artifactId>commons-fileupload</artifactId>
		<version>1.3</version>
	</dependency>
	<dependency>
		<groupId>commons-io</groupId>
		<artifactId>commons-io</artifactId>
		<version>2.2</version>
	</dependency>
	<!-- fileupload end -->
    <dependency>
	    <groupId>org.apache.tomcat</groupId>
	    <artifactId>tomcat-jsp-api</artifactId>
	    <version>${tomcat.version}</version>
	    <scope>provided</scope>
	</dependency>
	<dependency>
	    <groupId>org.apache.tomcat</groupId>
	    <artifactId>tomcat-catalina</artifactId>
	    <version>${tomcat.version}</version>
	    <scope>provided</scope>
	</dependency>
	<dependency>
	    <groupId>commons-configuration</groupId>
	    <artifactId>commons-configuration</artifactId>
	    <version>1.10</version>
	</dependency>
	<dependency>
		<groupId>commons-codec</groupId>
		<artifactId>commons-codec</artifactId>
		<version>1.9</version>
	</dependency>
	<dependency>
	    <groupId>org.apache.commons</groupId>
	    <artifactId>commons-lang3</artifactId>
	    <version>3.4</version>
	</dependency>
	<dependency>
		<groupId>commons-collections</groupId>
		<artifactId>commons-collections</artifactId>
		<version>3.2.1</version>
	</dependency>
	<dependency>
		<groupId>axis</groupId>
		<artifactId>axis</artifactId>
		<version>1.4</version>
	</dependency>
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>javax.servlet-api</artifactId>
		<version>3.0.1</version>
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-core</artifactId>
		<version>${spring.version}</version>
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-webmvc</artifactId>
		<version>${spring.version}</version>
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-beans</artifactId>
		<version>${spring.version}</version>
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-context</artifactId>
		<version>${spring.version}</version>
	</dependency>
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-aop</artifactId>
	    <version>${spring.version}</version>
	</dependency>
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-jdbc</artifactId>
	    <version>${spring.version}</version>
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-test</artifactId>
		<version>${spring.version}</version>
	</dependency>
	<dependency>
		<groupId>org.aspectj</groupId>
		<artifactId>aspectjrt</artifactId>
		<version>${aspectj.version}</version>
	</dependency>
	<dependency>
		<groupId>org.aspectj</groupId>
		<artifactId>aspectjweaver</artifactId>
		<version>${aspectj.version}</version>
	</dependency>
	<!-- 映入JSON -->
	<dependency>
		<groupId>org.codehaus.jackson</groupId>
		<artifactId>jackson-mapper-asl</artifactId>
		<version>1.9.13</version>
	</dependency>
	<dependency>  
           <groupId>com.fasterxml.jackson.core</groupId>  
           <artifactId>jackson-core</artifactId>  
           <version>2.1.0</version>  
       </dependency>  
       <dependency>  
           <groupId>com.fasterxml.jackson.core</groupId>  
           <artifactId>jackson-databind</artifactId>  
           <version>2.1.0</version>  
       </dependency>  
       <dependency>  
           <groupId>com.fasterxml.jackson.core</groupId>  
           <artifactId>jackson-annotations</artifactId>  
           <version>2.1.0</version>  
       </dependency>
	<dependency>
		<groupId>com.alibaba</groupId>
		<artifactId>fastjson</artifactId>
		<version>1.1.41</version>
	</dependency>
	<dependency>
	    <groupId>net.sf.json-lib</groupId>
	    <artifactId>json-lib</artifactId>
	    <version>2.4</version>
	    <classifier>jdk15</classifier>
	</dependency>
	<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
	<dependency>
	    <groupId>mysql</groupId>
	    <artifactId>mysql-connector-java</artifactId>
	    <version>5.1.6</version>
	</dependency>
	<!-- 连接池  -->
	<dependency>
	    <groupId>commons-dbcp</groupId>
	    <artifactId>commons-dbcp</artifactId>
	    <version>1.4</version>
	</dependency>
	<!--mybatis -->
	<dependency>
	    <groupId>org.mybatis</groupId>
	    <artifactId>mybatis</artifactId>
	    <version>3.2.2</version>
	</dependency>
	<dependency>
	    <groupId>org.mybatis</groupId>
	    <artifactId>mybatis-spring</artifactId>
	    <version>1.2.0</version>
	</dependency>
	<!--mybatis end-->
	<!--test -->
	<dependency>
           <groupId>com.squareup.okhttp</groupId>
           <artifactId>mockwebserver</artifactId>
           <version>1.5.4</version>
           <scope>test</scope>
     </dependency>
     <dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>4.8.2</version>
		<scope>test</scope>
	 </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>

创建一个测试类:

package junit;

import org.activiti.engine.ProcessEngine;  
import org.activiti.engine.ProcessEngineConfiguration;  
import org.junit.Test;  
  
public class TestActiviti {  
    /**使用代码创建工作流需要的23张表*/  
    @Test  
    public void createTable_1(){  
        //流程引擎ProcessEngine对象,所有操作都离不开引擎对象  
        ProcessEngineConfiguration processEngineConfiguration =  
                ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration();  
        //连接数据库的配置  
        processEngineConfiguration.setJdbcDriver("com.mysql.jdbc.Driver");  
        processEngineConfiguration.setJdbcUrl("jdbc:mysql://localhost:3306/activiticoder?useUnicode=true&characterEncoding=utf8");  
        processEngineConfiguration.setJdbcUsername("root");  
        processEngineConfiguration.setJdbcPassword("123000");  
      
        //三个配置  
        //1.先删除表,再创建表:processEngineConfiguration.DB_SCHEMA_UPDATE_CREATE_DROP="create-drop"  
        //2.不能自动创建表,需要表存在:processEngineConfiguration.DB_SCHEMA_UPDATE_FALSE="false"  
        //3.如果表存在,就自动创建表:processEngineConfiguration.DB_SCHEMA_UPDATE_TRUE="true"  
        processEngineConfiguration.setDatabaseSchema(processEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);  
        //获取工作流的核心对象,ProcessEngine对象  
        ProcessEngine processEngine=processEngineConfiguration.buildProcessEngine();  
        System.out.println("processEngine:"+processEngine+"Create Success!!");  
    }  
    
    @Test  
    public void createTable_2(){  
        //获取工作流的核心对象,ProcessEngine对象  
        ProcessEngine processEngine =   
                ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti-cfg.xml").buildProcessEngine();  
        System.out.println("processEngine:"+processEngine+"Create Success!!");  
    } 
}  
 

上面的类中,第一个test里面先是获取ProcessEngineConfiguration工作流引擎配置对象,来进行一些数据库参数的配置,然后使用配置对象创建工作流的核心对象ProcessEngine对象,使用核心引擎对象创建工作流需要的23张表。

第二个test利用配置来创建23张表,配置如下:

<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"  
    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  
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd  
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">  
  
  
    <!-- 流程引擎的配置对象 -->  
	<bean id="processEngineConfiguration"  
        class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">  
        <property name="jdbcDriver"   value="com.mysql.jdbc.Driver" />  
        <property name="jdbcUrl"      value="jdbc:mysql://localhost:3306/activiticoder?useUnicode=true&amp;characterEncoding=utf8" />  
        <property name="jdbcUsername" value="root" />  
        <property name="jdbcPassword" value="xxxx" />  
        <property name="databaseSchemaUpdate" value="true" />  
    </bean> 
  
  
</beans>  

两种方式都可以创建表,运行其中一个,到数据库中查看可以看到表已经生成成功。


代码下载地址:http://download.csdn.net/download/jack_eusong/10255983

猜你喜欢

转载自blog.csdn.net/jack_eusong/article/details/79353223
今日推荐