flowable中获取ActivityId
时间: 2024-03-15 12:19:28 浏览: 249
在 Flowable 中,可以通过 `execution.getCurrentActivityId()` 方法获取当前执行流程的 Activity Id。
例如,在执行的 Java ServiceTask 中,可以通过以下代码获取当前 Activity Id:
```java
public class MyServiceTask implements JavaDelegate {
@Override
public void execute(DelegateExecution execution) {
String currentActivityId = execution.getCurrentActivityId();
// do something
}
}
```
在执行的表达式中,也可以使用 `${execution.getCurrentActivityId()}` 获取当前 Activity Id,例如:
```
${execution.getCurrentActivityId() == 'myUserTask'}
```
相关问题
flowable java获取流程节点属性
在Flowable中,可以通过流程定义对象(ProcessDefinition)和流程实例对象(ProcessInstance)来获取流程节点的属性。具体步骤如下:
1.获取流程定义对象:可以通过以下代码获取流程定义对象。
```
RepositoryService repositoryService = processEngine.getRepositoryService();
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
.processDefinitionKey(processDefinitionKey)
.singleResult();
```
其中,processDefinitionKey是流程定义的key。
2.获取流程节点属性:可以通过以下代码获取流程节点属性。
```
BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinition.getId());
FlowElement flowElement = bpmnModel.getFlowElement(activityId);
```
其中,activityId是节点的ID,flowElement即为该节点的元素对象。
3.获取节点属性值:可以通过以下代码获取节点属性的值。
```
String value = flowElement.getAttributeValue(attributeName);
```
其中,attributeName为属性名称。需要注意的是,不同类型的节点具有不同的属性,需要根据具体节点类型来获取相应的属性。例如,UserTask节点有assignee、candidateUsers、candidateGroups等属性,ServiceTask节点有class、expression、delegateExpression等属性。
flowable如何获取数据库中所有未完成的流程实例并获取这些任务的所在节点
可以使用Flowable的API来获取数据库中所有未完成的流程实例以及这些任务所在的节点。
你可以使用以下代码来获取所有未完成的流程实例:
```java
List<ProcessInstance> processInstances = runtimeService.createProcessInstanceQuery().list();
```
接下来,你可以遍历所有流程实例,并使用以下代码来获取每个流程实例中当前活动任务所在的节点:
```java
for (ProcessInstance processInstance : processInstances) {
List<Execution> executions = runtimeService.createExecutionQuery().processInstanceId(processInstance.getId()).list();
for (Execution execution : executions) {
if (execution instanceof ActivityExecution) {
String activityId = ((ActivityExecution) execution).getActivityId();
String activityName = ((ActivityExecution) execution).getCurrentActivityName();
// todo: 处理节点信息
}
}
}
```
在这段代码中,我们首先使用流程实例的ID查询所有与其相关的执行对象,然后遍历所有执行对象来获取当前活动任务所在的节点。你可以根据自己的需求来处理节点信息。
阅读全文