Activiti 流程 获取 获取当前流程的 目标
熊哒哒 2011-09-14 04:02:52 弄两条了 还没弄出来 跪求帮忙啊
<?xml version="1.0" encoding="UTF-8" ?>
- <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
- <process id="ProjectApplicationProcess" name="ProjectApplicationProcess">
<startEvent id="startevent1" name="Start" />
- <userTask id="usertask1" name="项目申请" activiti:candidateGroups="项目经理">
- <extensionElements>
<activiti:taskListener event="create" class="com.zds.common.activitiListener.TaskCreateListener" />
<activiti:taskListener event="complete" class="com.zds.common.activitiListener.TaskCompleteListener" />
</extensionElements>
</userTask>
- <userTask id="usertask2" name="项目审核" activiti:candidateGroups="部门经理">
- <extensionElements>
<activiti:taskListener event="create" class="com.zds.common.activitiListener.DMTaskCreateListener" />
<activiti:taskListener event="complete" class="com.zds.common.activitiListener.TaskCompleteListener" />
</extensionElements>
</userTask>
这个是 XML 的一部分
public class TaskCreateListener implements TaskListener{
public void notify(DelegateTask task) {
ServletContext sc = ServletActionContext.getServletContext();
ApplicationContext ac = WebApplicationContextUtils.getRequiredWebApplicationContext(sc);
ProstatusService prostatusService = (ProstatusService)ac.getBean("prostatusService");
ProcessEngineConfiguration pe = (ProcessEngineConfiguration)ac.getBean("processEngineConfiguration");
ProcessEngine processEngine = pe.buildProcessEngine();
RepositoryService repositoryService = processEngine.getRepositoryService();
RuntimeService runtimeService = processEngine.getRuntimeService();
ProcessDefinitionEntity def = (ProcessDefinitionEntity) ((RepositoryServiceImpl)repositoryService).getDeployedProcessDefinition(task.getProcessDefinitionId());
List<ActivityImpl> activitiList = def.getActivities();
List<PvmActivity> nextActivities = new LinkedList<PvmActivity>();
ExecutionEntity execution =((TaskEntity) task).getExecution();
String activitiId = execution.getActivityId();
///--------------------
System.out.println("----------------------------------------------------");
System.out.println(task.getExecutionId());
System.out.println(task.getId());
System.out.println(task.getOwner());
System.out.println(task.getProcessDefinitionId());
System.out.println(task.getProcessInstanceId());
System.out.println(task.getTaskDefinitionKey());
System.out.println("组 = "+processEngine.getTaskService().createTaskQuery().taskCandidateGroup("项目经理").list());
System.out.println("组 = "+processEngine.getTaskService().createTaskQuery().taskCandidateGroup("部门经理").list());
System.out.println("组 = "+processEngine.getTaskService().createTaskQuery().taskCandidateGroup("分管副总").list());
System.out.println("组 = "+processEngine.getTaskService().createTaskQuery().taskCandidateGroup("风控委员会").list());
if("usertask1".equals(activitiId)){
System.out.println(" 有项目 等待处理");
}
for(ActivityImpl activityImpl:activitiList){
String id = activityImpl.getId();
//获取当前的activity
if(activitiId.equals(id)){
System.out.println("当前任务:"+activityImpl.getProperty("name"));
List<PvmTransition> outTransitions = activityImpl.getOutgoingTransitions();
for(PvmTransition tr:outTransitions){
nextActivities.add(tr.getDestination());
}
break;
}
}
if(nextActivities!=null && nextActivities.size()>0){
StringBuffer nextTask = new StringBuffer();
for(PvmActivity pvmActivity:nextActivities){
nextTask.append(","+pvmActivity.getProperty("name"));
}
nextTask = nextTask.deleteCharAt(0);
Prostatus prostatus = new Prostatus();
prostatus.setProcessIns(task.getProcessInstanceId());
prostatus.setCurrentTask(task.getName());
prostatus.setNextTask(nextTask.toString());
prostatusService.save(prostatus);
}
}
这个是 流程监听器。。。。
怎么获取 当期流程的 下一个目标是谁啊
比如说 我现在是 在项目申请阶段。由项目经理来处理
我提交后会提交给谁 在配置文件里面 已经有明确的流程目标
- <sequenceFlow id="flow1" name="" sourceRef="startevent1" targetRef="usertask1">
- <extensionElements>
<activiti:executionListener event="take" class="com.zds.common.activitiListener.StartProcessListener" />
</extensionElements>
</sequenceFlow>
<sequenceFlow id="flow2" name="" sourceRef="usertask1" targetRef="usertask2" />
<sequenceFlow id="flow3" name="" sourceRef="usertask2" targetRef="exclusivegateway1" />
- <sequenceFlow id="flow4" name="" sourceRef="exclusivegateway1" targetRef="usertask3">
- <conditionExpression xsi:type="tFormalExpression">
- <![CDATA[
${"1".equals(ispass)}
]]>
</conditionExpression>
</sequenceFlow>
- <sequenceFlow id="flow5" name="" sourceRef="exclusivegateway1" targetRef="endevent1">
- <extensionElements>
<activiti:executionListener event="take" class="com.zds.common.activitiListener.EndProcessListener" />
</extensionElements>
- <conditionExpression xsi:type="tFormalExpression">
- <![CDATA[
${"0".equals(ispass)}
]]>
</conditionExpression>
</sequenceFlow>
我想在监听器里面获取 当期流程 的下一个目标是谁 该怎么获取。。。。。