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系统的核心部分,它帮助用户自动化处理日常业务流程,如审批、报销等。当系统需要更新或优化工作流功能时,升级到“流程中心”是一个重要的步骤。下面我们将详细探讨通达OA工作流升级到流程中心的操作流程...
Web工作流流程设计是信息化管理中的重要组成部分,它主要用于自动化和规范化组织内的业务流程。在本文中,我们将深入探讨Web工作流设计工具的关键概念、应用及其与VML(Vector Markup Language)的关系,以及如何...
【工作流程JBPM工作流管理】是企业信息化建设中至关重要的一环,它涉及到组织内部的任务自动化、业务流程优化以及跨部门协作效率的提升。JBPM(JBoss Business Process Management)是Red Hat公司推出的一款开源的...
工作流流程设计是IT行业中一个重要的领域,它涉及到企业内部业务流程的自动化和优化,以提高效率和协作性。在本资源中,我们探讨的是利用VML(Vector Markup Language)进行工作流流程的设计方法。虽然如今VML已经...
工作流流程编辑器是一款用于设计和管理业务流程的工具,它包含了全部的源代码,使得开发者可以深入理解其内部机制并进行定制化开发。在IT领域,工作流(Workflow)是一种自动化处理业务流程的技术,它将业务过程中的...
飞龙工作流(FlowLong)是一款专为国产环境设计的工作流引擎,致力于提供高效、灵活且易用的流程管理解决方案。这款引擎的核心特点是其采用了JSON格式来定义和存储流程实例模型,这使得流程的设计和配置变得更为直观...
### 浅析业务流程管理(BPM)与工作流的区别 #### 概述 在数字化转型的浪潮下,企业越来越依赖信息系统提升效率与竞争力。ERP(企业资源规划)、CRM(客户关系管理)、SRM(供应链管理)等系统已成为企业信息化的...
JsonFlow工作流基于自研的流程设计器 + 自研后端Java工作流引擎,组成了一套纯JSON数据交互的自研工作流引擎系统 + 工作流管理系统。本系统无论前端还是后端,其学习成本明显低于开源工作流引擎及附带流程设计器,...
工作流技术是IT领域中一个重要的分支,它主要用于自动化组织中的业务流程,使得流程的执行、管理和监控更为高效。在给定的资源中,“工作流资料+DEMO源代码”包含了一个名为“NetronLight工作流软件源码.rar”的...
Snaker学习手册工作流是Snaker工作流程管理系统的使用指南,旨在帮助用户快速掌握Snaker的基本使用方式和工作流程管理。下面是Snaker学习手册工作流的详细知识点: 一、常用操作 Snaker学习手册工作流的第一个部分...
在JavaScript(JS)中实现画工作流的流程图是一项技术挑战,它涉及到DOM操作、图形渲染和用户交互等多个方面。这个项目的核心目标是创建一个自定义的WEB工作流设计工具,让用户可以直观地构建和编辑流程图,而无需...
Activiti是一款开源的工作流引擎,它为业务流程自动化提供了强大的支持。在开发和运维过程中,流程跟踪图是非常重要的工具,可以帮助我们理解流程的执行状态,定位问题,优化流程设计。本实例聚焦于如何生成和查看...
Activiti工作流引擎是一款强大的开源工作流解决方案,它基于模型驱动的架构,旨在为企业提供灵活、可扩展的业务流程自动化能力。在这个“Activiti工作流整合Web流程设计器整合”主题中,我们将深入探讨如何将...
业务流程管理(BPM)与工作流虽然在某些方面有所重叠,但它们在实际应用中存在着显著的区别。本文将详细解析这两者之间的六个主要差异,以帮助企业更好地理解和选择适合自身业务需求的解决方案。 首先,BPM强调的是...
在IT领域,工作流引擎是一种用于自动化业务流程的软件系统,它可以帮助企业或组织实现复杂的业务逻辑和审批流程。PHP工作流引擎就是基于PHP编程语言实现的这种工具,旨在为PHP开发者提供一种高效、灵活的方式来设计...
工作流引擎是一种软件系统,它负责管理和自动化组织内的业务流程。在C#中编写工作流引擎,可以利用.NET Framework或.NET Core提供的丰富的类库和工具,实现高度灵活和可扩展的流程控制。本文将深入探讨C#实现工作流...
分享一个web端绘制流程图,感觉很实用。下载解压后直接导入eclipse,运行方式 HTTP Preview,访问地址http://localhost:8080/estd/index.html 希望能帮助到大家。
工作流是一个广泛应用于企业管理和信息化建设的概念,它涉及到工作流程的自动化和优化。工作流的核心是将业务流程中的任务和活动组织起来,以提高效率、确保合规性,并促进跨部门的协作。这一概念最初源于生产组织和...
开源工作流引擎Asp.net源码是开发人员用于构建企业级业务系统的重要工具,它集成了表单引擎、流程引擎和权限控制等关键模块,旨在提高应用系统的灵活性、可扩展性和安全性。以下将详细阐述这些核心组件及其在实际...
【银光(Silverlight)全开源工作流设计器】 在信息技术领域,工作流设计器是一种用于创建和编辑业务流程的工具,通常被开发人员用来构建复杂的业务逻辑。本项目名为"Silverlight全开源工作流设计器",它基于Visual...