进入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中包名按照功能模块划分,一共存在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压缩包中,存在wars这样的文件夹,该文件夹中存在activiti-explorer.war和activiti-rest.war两个文件,需要将activiti-war文件放入到tomcat文件安装路径中webapps这个目录下,启动tomcat,然后再浏览器中输入http://localhost:8080/activiti-explorer/就可以进入登录页面
由于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文件。
其实这个文件也就是一个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();