永发信息网

工作流怎么获取下一个节点task

答案:1  悬赏:30  手机版
解决时间 2021-11-27 20:30
工作流怎么获取下一个节点task
最佳答案

public TaskDefinition nextTaskDefinition(String procInstId){
//流程标示
String processDefinitionId = historyService.createHistoricProcessInstanceQuery().processInstanceId(procInstId).singleResult().getProcessDefinitionId();

ProcessDefinitionEntity def = (ProcessDefinitionEntity) ((RepositoryServiceImpl)repositoryService).getDeployedProcessDefinition(processDefinitionId);
//执行实例
ExecutionEntity execution = (ExecutionEntity) runtimeService.createProcessInstanceQuery().processInstanceId(procInstId).singleResult();
//当前实例的执行到哪个节点
String activitiId = execution.getActivityId();
//获得当前任务的所有节点
List activitiList = def.getActivities();
String id = null;
for(ActivityImpl activityImpl:activitiList){
id = activityImpl.getId();
if(activitiId.equals(id)){
System.out.println("当前任务:"+activityImpl.getProperty("name"));
return nextTaskDefinition(activityImpl, activityImpl.getId(),"${iscorrect==1}");
// System.out.println(taskDefinition.getCandidateGroupIdExpressions().toArray()[0]);
// return taskDefinition;
}
}
return null;
}


private TaskDefinition nextTaskDefinition(ActivityImpl activityImpl, String activityId, String elString){
if("userTask".equals(activityImpl.getProperty("type")) && !activityId.equals(activityImpl.getId())){
TaskDefinition taskDefinition = ((UserTaskActivityBehavior)activityImpl.getActivityBehavior()).getTaskDefinition();
// taskDefinition.getCandidateGroupIdExpressions().toArray();
return taskDefinition;
}else{
List outTransitions = activityImpl.getOutgoingTransitions();
List outTransitionsTemp = null;
for(PvmTransition tr:outTransitions){
PvmActivity ac = tr.getDestination(); //获取线路的终点节点
if("exclusiveGateway".equals(ac.getProperty("type"))){
outTransitionsTemp = ac.getOutgoingTransitions();
if(outTransitionsTemp.size() == 1){
return nextTaskDefinition((ActivityImpl)outTransitionsTemp.get(0).getDestination(), activityId, elString);
}else if(outTransitionsTemp.size() > 1){
for(PvmTransition tr1 : outTransitionsTemp){
Object s = tr1.getProperty("conditionText");
if(elString.equals(StrUtils.trim(s.toString()))){
return nextTaskDefinition((ActivityImpl)tr1.getDestination(), activityId, elString);
}
}
}
}else if("userTask".equals(ac.getProperty("type"))){
return ((UserTaskActivityBehavior)((ActivityImpl)ac).getActivityBehavior()).getTaskDefinition();
}else{
logger.debug(ac.getProperty("type"));
}
}
return null;
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
二月份,妈妈在银行存入5000元,存折上应记作
类似吾是公主不是郎的小说。 就是有灵魂互换
龙之谷影,天降雨点怎么回事,方向不相同的,
四肢冰凉,怎样将其变暖和?
形容“广阔”的古诗词有哪些?
梦见朋说我家有摇篮声
汽车的cr-v,ur-v,xr-v各代表什么意思
2017玩dnf6g内存够么
陕西省神木县到山西省祁县城
珍珠泉有哪些景点
唐恬恬什么时候死的
健将游泳馆(伍市店)地址在哪,我要去那里办事
古井玉液50度多少钱盒
用ALT+数字 怎么打出来
大连心悦酒店太恶心!普通房卫生条件差,设施
推荐资讯
vivox9支持录屏功能吗
单书号与丛书号有什么区别?
为什么qq阅读在oppor9plus上不能用语音朗读
“贲门”的读音是什么?
什么是耳机的解析度
存款160万算什么水平
15款现代朗动跑1千公里坐5人后备箱装1百公斤
鸡鸭的图片是啥成语
笔记本128g固态+1tb好还是256g固态好?
天正建筑绝对路径和相对路径的区别
一又2/5-45分之28=多少
喜欢了很久的女生和我说“你都要飞了”是什么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?