php使用activiti,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 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 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 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 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 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());

}

}

}

}

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编辑器介绍,依托于一个复杂场景,讲解了场景视图及其基本操作,属性面板和工具栏的 ...

MYSQL 基础操作

1.MySQL基础操作 一:MySQL基础操作 1:MySQL表复制 复制表结构 + 复制表数据 create table t3 like t1; --创建一个和t1一样的表,用like(表结构也一样 ...

php之文件基础操作

在php中对文件的基础操作非常的简单,php提供的函数粗略的用了一遍. file_get_contents():可以获取文件的内容获取一个网络资源的内容,这是php给我封装的一个比较快捷的读取文件的内 ...

随机推荐

WPF,解决Listbox,按住ListboxItem向下拖出Listbox,横向滚动条跑到最后。

类似这种样式的控件,.,在横向滚动条隐藏的情况下有这样的问题.(横向滚动条显示的时候也会,,目前不知道怎么解决.) 因为这个控件偏移是利用ListBox的ItemsPanelTemplate模版里的S ...

SQL执行过程中的性能负载点

一.SQL执行过程 1.用户连接数据库,执行SQL语句: 2.先在内存进行内存读,找到了所需数据就直接交给用户工作空间: 3.内存读失败,也就说在内存中没找到支持SQL所需数据,就进行物理读,也就是到 ...

将jar包安装到本地repository中

mvn install:install-file -Dfile=G:/lcn_springboot2.0/tx-plugins-db-4.1.2.jar -DgroupId=com.codingapi ...

Python——PyQt GUI编程(python programming)

import sys from math import * from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidg ...

Android 虹软2.0人脸识别,注册失败问题 分析synchronized的作用

人脸识别需要init初始化(FaceServer中),离开时需要unInit销毁:当一个含有人脸识别的界面A跳向另一个含有人脸识别的界面B时,由于初始化和销毁都是对FaceServer类加锁(sync ...

tiny4412 启动方式

1.iROM(BL0):是指Exynos4412的iROM中固化的启动代码,其作用是初始化系统时钟,设置看门狗,初始化堆和栈,加载8kb的bl1到Exynos4412的一个64kb大小内部sram(I ...

PHP工程师笔试题

PHP工程师笔试题 提示:请将答案写在另外一张空白纸上,并在30分钟内完成. PHP 请写出include.require.include_once.require_noce的区别. include是 ...

groupby elasticsearch

GET usertag/usertag/_search { "query": { "match": { "tagname": "春 ...

Cacti的库表结构-Data

cacti 的数据都是存放在rrdtool 中的,数据库存放的其实只是配置数据,cacti 的逻辑对象主要分为三种,data (数据).graph (图片).host (设备),这在它的表设计中也能很 ...

Python开发【第五篇】迭代器、生成器、递归函数、二分法

阅读目录 一.迭代器 1. 迭代的概念 #迭代器即迭代的工具(自定义的函数),那什么是迭代呢? #迭代:指一个重复的过程,每次重复都可以称之为一次迭代,并且每一次重复的结果是下一个迭代的初始值(例如: ...

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值