activiti流程图下发任务报错,不能正常流转到下一个处理步骤

问题描述:

现场环境,使用activiti创建流程时报错:org.activiti.engine.ActivitiException: Unknown property used in expression: ${userId}
在这里插入图片描述

原因分析:

识别不到变量 ‘userId’,可能是传值时写错了bpmn中流程图对应的userId的值(比如userid),导致识别不到;或者没有userId传的值是null;

解决方案:

先检查下传递值时的字段是否拼写一致,经检查是一致的
图1
那很可能是没有传值成功;经现场同事确认,由于之前的同步功能,部分用户信息没有同步过来,导致该流程查询下一步处理人时查不到数据。重新手动同步对应的用户信息之后,更新环境就不回报错了。
最后再说一句:下发流程时,要先确保下发给下一步的处理人是有数据的,这样可以尽可能的避免这种错误

如果 Activiti 没有启动流程,那么任务也不会被创建和分配给相应的用户或组。因此,你不能获取到还不存在的任务。 如果你想获取流程定义中的任务节点信息,可以使用 Activiti 的 API 获取任务节点的信息,例如任务名称、任务处理人等。你可以通过以下代码获取当前流程定义中所有任务节点的信息: ```java ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery() .processDefinitionKey("processDefinitionKey") .singleResult(); BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinition.getId()); Collection<FlowElement> flowElements = bpmnModel.getMainProcess().getFlowElements(); for (FlowElement flowElement : flowElements) { if (flowElement instanceof UserTask) { UserTask userTask = (UserTask) flowElement; System.out.println("Task Name: " + userTask.getName()); System.out.println("Task Assignee: " + userTask.getAssignee()); System.out.println("Task Candidate Groups: " + userTask.getCandidateGroups()); System.out.println("Task Candidate Users: " + userTask.getCandidateUsers()); } } ``` 上述代码中,我们首先使用 `repositoryService` 对象获取指定流程定义的 `ProcessDefinition` 对象,然后使用 `repositoryService` 对象获取流程定义的 `BpmnModel` 对象,通过 `BpmnModel` 对象可以获取流程定义中的所有节点信息。在循环处理节点信息时,我们只处理 `UserTask` 类型的节点,获取任务的名称、处理人和候选人等信息。 需要注意的是,上述代码只能获取流程定义中的任务节点信息,而不能获取已经创建的任务信息。如果需要获取已经创建的任务信息,可以使用 Activiti 的 API 查询已经创建的任务,例如: ```java List<Task> tasks = taskService.createTaskQuery() .processDefinitionKey("processDefinitionKey") .taskAssignee("user") .list(); for (Task task : tasks) { System.out.println("Task Name: " + task.getName()); System.out.println("Task Assignee: " + task.getAssignee()); System.out.println("Task Candidate Groups: " + task.getCandidateGroups()); System.out.println("Task Candidate Users: " + task.getCandidateUsers()); } ``` 上述代码中,我们使用 `taskService` 对象创建了一个查询任务的查询对象,通过指定任务处理人、流程定义的标识等条件来查询已经创建的任务。在循环处理任务信息时,我们同样可以获取任务的名称、处理人和候选人等信息。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值