activiti基础操作
package activitiTest; 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.history.HistoricProcessInstance; import org.activiti.engine.history.HistoricTaskInstance; import org.activiti.engine.repository.Deployment; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; /** * activiti基础操作 */ public class ActTest_jichucaozuo { // ProcessEngines.getDefaultProcessEngine()会在第一次调用时 // 初始化并创建一个流程引擎,以后再调用就会返回相同的流程引擎。 // 使用对应的方法可以创建和关闭所有流程引擎:ProcessEngines.init() 和 // ProcessEngines.destroy()。 private ProcessEngine processEngine = ProcessEngines .getDefaultProcessEngine(); /** * 简单非空判断 * * @author:tuzongxun * @Title: isEmpty * @param @return * @return boolean * @date Feb 29, 2016 12:55:15 PM * @throws */ public boolean isEmpty(Object object) { if (object instanceof List) { List list = (List) object; if (list != null && list.size() > 0) { return false; } else { return true; } } else { if (object != null) { return false; } else { return true; } } } /** * 部署流程定义(发布流程) * * @author:tuzongxun * @Title: actDeployement * @param * @return void * @date Feb 29, 2016 12:23:48 PM * @throws */ public void actDeployement() { // 使用zip文件形式部署流程定义 InputStream inputStream = this.getClass().getClassLoader() .getResourceAsStream("actTest1.zip"); ZipInputStream zipInputStream = new ZipInputStream(inputStream); processEngine.getRepositoryService().createDeployment() .name("activiti测试").addZipInputStream(zipInputStream).deploy(); } /** * 删除流程定义 * * @author:tuzongxun * @Title: deleteDeployement * @param * @return void * @date Feb 29, 2016 12:36:15 PM * @throws */ public void deleteDeployement() { List<Deployment> lists = processEngine.getRepositoryService() .createDeploymentQuery().list(); if (!isEmpty(lists)) { for (Deployment deployment : lists) { processEngine.getRepositoryService().deleteDeployment( deployment.getId()); } } } /** * 启动流程实例 * * @author:tuzongxun * @Title: startProcessInstance * @param * @return void * @date Feb 29, 2016 12:30:06 PM * @throws */ public void startProcessInstance() { // 这里根据流程定义的key启动,也可以根据id,还可以在启动的时候加入流程变量, // 启动流程实例后会获得一个任务task,这里是在流程图中已经写死了任务所有者是张三,因此启动的时候会创建一个任务给张三 String processDefinitionKey = "myProcess"; processEngine.getRuntimeService().startProcessInstanceByKey( processDefinitionKey); } /** * 查询当前活动的流程实例 * * @author:tuzongxun * @Title: findCurrentProInstance * @param * @return void * @date Feb 29, 2016 12:53:04 PM * @throws */ public void findCurrentProInstance() { List<ProcessInstance> lists = processEngine.getRuntimeService() .createProcessInstanceQuery().list(); if (!isEmpty(lists)) { for (ProcessInstance processInstance : lists) { System.out.println(processInstance.getId()); } } } /** * 查询个人任务及相关信息 * * @author:tuzongxun * @Title: findMyTask * @param * @return void * @date Feb 29, 2016 12:50:05 PM * @throws */ public void findMyTask() { // String userName = "张三"; String userName = "李四"; List<Task> lists = processEngine.getTaskService().createTaskQuery() .taskAssignee(userName).list(); if (!isEmpty(lists)) { for (Task task : lists) { System.out.println(task.getId() + "," + task.getName() + "," + task.getAssignee() + "," + task.getCreateTime()); } } } /** * 完成个人任务 * * @author:tuzongxun * @Title: endMyTask * @param * @return void * @date Feb 29, 2016 1:17:21 PM * @throws */ public void endMyTask() { String taskId = "5002"; processEngine.getTaskService().complete(taskId); } /** * 查询历史流程实例 * * @author:tuzongxun * @Title: findHisProInstance * @param * @return void * @date Feb 29, 2016 2:09:14 PM * @throws */ public void findHisProInstance() { List<HistoricProcessInstance> lists = processEngine.getHistoryService() .createHistoricProcessInstanceQuery().list(); if (!isEmpty(lists)) { for (HistoricProcessInstance hisPro : lists) { System.out.println(hisPro.getId() + "," + hisPro.getStartTime() + "," + hisPro.getEndTime()); } } } /** * 查询历史任务列表 * * @author:tuzongxun * @Title: findHisTask * @param * @return void * @date Feb 29, 2016 2:13:05 PM * @throws */ public void findHisTask() { List<HistoricTaskInstance> lists = processEngine.getHistoryService() .createHistoricTaskInstanceQuery().list(); if (!isEmpty(lists)) { for (HistoricTaskInstance hisTask : lists) { System.out.println(hisTask.getId() + "," + hisTask.getAssignee() + "," + hisTask.getName() + "," + hisTask.getStartTime() + "," + hisTask.getEndTime()); } } } }
activiti基础操作的更多相关文章
- python基础操作以及hdfs操作
目录 前言 基础操作 hdfs操作 总结 一.前言 作为一个全栈工程师,必须要熟练掌握各种语言...HelloWorld.最近就被"逼着"走向了python开发之路, ...
- MYSQL基础操作
MYSQL基础操作 [TOC] 1.基本定义 1.1.关系型数据库系统 关系型数据库系统是建立在关系模型上的数据库系统 什么是关系模型呢? 1.数据结构可以规定,同类数据结构一致,就是一个二维的表格 ...
- 【Learning Python】【第二章】Python基础类型和基础操作
基础类型: 整型: py 3.0解决了整数溢出的问题,意味着整型不必考虑32位,64位,有无符号等问题,你写一个1亿亿亿,就是1亿亿亿,不会溢出 a = 10 ** 240 print(a) 执行以上 ...
- Emacs学习心得之 基础操作
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Emacs学习心得之 基础操作 1.前言与学习计划2.Emacs基础操作 一. 前言与学习计 ...
- Git基础操作
配置秘钥 1.检查本机有没有秘钥 检查~/.ssh看看是否有名为d_rsa.pub和id_dsa.pub的2个文件. $ ~/.sshbash: /c/Users/lenovo/.ssh: Is a ...
- 推荐csdn里的几篇activiti基础入门及提高的博客
昨天有个网友加qq询问我有没有非maven搭建的activiti项目的demo,因为我博客中写了一个用maven,我当时没有,于是晚上回家尝试了一下,结果比较容易就实现了. 之后和那个网友聊了一下,他 ...
- 《Genesis-3D开源游戏引擎-官方录制系列视频教程:基础操作篇》
注:本系列教程仅针对引擎编辑器:v1.2.2及以下版本 G3D基础操作 第一课<G3D编辑器初探> G3D编辑器介绍,依托于一个复杂场景,讲解了场景视图及其基本操作,属性面板和工具栏的 ...
- MYSQL 基础操作
1.MySQL基础操作 一:MySQL基础操作 1:MySQL表复制 复制表结构 + 复制表数据 create table t3 like t1; --创建一个和t1一样的表,用like(表结构也一样 ...
- php之文件基础操作
在php中对文件的基础操作非常的简单,php提供的函数粗略的用了一遍. file_get_contents():可以获取文件的内容获取一个网络资源的内容,这是php给我封装的一个比较快捷的读取文件的内 ...
随机推荐
- ion-nav-view的学习 和理解
当用户在你的app中浏览时,Ionic能够保持检测他们的浏览历史.通过了解他们的浏览历史,向左或向右滑动时可以正确的在视图间转换,或不转换.一个额外的好处是Ionic的导航系统具有可以管理多个历史记录 ...
- 2015GitWebRTC编译实录8
2015.07.20 common_video 编译通过,其对libyuv有引用[1309/1600 ] CXX obj /webrtc/common_video/libyuv/common_vide ...
- ZOJ 1067 Color Me Less
原题链接 题目大意:一道类似于简单图像压缩的题目.给定一个调色板,然后把24位真彩色按照就近原则聚类. 解法:每个像素的色彩都是RGB三个值,相当于三维空间的一个点.所以当一个新的像素进来时,分别和调 ...
- codeforces 192 c
link: http://codeforces.com/contest/330/problem/C broute force but you must be careful about some tr ...
- Linux驱动设计—— 中断与时钟@request_irq参数详解
request_irq函数定义 /*include <linux/interrupt.h>*/ int request_irq(unsigned int irq, irq_handler_ ...
- java的nio之:java的nio系列教程之DatagramChannel
Java NIO中的DatagramChannel是一个能收发UDP包的通道.因为UDP是无连接的网络协议,所以不能像其它通道那样读取和写入.它发送和接收的是数据包. 打开 DatagramChann ...
- 磁盘参数修订[转自vbird]
某些时刻,你可能会希望修改一下目前文件系统的一些相关信息,举例来说,你可能要修改 Label name , 或者是 journal 的参数,或者是其他硬盘运行时的相关参数 (例如 DMA 启动与否-) ...
- mysql学习之-逻辑架构
mysql逻辑架构图: 第一层,服务层(为客户端服务):为请求做连接处理,授权认证,安全等. 1. 每个连接的查询都在一个进程中的线程完成. 2. 服务器负责缓存线程,所以服务层不需要为每个连接新 ...
- java之yield(),sleep(),wait()区别详解-备忘笔记
备注:转载地址,http://dylanxu.iteye.com/blog/1322066,谢谢作者 1.sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但 ...
- 【转】用ASP.NET加密Cookie数据
来源:http://www.cnblogs.com/taizhouxiaoba/archive/2009/02/05/1384772.html Cookie中的数据以文本的形式存在客户端计算机,考虑它 ...