工作流的全流程

1.部署流程的定义

2.启动流程的实例

3.查看我的任务列表

4.办理任务

5.查看流程(正在执行,还是已经结束)

6.查询历史任务

7.查询历史的流程实例

package com.liming;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.zip.ZipInputStream;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.DeploymentBuilder;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.repository.ProcessDefinitionQuery;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.apache.commons.io.FileUtils;
import org.junit.Before;
import org.junit.Test;

public class CreateActivti {

	private  ProcessEngine pe;
	
	
	//创建流程引擎
	@Before
	public void createActivi() {
			pe = ProcessEngines.getDefaultProcessEngine();

	}
	
	//部署流程
	@Test
	public void deloy()
	{
		
	
		//获取仓库服务的实例
		RepositoryService repositoryService = pe.getRepositoryService();
		
		DeploymentBuilder db =repositoryService.createDeployment().addClasspathResource("workflow/MyProcess.bpmn").addClasspathResource("workflow/MyProcess.png").name("请假流程");
		
		Deployment dy = db.deploy();
		
		System.out.println(dy.getId()+"  "+dy.getName());
	}
	
	//部署流程定义
	@Test
	public void deloy_zip()
	{
		InputStream in = this.getClass().getClassLoader().getResourceAsStream("workflow/MyProcess.zip");
		
		ZipInputStream zipin = new ZipInputStream(in);
		
		Deployment dy = pe.getRepositoryService().createDeployment().name("请假流程liming").addZipInputStream(zipin).deploy();
		
		
		System.out.println(dy.getId()+" "+dy.getName());
	}

	//查询流程定义
	@Test
	public void queryProceeDefinition()
	{
		//获取仓库服务对象,查询列表
		ProcessDefinitionQuery query =pe.getRepositoryService().createProcessDefinitionQuery();
		
		query.orderByProcessDefinitionVersion().asc();
		query.processDefinitionKey("myProcess1");
//		query.processDefinitionName("");
		
		List<ProcessDefinition> list= query.list();
		
		for (ProcessDefinition processDefinition : list) {
			System.out.print("id:"+processDefinition.getId());
			System.out.print("name:"+processDefinition.getName());
			System.out.print("key:"+processDefinition.getKey());
			System.out.print("version:"+processDefinition.getVersion());
			System.out.print("resourceName:"+processDefinition.getResourceName());
			System.out.println();
		}
	}
	
	//删除流程定义
		@Test
	public void deletProceeDefinition()
		{

			String id = "801";
			RepositoryService service =pe.getRepositoryService();
			
			//正在执行的流程抛出异常
			service.deleteDeployment(id);
			
			//级连删除,会删除和当前规则相关的所有信息
			service.deleteDeployment(id,true);
		}
		
	//查看流程定义流程图
		@Test
	public void show()
		{
			String id = "101";
			List<String> list = pe.getRepositoryService().getDeploymentResourceNames(id);	
			String img ="";
			for (String string : list) {
				System.out.println("img:"+string);
				
				if(string.indexOf(".png")>=0)
				{
					img = string;
				}
			}
				
				if(img!= "")
				{
				InputStream  inputStream =	pe.getRepositoryService().getResourceAsStream(id, img);
				
				File f = new File("/Users/zhangqinghua/Documents/workspace/"+img);
				try {
					FileUtils.copyInputStreamToFile(inputStream, f);
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				}
			}
	
		
	//启动流程实例
	@Test
	public void startProcess()
	{
		
		RuntimeService runtimeService = pe.getRuntimeService();
		ProcessInstance pi = runtimeService.startProcessInstanceByKey("myProcess");
		
		System.out.println(pi.getId()+" "+pi.getProcessDefinitionId());
	}
	//查看任务列表
	@Test
	public void queryTask()
	{
		String assignee = "李三";
		
		List<Task> list =pe.getTaskService().createTaskQuery().taskAssignee(assignee).orderByTaskCreateTime().desc().list();
		
		
		for (Task task : list) {
			System.out.println("ID:"+task.getId());
			System.out.println("name:"+task.getName());
			System.out.println("createtime:"+task.getCreateTime());
			System.out.println("Assignee:"+task.getAssignee());
			
		}
	}
	
	//办理任务
	@Test
	public void complete()
	{
		String id = "2201";
		pe.getTaskService().complete(id);
	}
	//查看流程状态
	@Test
	public void queryProcessState()
	{
		String processInstanceId = "2001";
		
		ProcessInstance pi =pe.getRuntimeService().createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
		if(pi !=null)
		{
			System.out.println("当前流程在"+pi.getActivityId());
		}
		else
		{
			System.out.println("当前流程已经结束");
		}
		
	}
	
	@Test
	public void queryHistoryTask()
	{
		String taskAssignee = "李三";
		List<HistoricTaskInstance> list = pe.getHistoryService().createHistoricTaskInstanceQuery().taskAssignee(taskAssignee).list();
		
		if(list.size()>0 && list != null)
		{
			for (HistoricTaskInstance historicTaskInstance : list) {
				System.out.println("任务ID"+historicTaskInstance.getId());
				System.out.println("流程实例"+historicTaskInstance.getProcessInstanceId());
				System.out.println("任务办理"+historicTaskInstance.getAssignee());
				System.out.println("开始时间"+historicTaskInstance.getStartTime() +"结束时间:"+ 
				historicTaskInstance.getEndTime());
			}
		}
	}
	
	//查看历史的流程实例
	@Test
	public void queryHisoryProcessInstance()
	{
		String processInstanceId = "2001";
		HistoricProcessInstance hpi = pe.getHistoryService().createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
		
		System.out.println("流程定义:"+hpi.getProcessDefinitionId());
		System.out.println("流程实例ID:"+hpi.getId());
		System.out.println(hpi.getStartTime()+"   "+hpi.getEndTime()+"  "+hpi.getDurationInMillis());
	}
		
}

猜你喜欢

转载自394498036.iteye.com/blog/2308864
今日推荐