热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Activitimoduler+SpringJunit环境构建(一)

Activitimodulerspringjunit环境构建(一)软件环境:开发工具idea,jdk1.7,t

Activiti moduler + spring + junit  环境构建(一)

软件环境:开发工具idea,jdk 1.7,tomcat 8.5。

 

具体web搭建及附件可查看:

Activiti moduler + spring web环境构建(二)

 

项目目录结构如下:


 

 

maven配置文件:

 

4.0.0org.activiti.examplesactiviti-examples1.0-SNAPSHOTjarBPMN 2.0 with Activiti - Examples5.21.04.3.3.RELEASEorg.activitiactiviti-engine${activiti-version}org.activitiactiviti-modelerxalanxalan${activiti-version}org.activitiactiviti-diagram-rest${activiti-version}org.activitiactiviti-explorervaadincom.vaadindcharts-widgetorg.vaadin.addonsactiviti-simple-workfloworg.activiti${activiti-version}org.activitiactiviti-spring${activiti-version}org.springframeworkspring-context${spring-version}org.springframeworkspring-jdbc${spring-version}org.springframeworkspring-tx${spring-version}org.springframeworkspring-core${spring-version}org.springframeworkspring-beans${spring-version}org.springframeworkspring-test${spring-version}javax.servletjavax.servlet-api3.1.0providedjavax.servletjstl1.2mysqlmysql-connector-java5.1.39org.slf4jslf4j-api1.7.6org.slf4jslf4j-jdk141.7.6junitjunit4.12org.apache.maven.pluginsmaven-compiler-plugin2.3.21.61.6org.apache.maven.pluginsmaven-eclipse-plugintrueorg.eclipse.jdt.USER_LIBRARY/Activiti DesignerExtensions

  

spring配置文件:

 



 

测试的Java文件:

package com.bpm;import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.task.Task;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;import javax.annotation.Resource;
import java.awt.*;
import java.io.*;
import java.util.List;@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:spring-activiti.xml"})
@Rollback
@Transactional
public class BpmDefinitionTest {@ResourceTaskService taskService;@Resourceprivate RepositoryService repositoryService;@Resourceprivate RuntimeService runtimeService;private static Color HIGHLIGHT_COLOR = Color.RED;private static Stroke THICK_TASK_BORDER_STROKE = new BasicStroke(3.0f);@Testpublic void testDeploy() throws IOException {String sourceFile = "holidayRequest1.bpmn";/** 发布流程方法一:流的方式InputStream is = new FileInputStream(new File(this.getClass().getResource("/holidayRequest2.bpmn").getPath()));Assert.assertNotNull(is);Deployment deployment = repositoryService.createDeployment().addInputStream("bpmn20.xml", is).name("holidayRequest").deploy();方法二:当文件在资源目录下时,可使用以下方式直接加载:*/Deployment deployment = repositoryService.createDeployment().name("helloRequest").category("testDemo").addClasspathResource(sourceFile).deploy();Assert.assertNotNull(deployment);System.out.println("deploymentId:" + deployment.getId());/**查询流程定义,以下查询方法会自动查询出当前流程的最高版本* 流程定义主要是用于部署流程的版本控制,在保存部署信息时,会自动先创建一个流程定义。系统会根据*.bpmn中process元素属性来设置数据字段值。* * * ...* * * 其中definitions->targetNamespace会作为字段category值,process->id 会作为字段key值,用来标识流程的唯一从而进行版本的自动升级,process->name 会作为字段name值...* 所以取process id 时要格外注意不要重复了* */ProcessDefinitionEntity processDefinition = (ProcessDefinitionEntity) repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).singleResult();// 获取流程图并生成文件String diagramResourceName = processDefinition.getDiagramResourceName();InputStream stream = repositoryService.getResourceAsStream(processDefinition.getDeploymentId(), diagramResourceName);// 通过这种方式获取,一定要添加 / ,否则会找不到文件String path = this.getClass().getResource("/" + sourceFile).getPath();File file = new File(path);OutputStream out = new FileOutputStream(file.getParent() + "/holidayRequest.expense.png");int len;byte[] data = new byte[1024]; //可以根据实际情况调整,建议使用1024,即每次读1KBwhile ((len = stream.read(data)) != -1) {out.write(data, 0, len); //建议不要直接用os.write(bt)}out.flush();stream.close();out.close();/**启动流程实例* 还可以使用:runtimeService.startProcessInstanceByKey("myProcess");这里的key是定义在bpmn文件中的process元素的id属性* */runtimeService.startProcessInstanceById(processDefinition.getId());//查询任务实例List taskList = taskService.createTaskQuery().processDefinitionId(processDefinition.getId()).list();Assert.assertNotNull(taskList == null);Assert.assertTrue(taskList.size() > 0);for (Task task : taskList) {System.out.println("task name is " + task.getName() + " ,task key is " + task.getTaskDefinitionKey());}}}

 

流程文件bpmn:




 



推荐阅读
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 本文讨论了在shiro java配置中加入Shiro listener后启动失败的问题。作者引入了一系列jar包,并在web.xml中配置了相关内容,但启动后却无法正常运行。文章提供了具体引入的jar包和web.xml的配置内容,并指出可能的错误原因。该问题可能与jar包版本不兼容、web.xml配置错误等有关。 ... [详细]
  • Java如何导入和导出Excel文件的方法和步骤详解
    本文详细介绍了在SpringBoot中使用Java导入和导出Excel文件的方法和步骤,包括添加操作Excel的依赖、自定义注解等。文章还提供了示例代码,并将代码上传至GitHub供访问。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • 本文介绍了在sqoop1.4.*版本中,如何实现自定义分隔符的方法及步骤。通过修改sqoop生成的java文件,并重新编译,可以满足实际开发中对分隔符的需求。具体步骤包括修改java文件中的一行代码,重新编译所需的hadoop包等。详细步骤和编译方法在本文中都有详细说明。 ... [详细]
  • SpringMVC工作流程概述
    SpringMVC工作流程概述 ... [详细]
  • Jboss的EJB部署描述符standardjaws.xml配置步骤详解
    本文详细介绍了Jboss的EJB部署描述符standardjaws.xml的配置步骤,包括映射CMP实体EJB、数据源连接池的获取以及数据库配置等内容。 ... [详细]
author-avatar
yuhemecy_883
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有