activities工作流之流程任务及监听器

ProcessEngine pe = ProcessEngines.getDefaultProcessEngine();

一、流程任务类型
①.个人任务
由某一个负责办理,在任务表中通过assignee字段记录
②.公共任务(又称组任务)
当前的任务可以由多个人办理,一个人办理即可流转至下一个环节
③.接收任务
接收任务不是由某个人负责办理,通过signal方法让流程执行的
二、任务操作
①.公共任务查询

TaskQuery query = pe.getTaskService().createTaskQuery();
String candidateUser = "李四";
//根据候选人过滤
query.taskCandidateUser(candidateUser);
List<Task> list = query.list();
for (Task task : list) {
	System.out.println(task.getName());
}

②.拾取公共任务(即将公共任务变为个人任务)

String taskId = "1602";
String userId = "王五";
pe.getTaskService().claim(taskId , userId);

③.退回任务到公共任务列表

String taskId = "1602";
pe.getTaskService().setAssignee(taskId , null);

④.接受任务(接收任务不是由某个人负责办理,通过signal方法让流程执行的)

String executionId = "2101";
pe.getRuntimeService().signal(executionId );

三、流程监听器
①.流程实例监听器(监听流程实例的事件)
(1)自定义流程实例监听器

public class MyExecutionListener implements ExecutionListener {
	//当监听的事件发送时执行此方法
	public void notify(DelegateExecution execution) throws Exception {
		System.out.println("自定义的监听器执行了。。。1");
	}
}

(2)注册流程实例监听器
在流程开始任务或者结束任务节点,画流程图时,选择listener的class对象
②.任务监听器(监听流程中的任务,即监听某个待办节点)
(1)自定义流程实例监听器

public class MyTaskListener implements TaskListener{
	//监听任务的事件
	public void notify(DelegateTask delegateTask) {
		String assignee = delegateTask.getAssignee();
		String eventName = delegateTask.getEventName();
		String name = delegateTask.getName();
		String processInstanceId = delegateTask.getProcessInstanceId();
		Set<String> variableNames = delegateTask.getVariableNames();
		for (String key : variableNames) {
			Object value = delegateTask.getVariable(key);
			System.out.println(key + " = " + value);
		}
		System.out.println("一个任务["+name+"]被创建了,由["+assignee+"]负责办理");
	}
}

(2)注册流程任务监听器
在流程任务节点,画流程图时,选择listener的class对象

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章