`

工作流的全流程

 
阅读更多

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());
	}
		
}

 

分享到:
评论

相关推荐

    通达OA工作流升级流程中心.rar

    工作流是OA系统的核心部分,它帮助用户自动化处理日常业务流程,如审批、报销等。当系统需要更新或优化工作流功能时,升级到“流程中心”是一个重要的步骤。下面我们将详细探讨通达OA工作流升级到流程中心的操作流程...

    web工作流 流程设计

    Web工作流流程设计是信息化管理中的重要组成部分,它主要用于自动化和规范化组织内的业务流程。在本文中,我们将深入探讨Web工作流设计工具的关键概念、应用及其与VML(Vector Markup Language)的关系,以及如何...

    工作流程JBPM工作流管理

    【工作流程JBPM工作流管理】是企业信息化建设中至关重要的一环,它涉及到组织内部的任务自动化、业务流程优化以及跨部门协作效率的提升。JBPM(JBoss Business Process Management)是Red Hat公司推出的一款开源的...

    流程设计 有关工作流流程设计

    工作流流程设计是IT行业中一个重要的领域,它涉及到企业内部业务流程的自动化和优化,以提高效率和协作性。在本资源中,我们探讨的是利用VML(Vector Markup Language)进行工作流流程的设计方法。虽然如今VML已经...

    工作流流程编辑器(含全部源码)

    工作流流程编辑器是一款用于设计和管理业务流程的工具,它包含了全部的源代码,使得开发者可以深入理解其内部机制并进行定制化开发。在IT领域,工作流(Workflow)是一种自动化处理业务流程的技术,它将业务过程中的...

    飞龙工作流 FlowLong 真正的国产工作流引擎、json 格式实例模型、仿飞书钉钉审批流程设计器

    飞龙工作流(FlowLong)是一款专为国产环境设计的工作流引擎,致力于提供高效、灵活且易用的流程管理解决方案。这款引擎的核心特点是其采用了JSON格式来定义和存储流程实例模型,这使得流程的设计和配置变得更为直观...

    浅析业务流程管理(BPM)与工作流的区别

    ### 浅析业务流程管理(BPM)与工作流的区别 #### 概述 在数字化转型的浪潮下,企业越来越依赖信息系统提升效率与竞争力。ERP(企业资源规划)、CRM(客户关系管理)、SRM(供应链管理)等系统已成为企业信息化的...

    基于自研的流程设计器 + 自研后端Java工作流引擎,组成了一套纯JSON数据交互的自研工作流引擎系统 +工作流管理系统

    JsonFlow工作流基于自研的流程设计器 + 自研后端Java工作流引擎,组成了一套纯JSON数据交互的自研工作流引擎系统 + 工作流管理系统。本系统无论前端还是后端,其学习成本明显低于开源工作流引擎及附带流程设计器,...

    工作流资料+DEMO源代码

    工作流技术是IT领域中一个重要的分支,它主要用于自动化组织中的业务流程,使得流程的执行、管理和监控更为高效。在给定的资源中,“工作流资料+DEMO源代码”包含了一个名为“NetronLight工作流软件源码.rar”的...

    snaker学习手册工作流

    Snaker学习手册工作流是Snaker工作流程管理系统的使用指南,旨在帮助用户快速掌握Snaker的基本使用方式和工作流程管理。下面是Snaker学习手册工作流的详细知识点: 一、常用操作 Snaker学习手册工作流的第一个部分...

    纯JS实现画工作流的流程图

    在JavaScript(JS)中实现画工作流的流程图是一项技术挑战,它涉及到DOM操作、图形渲染和用户交互等多个方面。这个项目的核心目标是创建一个自定义的WEB工作流设计工具,让用户可以直观地构建和编辑流程图,而无需...

    activiti工作流流程跟踪图(图片(两种方式))

    Activiti是一款开源的工作流引擎,它为业务流程自动化提供了强大的支持。在开发和运维过程中,流程跟踪图是非常重要的工具,可以帮助我们理解流程的执行状态,定位问题,优化流程设计。本实例聚焦于如何生成和查看...

    Activiti工作流整合Web流程设计器整合

    Activiti工作流引擎是一款强大的开源工作流解决方案,它基于模型驱动的架构,旨在为企业提供灵活、可扩展的业务流程自动化能力。在这个“Activiti工作流整合Web流程设计器整合”主题中,我们将深入探讨如何将...

    浅析业务流程管理(BPM)与工作流的六大区别

    业务流程管理(BPM)与工作流虽然在某些方面有所重叠,但它们在实际应用中存在着显著的区别。本文将详细解析这两者之间的六个主要差异,以帮助企业更好地理解和选择适合自身业务需求的解决方案。 首先,BPM强调的是...

    php工作流引擎,可视化设计,兼容PHP8

    在IT领域,工作流引擎是一种用于自动化业务流程的软件系统,它可以帮助企业或组织实现复杂的业务逻辑和审批流程。PHP工作流引擎就是基于PHP编程语言实现的这种工具,旨在为PHP开发者提供一种高效、灵活的方式来设计...

    c#编写的工作流引擎

    工作流引擎是一种软件系统,它负责管理和自动化组织内的业务流程。在C#中编写工作流引擎,可以利用.NET Framework或.NET Core提供的丰富的类库和工具,实现高度灵活和可扩展的流程控制。本文将深入探讨C#实现工作流...

    Activity工作流在线绘制流程图

    分享一个web端绘制流程图,感觉很实用。下载解压后直接导入eclipse,运行方式 HTTP Preview,访问地址http://localhost:8080/estd/index.html 希望能帮助到大家。

    工作流及工作流引擎简介

    工作流是一个广泛应用于企业管理和信息化建设的概念,它涉及到工作流程的自动化和优化。工作流的核心是将业务流程中的任务和活动组织起来,以提高效率、确保合规性,并促进跨部门的协作。这一概念最初源于生产组织和...

    开源工作流引擎Asp.ne源码 表单引擎+流程引擎+权限控制

    开源工作流引擎Asp.net源码是开发人员用于构建企业级业务系统的重要工具,它集成了表单引擎、流程引擎和权限控制等关键模块,旨在提高应用系统的灵活性、可扩展性和安全性。以下将详细阐述这些核心组件及其在实际...

    Silverlight全开源工作流设计器

    【银光(Silverlight)全开源工作流设计器】 在信息技术领域,工作流设计器是一种用于创建和编辑业务流程的工具,通常被开发人员用来构建复杂的业务逻辑。本项目名为"Silverlight全开源工作流设计器",它基于Visual...

Global site tag (gtag.js) - Google Analytics