@Override public void execute(CommandContext commandContext, PlanItemInstanceEntity planItemInstanceEntity) { CaseInstanceHelper caseInstanceHelper = CommandContextUtil.getCaseInstanceHelper(commandContext); CaseInstanceBuilder caseInstanceBuilder = new CaseInstanceBuilderImpl(). caseDefinitionKey(caseRefExpression.getValue(planItemInstanceEntity).toString()); if (StringUtils.isNotEmpty(planItemInstanceEntity.getTenantId())) { caseInstanceBuilder.tenantId(planItemInstanceEntity.getTenantId()); caseInstanceBuilder.overrideCaseDefinitionTenantId(planItemInstanceEntity.getTenantId()); } caseInstanceBuilder.parentId(planItemInstanceEntity.getCaseInstanceId()); if (fallbackToDefaultTenant != null && fallbackToDefaultTenant) { caseInstanceBuilder.fallbackToDefaultTenant(); } CaseInstanceEntity caseInstanceEntity = caseInstanceHelper.startCaseInstance(caseInstanceBuilder); // Bidirectional storing of reference to avoid queries later on caseInstanceEntity.setCallbackType(CallbackTypes.PLAN_ITEM_CHILD_CASE); caseInstanceEntity.setCallbackId(planItemInstanceEntity.getId()); planItemInstanceEntity.setReferenceType(CallbackTypes.PLAN_ITEM_CHILD_CASE); planItemInstanceEntity.setReferenceId(caseInstanceEntity.getId()); if (CommandContextUtil.getCmmnEngineConfiguration(commandContext).isEnableEntityLinks()) { EntityLinkUtil.copyExistingEntityLinks(planItemInstanceEntity.getCaseInstanceId(), caseInstanceEntity.getId(), ScopeTypes.CMMN); EntityLinkUtil.createNewEntityLink(planItemInstanceEntity.getCaseInstanceId(), caseInstanceEntity.getId(), ScopeTypes.CMMN); } if (!evaluateIsBlocking(planItemInstanceEntity)) { CommandContextUtil.getAgenda(commandContext).planCompletePlanItemInstanceOperation((PlanItemInstanceEntity) planItemInstanceEntity); } }
EntityLinkUtil.copyExistingEntityLinks(planItemInstanceEntity.getCaseInstanceId(), processInstanceId, ScopeTypes.BPMN); EntityLinkUtil.createNewEntityLink(planItemInstanceEntity.getCaseInstanceId(), processInstanceId, ScopeTypes.BPMN);
EntityLinkUtil.copyExistingEntityLinks(planItemInstanceEntity.getCaseInstanceId(), taskEntity.getId(), ScopeTypes.TASK); EntityLinkUtil.createNewEntityLink(planItemInstanceEntity.getCaseInstanceId(), taskEntity.getId(), ScopeTypes.TASK);