关注JEECG发展历程 关注最新动态和版本, 记录JEECG成长点滴 更新日志 - 技术支持 - 招聘英才

JEECG最新版本下载 JEECG智能开发平台 - 显著提高开发效率 常见问题 - 入门视频 - 参与开源团队

商务QQ: 69893005、418799587 商务热线(5*8小时): 010-64808099 官方邮箱: jeecgos@163.com

查看: 11483|回复: 0

activiti 如何获取下一步节点

[复制链接]
发表于 2014-8-5 13:40:06 | 显示全部楼层 |阅读模式
activiti 如何获取下一步节点

ACTIVITI相对于JBPM来说,比较年轻,用的人少,中文方面的资料更少,我根据网上到处找得资料以及看官方文档总结出来了代码,非常不容易啊。废话不多说,直接上代码吧:

首先是根据流程ID获取当前任务:

  1. List<Task> tasks = taskService.createTaskQuery().processInstanceId(procInstanceId).list();
复制代码

然后根据当前任务获取当前流程的流程定义,然后根据流程定义获得所有的节点:
  1. ProcessDefinitionEntity def = (ProcessDefinitionEntity) ((RepositoryServiceImpl)rs).getDeployedProcessDefinition(task.getProcessDefinitionId());

  2. List<ActivityImpl> activitiList = def.getActivities(); //rs是指RepositoryService的实例
复制代码



根据任务获取当前流程执行ID,执行实例以及当前流程节点的ID:

  1. String excId = task.getExecutionId();
  2. ExecutionEntity execution = (ExecutionEntity) runtimeService.createExecutionQuery().executionId(excId).singleResult();
  3. String activitiId = execution.getActivityId();
复制代码


然后循环activitiList 并判断出当前流程所处节点,然后得到当前节点实例,根据节点实例获取所有从当前节点出发的路径,然后根据路径获得下一个节点实例:
  1. for(ActivityImpl activityImpl:activitiList){
  2. String id = activityImpl.getId();
  3. if(activitiId.equals(id)){
  4. System.out.println("当前任务:"+activityImpl.getProperty("name")); //输出某个节点的某种属性
  5. List<PvmTransition> outTransitions = activityImpl.getOutgoingTransitions();//获取从某个节点出来的所有线路
  6. for(PvmTransition tr:outTransitions){
  7. PvmActivity ac = tr.getDestination(); //获取线路的终点节点
  8. System.out.println("下一步任务任务:"+ac.getProperty("name"));
  9. }
  10. break;
  11. }
  12. }
复制代码


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表