第二章、搭建Activiti开发环境

    xiaoxiao2021-03-25  79

    下载Activiti文件

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

    文件目录

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

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

    Javadocs

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

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

    最新回复(0)