Activiti 流程中得到 MultiInstanceLoopCharacteristics参数

本文介绍了如何在Activiti流程中获取MultiInstanceLoopCharacteristics参数,通过procDefId一步步解析到bpmnModel,进一步找到主线程process,然后定位到userTask,最终获取到循环特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在流程中得到  MultiInstanceLoopCharacteristics参数


思路为  procDefId->bpmnModel->mainProcess->userTask->getLoop


@Test
	public void name1() {
		
		Task task = processEngine.getTaskService().createTaskQuery()
		.taskAssignee("张三").singleResult();
		String activityId = task.getTaskDefinitionKey();
		ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) processEngine
                .getRepositoryService().getProcessDefinition(
                		task.getProcessDefinitionId());
		List<TaskDefinition> taskDefinitionList = new ArrayList<TaskDefinition>();
		//执行实例
		 ProcessDefinition processDefinition = processEngine
         .getRepositoryService().getProcessDefinition(
         		task.getProcessDefinitionId());
		 
		
		 
		ActivityImpl activityImpl = processDefinitionEntity.findActivity(activityId);
		
		List<PvmTransition> outgoingTransitions = activityImpl.getOutgoingTransitions();
		Map<String, Object> a = activityImpl.getProperties();
		ActivityImpl parentActivity = activityImpl.getParentActivity();
		//得到的参数map,其中map和key值是相同的
		Map<String, String>map = new HashMap<String, String>();
		for (PvmTransition pvmTransition : outgoingTransitions) {
			
			PvmActivity destination = pvmTransition.getDestination();
			String id = destination.getId();
			Map<String, Object> geta = geta(task.getProcessDefinitionId(), id);
			 
			TransitionImpl transitionImpl= activityImpl.findOutgoingTransition(pvmTransition.getId());
			
			Map<String, Object> properties = transitionImpl.getProperties();
			Object object = properties.get("conditionText");
			/*if (object!=null) {
				String string = object.toString();
    			Map<String, String> array = getArray(string);
    			map.putAll(array);
			}*/
		}
		
		
		System.out.println(task.getAssignee());
	}
	
	
	private Map<String, Object> geta(String ProcessDefinitionId,String actId) {
		
		BpmnModel bpmnModel = 
				 processEngine.getRepositoryService()
				 .getBpmnModel(ProcessDefinitionId);
		 Process mainProcess = bpmnModel.getMainProcess();
		 Collection<FlowElement> flowElements = mainProcess.getFlowElements();
		 FlowElement flowElement1 = null;
		 for (FlowElement flowElement : flowElements) {
			if (flowElement.getId().equals(actId)) {
				flowElement1 = flowElement;
			}
		}
		 
		
		 UserTask userTask= (UserTask)flowElement1;
		 MultiInstanceLoopCharacteristics loopCharacteristics = userTask.getLoopCharacteristics();
		 String loopCardinality = loopCharacteristics.getLoopCardinality();
		 String replace = loopCardinality.replace("${", "");
		 String replace2 = replace.replace("}", "");
		 Map<String, Object> map = new HashMap<String, Object>();
		 map.put(replace2, replace2);
		 return map;
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值