activiti5.22获取下一个流程节点

在Linux环境下部署Activiti5.22后,遇到通过`getOutgoingTransitions()`方法获取下一个流程节点时出现空指针错误。问题在重启Tomcat后一段时间内会暂时消失。为解决此不稳定问题,作者尝试通过解析配置文件来获取流出节点。代码实现包括读取配置文件并解析以找到下一流程节点。
摘要由CSDN通过智能技术生成

前段时间在linux环境部署activiti5.22工作流后,根据当前运行活动节点获取下一流程节点时总是报空指针。但是当重启tomcat后的一段时间内是正常的。

当时获取下一流程节点的方法是根据activiti中 List<PvmTransition> outTransitions = activityImpl.getOutgoingTransitions(); 这种方法获取的流出节点,但是在linux下一直不稳定,由于自身技术能力原因,并没有去寻找根本问题。后来换一种思路,通过自己解析配置文件获取流出节点。以下是相关代码:

1.首先拿到配置文件:

ProcessDefinition pd = repositoryService.createProcessDefinitionQuery()
				.processDefinitionKey(processDefinitionKey).latestVersion()
				.singleResult();
    	logger.error("===模板相应版本ID:==="+pd.getDeploymentId()+","+pd.getId()+","+pd.getVersion());
    	BpmnModel model =(BpmnModel) repositoryService.getBpmnModel(pd.getId());
    	//获取所有节点
    	Collection<FlowElement> flowElements = model.getMainProcess().getFlowElements();
2.然后根据配置文件获取当前活动节点的流出节点
for(FlowElement e : flowElements) {
			String forEachId=e.getId();//循环节点key
			if (activityId.equals(forEachId)) {//当前节点==循环到的节点
				if(e instanceof org.activiti.bpmn.model.UserTask) {//节点 
					sequenceFlowList=((org.activiti.bpmn.model.UserTask) e).getOutgoingFlows();//流出信息
		    			nextNode=e.getId();
		    			break;
				}
			}
		}
3.循环遍历配置文件根据自定义条件获取到当前活动节点的下一节点。
/**
     * 循环得到下一流程节点
     *@description
     *2017年7月15日上午9:36:39
     *@author 
     *@param flowElements:配置文件
     *@param nowNode:循环后当前需判断的节点
     *@param activityId:流程中当前活动节点
     *@param variables:变量信息
     *@param objects:自定义条件判断信息
     *@return
     *String
     */
private String getNextLoadInfo(Collection<FlowElement> flowElements,String nowNode,String activityId,Map<String, Object> variables,List<Object[]> objects){
    	String nextNode="";//下一节点ID(所需要的节点数据)
    	List<SequenceFlow> sequenceFlowList = new ArrayList<SequenceFlow>();//下一个节点集合
    	String forEachId=""
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值