一、任务操作
1、创建任务
package org.crazyit.activiti.TaskService;
/**
* taskService 的 newTask 和 saveTask
*/
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.TaskService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.task.Task;
public class TaskNew {
public static void main(String[] args) {
// 创建流程引擎
ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
//获取任务服务组件
TaskService taskService = engine.getTaskService();
//保存第一个Task,不设置ID
Task task1 = taskService.newTask();
taskService.saveTask(task1);
//保存第二个Task,设置ID
Task task2 = taskService.newTask("审核任务");
taskService.saveTask(task2);
}
}
2、任务提醒 /分配
package org.crazyit.activiti.TaskService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
/**
* 任务提醒 /分配
* @author mz
*
*/
public class TaskClaim {
public static void main(String[] args) {
// 获取流程引擎实例
ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
// 获取任务服务组件
TaskService taskService = engine.getTaskService();
// 获取运行服务组件
RuntimeService runtimeService = engine.getRuntimeService();
// 流程存储服务组件
RepositoryService repositoryService = engine.getRepositoryService();
// 部署流程描述文件
Deployment dep = repositoryService.createDeployment()
.addClasspathResource("bpmn/vacation.bpmn").deploy();
// 查找流程定义
ProcessDefinition pd = repositoryService.createProcessDefinitionQuery()
.deploymentId(dep.getId()).singleResult();
// 启动流程
ProcessInstance pi = runtimeService
.startProcessInstanceById(pd.getId());
// 查找任务
Task task = taskService.createTaskQuery().processInstanceId(pi.getId())
.singleResult();
// 调用claim方法
taskService.claim(task.getId(), "1");
// 此处将会抛出异常
taskService.claim(task.getId(), "2");
}
}
3、任务完成
package org.crazyit.activiti.TaskService;
import java.util.HashMap;
import java.util.Map;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
/**
* 任务完成
* @author mz
*
*/
public class TaskComplete {
public static void main(String[] args) {
// 获取流程引擎实例
ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
// 获取任务服务组件
TaskService taskService = engine.getTaskService();
// 获取运行服务组件
RuntimeService runtimeService = engine.getRuntimeService();
// 流程存储服务组件
RepositoryService repositoryService = engine.getRepositoryService();
// 部署流程描述文件
Deployment dep = repositoryService.createDeployment()
.addClasspathResource("bpmn/vacation2.bpmn").deploy();
// 查找流程定义
ProcessDefinition pd = repositoryService.createProcessDefinitionQuery()
.deploymentId(dep.getId()).singleResult();
// 启动流程
ProcessInstance pi = runtimeService
.startProcessInstanceById(pd.getId());
// 查找任务
Task task = taskService.createTaskQuery().processInstanceId(pi.getId())
.singleResult();
// 调用complete方法完成任务,传入参数
Map<String, Object> vars = new HashMap<String, Object>();
vars.put("days", 2);
// 设置临时的参数
Map<String, Object> vars2 = new HashMap<String, Object>();
vars2.put("temp", "temp var");
taskService.complete(task.getId(), vars, vars2);
// 再次查找任务
task = taskService.createTaskQuery().processInstanceId(pi.getId())
.singleResult();
// 无法查询临时参数
String tempVar = (String)taskService.getVariable(task.getId(), "temp");
System.out.println("查询临时参数:" + tempVar);
//得到参数
Integer days = (Integer)taskService.getVariable(task.getId(), "days");
if (days > 5) {
System.out.println("大于5天,不批");
} else {
System.out.println("小于5天,完成任务,流程结束");
taskService.complete(task.getId());
}
}
}
4、任务删除
package org.crazyit.activiti.TaskService;
import java.util.ArrayList;
import java.util.List;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.TaskService;
import org.activiti.engine.task.Task;
/**
* taskService 的 DeleteTask
*/
public class TaskDelete {
public static void main(String[] args) {
// 创建流程引擎
ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
//获取任务服务组件
TaskService taskService = engine.getTaskService();
// 保存若干个Task
for (int i = 1; i < 10; i++) {
saveTask(taskService, String.valueOf(i));
}
// 单个删除
// 删除task(不包括历史数据和子任务)
taskService.deleteTask("1");
// 删除task(包括历史数据和子任务)
taskService.deleteTask("2", true);
// 多个删除
// 删除多个task(不包括历史数据和子任务)
List<String> ids = new ArrayList<String>();
ids.add("3");
ids.add("4");
taskService.deleteTasks(ids);
// 删除多个task(包括历史数据和子任务)
ids = new ArrayList<String>();
ids.add("5");
ids.add("6");
taskService.deleteTasks(ids, true);
// 再删除ID为3的task,此时3的历史数据也会被删除(如果有的话)
taskService.deleteTask("3", true);
}
//保存一个task
static void saveTask(TaskService taskService, String id) {
Task task1 = taskService.newTask(id);
taskService.saveTask(task1);
}
}
二、任务附件操作
1、创建附件
package org.crazyit.activiti.TaskService;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
/**
* 创建任务附件
* @author mz
*
*/
public class AttachmentCreate {
public static void main(String[] args) throws Exception {
// 获取流程引擎实例
ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
// 获取任务服务组件
TaskService taskService = engine.getTaskService();
// 获取运行服务组件
RuntimeService runtimeService = engine.getRuntimeService();
// 流程存储服务组件
RepositoryService repositoryService = engine.getRepositoryService();
// 部署流程描述文件
Deployment dep = repositoryService.createDeployment()
.addClasspathResource("bpmn/vacation.bpmn").deploy();
// 查找流程定义
ProcessDefinition pd = repositoryService.createProcessDefinitionQuery()
.deploymentId(dep.getId()).singleResult();
// 启动流程
ProcessInstance pi = runtimeService
.startProcessInstanceById(pd.getId());
// 查找任务
Task task = taskService.createTaskQuery().processInstanceId(pi.getId())
.singleResult();
// 设置任务附件
taskService.createAttachment