@Override public PlanItemInstanceEntity getStagePlanItemInstanceEntity() { if (stagePlanItemInstance == null) { stagePlanItemInstance = CommandContextUtil.getPlanItemInstanceEntityManager().findById(stageInstanceId); } return stagePlanItemInstance; }
public static PlanItemInstanceEntityManager getPlanItemInstanceEntityManager() { return getPlanItemInstanceEntityManager(getCommandContext()); }
@Override public List<PlanItemInstance> executeList(CommandContext commandContext) { ensureVariablesInitialized(); return CommandContextUtil.getPlanItemInstanceEntityManager(commandContext).findByCriteria(this); }
protected PlanItemInstanceEntity resolvePlanItemInstance(String planItemInstanceId, CommandContext commandContext) { PlanItemInstanceEntityManager planItemInstanceEntityManager = CommandContextUtil.getPlanItemInstanceEntityManager(commandContext); PlanItemInstanceEntity planItemInstance = planItemInstanceEntityManager.findById(planItemInstanceId); if (planItemInstance == null) { throw new FlowableException("PlanItemInstance could not be found with id " + planItemInstanceId); } return planItemInstance; }
@Override public long executeCount(CommandContext commandContext) { ensureVariablesInitialized(); return CommandContextUtil.getPlanItemInstanceEntityManager(commandContext).countByCriteria(this); }
@Override protected Map<String, List<PlanItemInstance>> resolveStagePlanItemInstances(String caseInstanceId, CommandContext commandContext) { PlanItemInstanceEntityManager planItemInstanceEntityManager = CommandContextUtil.getPlanItemInstanceEntityManager(commandContext); PlanItemInstanceQueryImpl planItemInstanceQuery = new PlanItemInstanceQueryImpl(commandContext); planItemInstanceQuery.caseInstanceId(caseInstanceId).onlyStages(); List<PlanItemInstance> planItemInstances = planItemInstanceEntityManager.findByCriteria(planItemInstanceQuery); Map<String, List<PlanItemInstance>> stagesByPlanItemDefinitionId = planItemInstances.stream() .collect(Collectors.groupingBy(PlanItemInstance::getPlanItemDefinitionId)); return stagesByPlanItemDefinitionId; }
protected List<PlanItemInstanceEntity> resolvePlanItemInstances(String caseInstanceId, String planItemDefinitionId, CommandContext commandContext) { CaseInstanceEntityManager caseInstanceEntityManager = CommandContextUtil.getCaseInstanceEntityManager(commandContext); CaseInstanceEntity caseInstance = caseInstanceEntityManager.findById(caseInstanceId); if (caseInstance == null) { throw new FlowableException("Case instance could not be found with id " + caseInstanceId); } PlanItemInstanceEntityManager planItemInstanceEntityManager = CommandContextUtil.getPlanItemInstanceEntityManager(commandContext); List<PlanItemInstanceEntity> planItemInstances = planItemInstanceEntityManager.findByCaseInstanceId(caseInstanceId); List<PlanItemInstanceEntity> resultPlanItemInstances = planItemInstances.stream() .filter(e -> e.getPlanItemDefinitionId() != null) .filter(e -> e.getPlanItemDefinitionId().equals(planItemDefinitionId)) .filter(e -> e.getEndedTime() == null) .collect(Collectors.toList()); if (resultPlanItemInstances.isEmpty()) { throw new FlowableException("Plan item instance could not be found with plan item definition id " + planItemDefinitionId); } return resultPlanItemInstances; }
@Override public Void execute(CommandContext commandContext) { if (planItemInstanceId == null) { throw new FlowableIllegalArgumentException("Plan item instance id is null"); } PlanItemInstanceEntity planItemInstanceEntity = CommandContextUtil.getPlanItemInstanceEntityManager(commandContext).findById(planItemInstanceId); if (planItemInstanceEntity == null) { throw new FlowableObjectNotFoundException("Cannot find plan item instance for id " + planItemInstanceId, PlanItemInstanceEntity.class); } internalExecute(commandContext, planItemInstanceEntity); return null; }
protected List<PlanItemInstanceEntity> createPlanItemInstances(CommandContext commandContext, List<PlanItem> planItems, String caseDefinitionId, String caseInstanceId, PlanItemInstanceEntity stagePlanItemInstanceEntity, String tenantId) { List<PlanItemInstanceEntity> planItemInstances = new ArrayList<>(); for (PlanItem planItem : planItems) { // In some cases (e.g. cross-border triggering of a sentry, the child plan item instance has been activated already // As such, it doesn't need to be created again (this is the if check here, which goes against the cache) if (stagePlanItemInstanceEntity == null || !childPlanItemInstanceForPlanItemExists(stagePlanItemInstanceEntity, planItem)) { PlanItemInstanceEntity childPlanItemInstance = CommandContextUtil.getPlanItemInstanceEntityManager(commandContext) .createChildPlanItemInstance(planItem, caseDefinitionId, caseInstanceId, stagePlanItemInstanceEntity != null ? stagePlanItemInstanceEntity.getId() : null, tenantId, true); planItemInstances.add(childPlanItemInstance); CommandContextUtil.getAgenda(commandContext).planCreatePlanItemInstanceOperation(childPlanItemInstance); } } return planItemInstances; }
protected void addPlanItemInstanceToParent(CommandContext commandContext, PlanItemInstanceEntity planItemInstanceEntity) { if (planItemInstanceEntity.getStageInstanceId() != null) { PlanItemInstanceEntity stagePlanItemInstanceEntity = CommandContextUtil.getPlanItemInstanceEntityManager(commandContext) .findById(planItemInstanceEntity.getStageInstanceId()); stagePlanItemInstanceEntity.getChildPlanItemInstances().add(planItemInstanceEntity); } else { CaseInstanceEntity caseInstanceEntity = CommandContextUtil.getCaseInstanceEntityManager(commandContext).findById(planItemInstanceEntity.getCaseInstanceId()); caseInstanceEntity.getChildPlanItemInstances().add(planItemInstanceEntity); } }
@Override public void stateChanged(CallbackData callbackData) { /* * The child case instance has the plan item instance id as callback id stored. * When the child case instance is finished, the plan item of the parent case * needs to be triggered. */ if (CaseInstanceState.TERMINATED.equals(callbackData.getNewState()) || CaseInstanceState.COMPLETED.equals(callbackData.getNewState())) { CommandContext commandContext = CommandContextUtil.getCommandContext(); PlanItemInstanceEntity planItemInstanceEntity = CommandContextUtil.getPlanItemInstanceEntityManager(commandContext) .findById(callbackData.getCallbackId()); if (planItemInstanceEntity != null) { CommandContextUtil.getAgenda(commandContext).planTriggerPlanItemInstanceOperation(planItemInstanceEntity); } } }
@Override public Void execute(CommandContext commandContext) { if (planItemInstanceId == null) { throw new FlowableIllegalArgumentException("planItemInstanceId is null"); } if (variableNames == null) { throw new FlowableIllegalArgumentException("variableNames is null"); } PlanItemInstanceEntity planItemInstanceEntity = CommandContextUtil.getPlanItemInstanceEntityManager(commandContext).findById(planItemInstanceId); if (planItemInstanceEntity == null) { throw new FlowableObjectNotFoundException("No plan item instance found for id " + planItemInstanceId, PlanItemInstanceEntity.class); } planItemInstanceEntity.removeVariables(variableNames); return null; }
@Override public Void execute(CommandContext commandContext) { if (planItemInstanceId == null) { throw new FlowableIllegalArgumentException("planItemInstanceId is null"); } if (variableName == null) { throw new FlowableIllegalArgumentException("variableName is null"); } PlanItemInstanceEntity planItemInstanceEntity = CommandContextUtil.getPlanItemInstanceEntityManager(commandContext).findById(planItemInstanceId); if (planItemInstanceEntity == null) { throw new FlowableObjectNotFoundException("No plan item instance found for id " + planItemInstanceId, PlanItemInstanceEntity.class); } planItemInstanceEntity.removeVariable(variableName); return null; }
@Override public Void execute(CommandContext commandContext) { if (planItemInstanceId == null) { throw new FlowableIllegalArgumentException("planItemInstanceId is null"); } if (variables == null) { throw new FlowableIllegalArgumentException("variables is null"); } if (variables.isEmpty()) { throw new FlowableIllegalArgumentException("variables is empty"); } PlanItemInstanceEntity planItemInstanceEntity = CommandContextUtil.getPlanItemInstanceEntityManager(commandContext).findById(planItemInstanceId); if (planItemInstanceEntity == null) { throw new FlowableObjectNotFoundException("No plan item instance found for id " + planItemInstanceId, PlanItemInstanceEntity.class); } planItemInstanceEntity.setVariablesLocal(variables); CommandContextUtil.getAgenda(commandContext).planEvaluateCriteriaOperation(planItemInstanceEntity.getCaseInstanceId()); return null; }
@Override public Void execute(CommandContext commandContext) { if (planItemInstanceId == null) { throw new FlowableIllegalArgumentException("planItemInstanceId is null"); } if (variableName == null) { throw new FlowableIllegalArgumentException("variable name is null"); } PlanItemInstanceEntity planItemInstanceEntity = CommandContextUtil.getPlanItemInstanceEntityManager(commandContext).findById(planItemInstanceId); if (planItemInstanceEntity == null) { throw new FlowableObjectNotFoundException("No plan item instance found for id " + planItemInstanceId, PlanItemInstanceEntity.class); } planItemInstanceEntity.setVariableLocal(variableName, variableValue); CommandContextUtil.getAgenda(commandContext).planEvaluateCriteriaOperation(planItemInstanceEntity.getCaseInstanceId()); return null; }
protected PlanItemInstanceEntity copyAndInsertPlanItemInstance(CommandContext commandContext, PlanItemInstanceEntity planItemInstanceEntityToCopy, boolean addToParent) { PlanItemInstanceEntity planItemInstanceEntity = CommandContextUtil.getPlanItemInstanceEntityManager(commandContext).createChildPlanItemInstance( planItemInstanceEntityToCopy.getPlanItem(), planItemInstanceEntityToCopy.getCaseDefinitionId(), planItemInstanceEntityToCopy.getCaseInstanceId(), planItemInstanceEntityToCopy.getStageInstanceId(), planItemInstanceEntityToCopy.getTenantId(), addToParent); if (hasRepetitionRule(planItemInstanceEntityToCopy)) { int counter = getRepetitionCounter(planItemInstanceEntityToCopy); setRepetitionCounter(planItemInstanceEntity, counter); } return planItemInstanceEntity; }
PlanItemInstanceEntityManager planItemInstanceEntityManager = CommandContextUtil.getPlanItemInstanceEntityManager(commandContext);
protected void completeTask(CommandContext commandContext, TaskEntity task, Map<String, Object> taskVariables) { String planItemInstanceId = task.getSubScopeId(); PlanItemInstanceEntity planItemInstanceEntity = CommandContextUtil.getPlanItemInstanceEntityManager(commandContext).findById(planItemInstanceId); if (planItemInstanceEntity == null) { throw new FlowableException("Could not find plan item instance for task " + taskId); } if (taskVariables != null) { if (localScope) { task.setVariablesLocal(taskVariables); } else { task.setVariables(taskVariables); } } if (transientVariables != null) { if (localScope) { task.setTransientVariablesLocal(transientVariables); } else { task.setTransientVariables(transientVariables); } } CommandContextUtil.getAgenda(commandContext).planTriggerPlanItemInstanceOperation(planItemInstanceEntity); }
protected PlanItemInstanceEntity deleteParentPlanItemInstances(String parentId, List<PlanItemMoveEntry> moveToPlanItemMoveEntries, Set<String> planItemInstanceIdsNotToDelete, CommandContext commandContext) { PlanItemInstanceEntityManager planItemInstanceEntityManager = CommandContextUtil.getPlanItemInstanceEntityManager(commandContext); PlanItemInstanceEntity parentPlanItemInstance = null; if (parentId != null) { parentPlanItemInstance = planItemInstanceEntityManager.findById(parentId); } if (parentPlanItemInstance != null && parentPlanItemInstance.isStage()) { Stage parentStage = (Stage) parentPlanItemInstance.getPlanItem().getPlanItemDefinition(); if (!isStageAncestorOfAnyNewPlanItemDefinitions(parentStage.getId(), moveToPlanItemMoveEntries)) { PlanItemInstanceEntity toDeleteParentExecution = resolveParentPlanItemInstanceToDelete(parentPlanItemInstance, moveToPlanItemMoveEntries); PlanItemInstanceEntity finalDeleteExecution = null; if (toDeleteParentExecution != null) { finalDeleteExecution = toDeleteParentExecution; } else { finalDeleteExecution = parentPlanItemInstance; } parentPlanItemInstance = finalDeleteExecution.getStagePlanItemInstanceEntity(); CmmnEngineConfiguration cmmnEngineConfiguration = CommandContextUtil.getCmmnEngineConfiguration(commandContext); Date currentTime = cmmnEngineConfiguration.getClock().getCurrentTime(); finalDeleteExecution.setEndedTime(currentTime); finalDeleteExecution.setTerminatedTime(currentTime); finalDeleteExecution.setState(PlanItemInstanceState.TERMINATED); } } return parentPlanItemInstance; }
PlanItemInstanceEntity planItemInstanceEntity = null; if (planItemInstanceId != null) { planItemInstanceEntity = CommandContextUtil.getPlanItemInstanceEntityManager(commandContext).findById(planItemInstanceId); if (planItemInstanceEntity == null) { throw new FlowableException("Could not find plan item instance for task " + taskId);