热门标签 | 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:




 



推荐阅读
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 本文介绍了在sqoop1.4.*版本中,如何实现自定义分隔符的方法及步骤。通过修改sqoop生成的java文件,并重新编译,可以满足实际开发中对分隔符的需求。具体步骤包括修改java文件中的一行代码,重新编译所需的hadoop包等。详细步骤和编译方法在本文中都有详细说明。 ... [详细]
  • SpringMVC工作流程概述
    SpringMVC工作流程概述 ... [详细]
  • Tomcat安装与配置教程及常见问题解决方法
    本文介绍了Tomcat的安装与配置教程,包括jdk版本的选择、域名解析、war文件的部署和访问、常见问题的解决方法等。其中涉及到的问题包括403问题、数据库连接问题、1130错误、2003错误、Java Runtime版本不兼容问题以及502错误等。最后还提到了项目的前后端连接代码的配置。通过本文的指导,读者可以顺利完成Tomcat的安装与配置,并解决常见的问题。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 在一对一直播源码使用过程中,有时会出现软键盘切换闪屏问题,就是当切换表情的时候屏幕会跳动,因此要对一对一直播源码表情面板无缝切换进行优化。 ... [详细]
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社区 版权所有