弄两条了 还没弄出来 跪求帮忙啊 <?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>我想在监听器里面获取 当期流程 的下一个目标是谁 该怎么获取。。
- <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>我想在监听器里面获取 当期流程 的下一个目标是谁 该怎么获取。。
解决方案 »
- session覆盖问题
- 请教:SSH2如何利用aop拦截action做日志记录?
- Java PetStore 出现问题,ant run后硬盘在闪,但一小时都没有反应
- 学习ajax.....遇到问题,在线等......
- 关于struts中的客户端validate的一个问题
- struts1.2问题
- 各位大虾救救命呀,如何用javascript去解析xml呀,在线等
- 关于package路径设置问题
- 怎样在一个视频文件外套一个m3u8,需要切片?
- Hibernate Validator 怎么实现 ValidationProviderResolver 接口完成 osgi校验
- 谁能帮我解释关于线程安全的一句话
- 字符串长度中文加英文的
我嘿无语 。。
谁 会弄 Activiti 基于流程 的 这个 东东啊 帮帮忙啊
//根据流程定义获得所有的节点:
List<ActivityImpl> activitiList = def.getActivities();
List<PvmTransition> outTransitions = activityImpl.getOutgoingTransitions(); for(ActivityImpl activityImpl:activitiList){
String id = activityImpl.getId();
if(activitiId.equals(id)){
System.out.println("当前执行的任务:"+activityImpl.getProperty("name"));
//ActivityBehavior behavior=activityImpl.getActivityBehavior();
//获取从某个节点出来的所有子节点
List<PvmTransition> outTransitions = activityImpl.getOutgoingTransitions();
for(PvmTransition tr:outTransitions){
//获取线路的终点节点
PvmActivity ac = tr.getDestination();
System.out.println(map);
System.out.println("下一步任务任务:"+ac.getProperty("name"));
}
break;
}
}
我上面已经写出来了 这个是获取 下一个流程的节点。。 获取到得是 name="项目审核"我所要的是 获取当前流程提交的目标。 我想要这个 candidateGroups="部门经理"
就是 当前流程提交后 会提交到谁的手里面去 而不是下一个节点所要做的事情
for(ActivityImpl activityImpl:activitiList){
String id = activityImpl.getId();
if(activitiId.equals(id)){
//输出某个节点的某种属性
//System.out.println("当前任务:"+activityImpl.getProperty("name"));
//ActivityBehavior behavior=activityImpl.getActivityBehavior();
UserTaskActivityBehavior behavior2=(UserTaskActivityBehavior)activityImpl.getActivityBehavior();
//System.out.println(behavior2.getTaskDefinition());
TaskDefinition taskDefinition=behavior2.getTaskDefinition();
if(taskDefinition!=null) {
Set<Expression> set=taskDefinition.getCandidateGroupIdExpressions();
for (Expression expression : set) {
roleName=expression.getExpressionText();
}
break;
}
}
}
for (Expression expression : set) {
roleName=expression.getExpressionText();
}
break;
}
Task task1=taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
得到的就是下一步目标;
不知道有没有理解错你的意思;