activiti如何获取当前节点以及下一步路径或节点
2016-05-31 13:51
525 查看
首先是根据流程ID获取当前任务:
List<Task> tasks = taskService.createTaskQuery().processInstanceId(procInstanceId).list();
然后根据当前任务获取当前流程的流程定义,然后根据流程定义获得所有的节点:
ProcessDefinitionEntity def = (ProcessDefinitionEntity) ((RepositoryServiceImpl)rs).getDeployedProcessDefinition(task.getProcessDefinitionId());
List<ActivityImpl> activitiList = def.getActivities(); //rs是指RepositoryService的实例
根据任务获取当前流程执行ID,执行实例以及当前流程节点的ID:
String excId = task.getExecutionId();
ExecutionEntity execution = (ExecutionEntity) runtimeService.createExecutionQuery().executionId(excId).singleResult();
String activitiId = execution.getActivityId();
然后循环activitiList 并判断出当前流程所处节点,然后得到当前节点实例,根据节点实例获取所有从当前节点出发的路径,然后根据路径获得下一个节点实例:
for(ActivityImpl activityImpl:activitiList){
String id = activityImpl.getId();
if(activitiId.equals(id)){
System.out.println("当前任务:"+activityImpl.getProperty("name")); //输出某个节点的某种属性
List<PvmTransition> outTransitions = activityImpl.getOutgoingTransitions();//获取从某个节点出来的所有线路
for(PvmTransition tr:outTransitions){
PvmActivity ac = tr.getDestination(); //获取线路的终点节点
System.out.println("下一步任务任务:"+ac.getProperty("name"));
}
break;
}
}
这就是获取当前节点以及下一步路径或节点的整个过程了
相关文章推荐
- angularjs JSONP服务
- vim 中Ctags的安装和使用
- ffmpeg编译时的问题
- STM32F4 定义ucosii到CCM
- 从0开始学习 GitHub 系列之「初识 GitHub」
- (Java)LeetCode-20. Valid Parentheses
- iOS自定义键盘
- MP4格式分析之元数据moov(二)
- 学习新东西的方法
- 判断checkbox是否选中
- Servlet获取URL地址
- 模板与c++11--右值引用
- 如何在大牛面前装逼
- Kafka 精萃
- C++中placement new操作符(经典)
- js购物车价格计算
- Oracle修改sequence的初始值
- 第十三周项目3-形状类族的中的纯虚函数
- Linux查看端口对应服务
- 从0开始学习 GitHub 系列之「加入 GitHub」