3

我有一个呼叫活动,用于我的 BPMN 图的不同通道。Call Activity 中有一个任务。是否可以从 Task 中确定 Call Activity 的 Lane?

在这里的图片中看起来像这样:

流程图

通话活动

我想从任务“获取父通道”中分别确定“MyLane1”和“MyLane2”。

4

2 回答 2

5

您可以使用 BPMN 模型 API 来确定引用活动的通道:

ProcessDefinition procDef  = repositoryService.createProcessDefinitionQuery().processDefinitionKey("idOfProcess").singleResult();
BpmnModelInstance bpmnModelInstance = repositoryService.getBpmnModelInstance(procDef.getId());

CallActivity callActivity = null;

Collection<Lane> lanes = bpmnModelInstance.getModelElementsByType(Lane.class);
// iterate the lanes
for (Lane lane : lanes) {
  // iterate the flownodes referenced by the lane:
  for (FlowNode flowNode : lane.getFlowNodeRefs()) {
    if("idOfCallactivity".equals(flowNode.getId())) {
      callActivity = (CallActivity) flowNode;
      break;
    }
  }
}


if(callActivity != null) {
  // work with callactivity
}
于 2014-10-15T14:00:05.347 回答
1

使用内部 API 你也可以做

public void execute(DelegateExecution e) {

  ((ExecutionEntity)e).getProcessInstance()
    .getSuperExecution()
    .getActivityId()
}
于 2014-10-16T15:56:24.973 回答