SpringBoot + Activity6.0 -简化的项目

近日做了工单,然后将以前那套东西拿出来自己又做了改动

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>com.activity</groupId>
  <artifactId>activity</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>activity Maven Webapp</name>
  <url>http://maven.apache.org</url>
  
  	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.8.RELEASE</version>
	</parent>
	
	
  <dependencies>
  		
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
		
 	<!-- activiti -->
	<dependency>
		<groupId>org.activiti</groupId>
		<artifactId>activiti-spring-boot-starter-basic</artifactId>
		<version>6.0.0</version>
	</dependency>

	<dependency>
		<groupId>com.google.guava</groupId>
		<artifactId>guava</artifactId>
		<version>20.0</version>
	</dependency>
        
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.38</version>
    </dependency>
    
	<dependency>
		<groupId>com.alibaba</groupId>
		<artifactId>fastjson</artifactId>
		<version>1.2.7</version>
	</dependency>
	
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>activity</finalName>
  </build>
 
</project>

Main Method

application

package activity;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;

@SpringBootApplication
@ServletComponentScan
public class ExternalFundlication {
	public static void main(String[] args) {
		SpringApplication.run(ExternalFundlication.class, args);
	}
}

deployService

package activity.service;

import java.io.InputStream;
import java.util.List;
import java.util.Map;

import org.activiti.engine.HistoryService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.history.HistoricDetail;
import org.activiti.engine.history.HistoricIdentityLink;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.history.ProcessInstanceHistoryLogQuery;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.activiti.engine.task.TaskQuery;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import activity.config.ApplicationContextService;
import activity.entity.Param;

@Component
public class DeplyProcessinst implements InitializingBean{
	
	@Autowired
	private RepositoryService repositoryService;
	@Autowired
	private RuntimeService runtimeService;
	@Autowired
	private TaskService taskService;
	@Autowired
	private HistoryService historyService;
	@Autowired
	private LocalServiceImp localService;
	

	/**
	 * ljp 启动流程图
	 * 
	 * @param BusinessKey
	 *          唯一标识符
	 * @param ProcessKey
	 *            流程图id
	 */
	public ProcessInstance createProcess(String ProcessKey, String BusinessKey) {
		return runtimeService.startProcessInstanceByKey(ProcessKey, BusinessKey);
	}
	

	/**
	 * 通过processInstanceId找到流程任务 
	 * @param creator
	 * @return
	 */
	public List<Task> queryByProcessInstanceId(String processInstanceId) {
		
		List<Task> list = taskService.createTaskQuery().processInstanceId(processInstanceId).list();
		return list;
	}

	/**
	 * 通过taskId找到流程实例 并行需要用到
	 * @param creator
	 * @return
	 */
	public List<Task> queryByTaskId(String taskId) {
		List<Task> list = taskService.createTaskQuery().taskId(taskId).list();
		return list;
	}

	/**
	 * 通过deploymentId找到流程实例 并行需要用到
	 * @param creator
	 * @return
	 */
	public List<Task> queryBydeploymentId(String deploymentId) {
		taskService.createTaskQuery().deploymentId(deploymentId).list();
		List<Task> list = taskService.createTaskQuery().deploymentId(deploymentId).list();
		return list;
	}
	 
	/**
	 * 通过processInstanceId找到流程实例 并行需要用到
	 * @param creator
	 * @return
	 */
	public List<HistoricTaskInstance> gethistory(String processInstanceId) {
		return historyService.createHistoricTaskInstanceQuery().processInstanceId(processInstanceId).list();
	}	
	
	public InputStream getProcessDiagram(String processInstanceId) {
		return repositoryService.getProcessDiagram(processInstanceId);
	}	
	
	public InputStream getResourceAsStream(String deployId,String name) {
		return repositoryService.getResourceAsStream(deployId,name);
	}	
	
	/**
	 * 通过 taskId 进行工作流流转
	 * 
	 * @param
	 * @param map
	 */
	public void Working(String taskId) {
		Working(taskId, null);

	}

	
	public void Working(String taskId, Map<String, Object> map) {
		taskService.complete(taskId.toString(), map);
	}
	
	  
	public LocalServiceImp getLocalService() {
		if (this.localService == null) {
			this.localService = (LocalServiceImp) ApplicationContextService.getBean("localService");
		}
		return localService;
	}

	public void setLocalService(LocalServiceImp localService) {
		this.localService = localService;
	}


	public void afterPropertiesSet() throws Exception {
		String process = "select * from sy_parameter where flag = 'true'";
		List<Map<String, Object>> queryForList = getLocalService().queryForList(process);
		for (Map<String, Object> map : queryForList) {
			String jsonString = JSONObject.toJSONString(map);
			Param parseObject = JSONObject.parseObject(jsonString, Param.class);
			repositoryService.createDeployment().name(parseObject.getProcessDefinitionKey())// 添加部署的名称
			.addClasspathResource("diagrams/" + parseObject.getResource() + ".bpmn")
			.addClasspathResource("diagrams/" + parseObject.getResource() + ".png").deploy();
			String update = "update sy_parameter set flag = 'false'";
			getLocalService().updatesql(update);
		}
	}
}

ApplicationContextService

package activity.config;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

@Component
public class ApplicationContextService implements ApplicationContextAware{
	
	public static ApplicationContext applicationContext;

	public void setApplicationContext(ApplicationContext apCtx)
			throws BeansException {
		applicationContext = apCtx;
	}
    public static <T> T getBean(String name) throws BeansException {
        return (T) applicationContext.getBean(name);
    }
	
    public static <T> T getBean(Class<T> clz) throws BeansException {
        T result = (T) applicationContext.getBean(clz);
        return result;
    }

}

application.properties

server.port=17821
server.context-path=/bps

spring.datasource.url=jdbc:mysql://localhost:3306/activity
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

#drop-create  false  true  create-drop
spring.activiti.database-schema-update=false
#我的流程图不再prosess下,所以启动的时候避免check
spring.activiti.check-process-definitions=false
pring.activiti.history-level=full

项目结构
在这里插入图片描述

测试用的TestController

package activity.controller;

import java.io.InputStream;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import org.activiti.engine.history.HistoricDetail;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import activity.service.DeplyProcessinst;

@Controller
public class TestController {

	@Autowired
	private DeplyProcessinst deplyProcessinst;
	
	@RequestMapping("/createProcessinst/{channel}")
	@ResponseBody
	public Object createProcessinst(@RequestParam("businessKey") String businessKey,@PathVariable String channel) {
		 Map map = new HashMap();
		 ProcessInstance createProcess = deplyProcessinst.createProcess(channel, businessKey);
		 String processinitionId = createProcess.getId();
		 map.put("processinitionId",processinitionId);
		 return map;
	}
	
	@RequestMapping("/queryByProcessInstanceId")
	@ResponseBody
	public Object queryByProcessInstanceId(@RequestParam("processinitionId") String processinitionId) {
		List<Map> lists = new LinkedList<Map>();
		List<Task> list = deplyProcessinst.queryByProcessInstanceId( processinitionId);
		for (Task task : list) {
			Map map = new LinkedHashMap();
			map.put("任务ID:",task.getId());
			map.put("任务名称:",task.getName());
			map.put("任务的创建时间:",task.getCreateTime());
			map.put("任务的办理人:",task.getAssignee());
			map.put("流程实例ID:",task.getProcessInstanceId());
			map.put("执行对象ID:",task.getExecutionId());
			map.put("流程定义ID:",task.getProcessDefinitionId());
			lists.add(map);
		}
		return lists;
	}

	@RequestMapping("/gethistory")
	@ResponseBody
	public Object gethistory(@RequestParam("processinitionId") String processinitionId) {
		List<Map> lists = new LinkedList<Map>();
		 List<HistoricTaskInstance> list = deplyProcessinst.gethistory( processinitionId);
		for (HistoricTaskInstance task : list) {
			Map map = new LinkedHashMap();
			map.put("任务ID:",task.getId());
			map.put("任务名称:",task.getName());
			map.put("任务的办理人:",task.getAssignee());
			map.put("任务决策id:",task.getExecutionId());
			map.put("流程实例ID:",task.getProcessInstanceId());
			lists.add(map);
		}
		return lists;
	}
	
	@RequestMapping("/getProcessDiagram")
	public Object getProcessDiagram(@RequestParam("processDefinitionId") String processDefinitionId,Map map) {
		InputStream processDiagram = deplyProcessinst.getProcessDiagram( processDefinitionId);
		map.put("del",processDiagram);
		return "test";
	}
	
	@RequestMapping("/getResourceAsStream")
	@ResponseBody
	public Object getResourceAsStream(@RequestParam("deployId") String deployId,@RequestParam("name") String name) {
		List<Map> lists = new LinkedList<Map>();
		 return  deplyProcessinst.getResourceAsStream( deployId,name);
	}
	
	
	@RequestMapping("/hello")
	@ResponseBody
	public Object hello() {
		return "hellow";
	}
	
}

至此项目结束。

附MVC版的东西
在这里插入图片描述
activiti.cfg.xml

<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">
	<!-- 

		/**
		 	public static final String DB_SCHEMA_UPDATE_FALSE = "false";不能自动创建表,需要表存在
  			public static final String DB_SCHEMA_UPDATE_CREATE_DROP = "create-drop";先删除表再创建表
  			public static final String DB_SCHEMA_UPDATE_TRUE = "true";如果表不存在,自动创建表
		 */

	 -->
	 
	<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
		<!-- 连接数据的配置 -->
		<property name="jdbcDriver" value="com.mysql.jdbc.Driver"></property>
		<!-- <property name="jdbcUrl" value="jdbc:oracle:thin:@20.4.2.3:1521:casdb"></property> -->
		<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activity?useUnicode=true&amp;characterEncoding=utf8"></property>
		<property name="jdbcUsername" value="root"></property>
		<property name="jdbcPassword" value="root"></property>
		<!-- 没有表创建表 -->
		<property name="databaseSchemaUpdate" value="false"></property>
	</bean>

</beans>

TestJunit

package com.bps.test;

import java.io.InputStream;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.history.HistoricDetail;
import org.activiti.engine.history.HistoricIdentityLink;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.history.HistoricTaskInstanceQuery;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.activiti.engine.task.TaskQuery;
import org.junit.Test;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

public class CreateProcess {

	ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
	
	@Test
	public void init (){
		ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
	}
	
	
	@Test
	public void deploymentProcessDefinition (){
		Deployment deploy = processEngine.getRepositoryService()
						.createDeployment()
						.name("test1")//添加部署的名称
						.addClasspathResource("diagrams/TranceV3.bpmn")
						.addClasspathResource("diagrams/TranceV3.png")
						.deploy();
		System.out.println("部署ID:"+deploy.getId());//1
		System.out.println("部署名称:"+deploy.getName());//helloworld入门程序  
	}
	
	@Test
	public void startProcessinst(){
		ProcessInstance ProcessInstance = processEngine.getRuntimeService().startProcessInstanceByKey("ProcessV2_1","2");
		System.out.println("流程实例ID:"+ProcessInstance.getId());//流程实例ID    301
		System.out.println("流程定义ID:"+ProcessInstance.getProcessDefinitionId());//流程定义ID   helloworld:1:4
		
	}
	
	@Test
	public void queryByProcessInstanceId(){
		List<Task> list = processEngine.getTaskService().createTaskQuery().processVariableValueEquals("renhang", "xiaoming").list();
		//List<Task> list = processEngine.getTaskService().createTaskQuery().processInstanceId("42501").list();
	//	List<Task> list = processEngine.getTaskService().createTaskQuery().deploymentId("42501").list();
		for (Task task : list) {
			System.out.println("任务ID:"+task.getId());
			System.out.println("任务名称:"+task.getName());
			System.out.println("任务的创建时间:"+task.getCreateTime());
			System.out.println("任务的办理人:"+task.getAssignee());
			System.out.println("流程实例ID:"+task.getProcessInstanceId());
			System.out.println("执行对象ID:"+task.getExecutionId());
			System.out.println("流程定义ID:"+task.getProcessDefinitionId());
			System.out.println("########################################################");
		}
	}

	//获取所有的task
	@Test
	public void findMyPersonalTask() {
		List<Task> list = processEngine.getTaskService().createTaskQuery().list();
		for (Task task : list) {
			System.out.println("任务ID:"+task.getId());
			System.out.println("任务名称:"+task.getName());
			System.out.println("任务的创建时间:"+task.getCreateTime());
			System.out.println("任务的办理人:"+task.getAssignee());
			System.out.println("流程实例ID:"+task.getProcessInstanceId());
			System.out.println("执行对象ID:"+task.getExecutionId());
			System.out.println("流程定义ID:"+task.getProcessDefinitionId());
			System.out.println("########################################################");
		}
	}
	
	//通过关键字获取对应 的task
	@Test
	public void queryByBusinessKey() {
		List<Task> list = processEngine.getTaskService().createTaskQuery().processInstanceBusinessKey("2").list();
		for (Task task : list) {
			System.out.println("任务ID:"+task.getId());
			System.out.println("任务名称:"+task.getName());
			System.out.println("任务的创建时间:"+task.getCreateTime());
			System.out.println("任务的办理人:"+task.getAssignee());
			System.out.println("流程实例ID:"+task.getProcessInstanceId());
			System.out.println("执行对象ID:"+task.getExecutionId());
			System.out.println("流程定义ID:"+task.getProcessDefinitionId());
			System.out.println("########################################################");
		}
	}
	
	
	@Test
	public void getByDeployId() {
		InputStream processDissagram = processEngine.getRepositoryService().getProcessDiagram("ProcessV2_1:4:40004");
		System.out.println(processDissagram);
		
		InputStream processDiagram = processEngine.getRepositoryService().getResourceAsStream("40001", "diagrams/TranceV3.png");
		System.out.println(processDiagram);
		
	}
	
	
	
	@Test
	public void getBytaskId() {
		List<Task> list = processEngine.getTaskService().createTaskQuery().taskId("5005").list();
		
		  for (Task task : list) { 
			  
			  task.setOwner("zhangsan"); }
		 
		for (Task task : list) {
			System.out.println("任务ID:"+task.getId());
			System.out.println("任务名称:"+task.getName());
			System.out.println("任务的创建时间:"+task.getCreateTime());
			System.out.println("任务的办理人:"+task.getAssignee());
			System.out.println("流程实例ID:"+task.getProcessInstanceId());
			System.out.println("执行对象ID:"+task.getExecutionId());
			System.out.println("流程定义ID:"+task.getProcessDefinitionId());
			System.out.println("########################################################");
		}
	}
	
	
	
	
	
	//设置环节参数 并 流转
	@Test
	public void completeMyPersonalTask(){
		Map<String,Object> m =new HashMap<String,Object>();
	//	m.put("shishi", "0");
		m.put("renhang", "xiaoming");
		m.put("spzt", "1");
		processEngine.getTaskService().complete("17505",m);
	}
	
	@Test
	public void completeMyPersonal(){
		Map<String,Object> m =new HashMap<String,Object>();
		m.put("spzt", 3);
	//	m.put("shishi", 1);
		processEngine.getTaskService().complete("32505",m);  //5005  2505
	}
	@Test
	public void complete(){
		Map<String,Object> m =new HashMap<String,Object>();
		m.put("spzt", 3);
		processEngine.getTaskService().complete("5208",m);
		processEngine.getTaskService().complete("5210",m);
		processEngine.getTaskService().complete("5212",m);
	}
	
	//删除 task 3810   3808
	@Test
	public void deleteTask(){
		processEngine.getTaskService().deleteTask("12503", true);//7505   5005

	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值