Class AbstractEvaluationCriteriaOperation

All Implemented Interfaces:
Runnable
Direct Known Subclasses:
EvaluateCriteriaOperation, EvaluateToActivatePlanItemInstanceOperation, EvaluateVariableEventListenersOperation

public abstract class AbstractEvaluationCriteriaOperation extends AbstractCaseInstanceOperation
An abstract base class for operations using criteria evaluation like entry / exit sentries, repetition rule and parent completion rule.
Author:
Micha Kiener
  • Field Details

    • planItemLifeCycleEvent

      protected PlanItemLifeCycleEvent planItemLifeCycleEvent
    • evaluateStagesAndCaseInstanceCompletion

      protected boolean evaluateStagesAndCaseInstanceCompletion
      only the last evaluation planned on the agenda operation will have this true.
  • Constructor Details

  • Method Details

    • evaluateForActivation

      public void evaluateForActivation(PlanItemInstanceEntity planItemInstanceEntity, PlanItemInstanceContainer planItemInstanceContainer, PlanItemEvaluationResult evaluationResult)
      Evaluates the given plan item for activation by looking at its entry criteria, repetition rule and whether the plan item is a special one like an event listener (they occur and will never actually be active).
      Parameters:
      planItemInstanceEntity - the plan item instance to evaluate
      planItemInstanceContainer - the parent container of the plan item instance
      evaluationResult - the object holding evaluation results, will be modified inside this method with gained information
    • evaluateForCompletion

      public boolean evaluateForCompletion(PlanItemInstanceEntity planItemInstanceEntity, PlanItemEvaluationResult evaluationResult)
      Evaluates the given plan item for completion or termination by looking at its state and exit criteria. If it is a stage, it will evaluate its child plan items as well.
      Parameters:
      planItemInstanceEntity - the plan item instance to evaluate for completion or termination
      evaluationResult - the object holding evaluation results, will be modified inside this method with gained information
      Returns:
      true, if further evaluation should be skipped as the plan item can be ignored for further processing, false otherwise
    • evaluatePlanItemsCriteria

      protected boolean evaluatePlanItemsCriteria(PlanItemInstanceContainer planItemInstanceContainer, MigrationContext migrationContext)
      Evaluates the entry/exit criteria for the given plan item instances and plans new operations when its criteria are satisfied.

      Returns true if any (part of a) sentry has fired (and didn't fire before) or if any of the passed plan items are still active.

      Returns false if no sentry changes happened and none of the passed plan item instances are active. This means that the parent of these plan item instances also now can change its state.

    • evaluateDependentPlanItems

      protected void evaluateDependentPlanItems()
    • isStageCompletable

      protected boolean isStageCompletable(PlanItemInstanceEntity stagePlanItemInstanceEntity, Stage stage)
    • evaluatePlanModelComplete

      protected boolean evaluatePlanModelComplete()
    • evaluatePlanItemsWithAvailableCondition

      protected boolean evaluatePlanItemsWithAvailableCondition(PlanItemInstanceContainer planItemInstanceContainer)
    • evaluateEntryCriteria

      protected Criterion evaluateEntryCriteria(PlanItemInstanceEntity planItemInstanceEntity, PlanItem planItem)
    • evaluateExitCriteria

      protected Criterion evaluateExitCriteria(EntityWithSentryPartInstances entityWithSentryPartInstances, HasExitCriteria hasExitCriteria)
    • evaluateCriteria

      protected Criterion evaluateCriteria(EntityWithSentryPartInstances entityWithSentryPartInstances, List<Criterion> criteria)
      Returns:
      Returns the criterion that is satisfied. If none is satisfied, null is returned.
    • evaluateAvailableCondition

      protected boolean evaluateAvailableCondition(CommandContext commandContext, PlanItemInstanceEntity planItemInstanceEntity)
    • allOnPartsSatisfied

      protected boolean allOnPartsSatisfied(Set<String> satisfiedSentryOnPartIds, List<SentryOnPart> sentryOnParts)
      Evaluate, if the sentries on-parts are all satisfied.
      Parameters:
      satisfiedSentryOnPartIds - the set of satisfied sentry on parts, which might also contain on-parts from other sentries on the same plan item.
      sentryOnParts - the list of on-parts of the currently evaluated sentry
      Returns:
      true, if all on parts of the sentry are satisfied, false otherwise
    • sentryOnPartMatchesCurrentLifeCycleEvent

      public boolean sentryOnPartMatchesCurrentLifeCycleEvent(EntityWithSentryPartInstances entityWithSentryPartInstances, SentryOnPart sentryOnPart)
    • hasSameParentInModel

      protected boolean hasSameParentInModel(EntityWithSentryPartInstances entityWithSentryPartInstances, SentryOnPart sentryOnPart)
    • findChangedEventListenerInstances

      protected List<PlanItemInstanceEntity> findChangedEventListenerInstances(PlanItemInstanceContainer planItemInstanceContainer, String state, boolean conditionValueToChange)
    • createSentryPartInstanceEntity

      protected SentryPartInstanceEntity createSentryPartInstanceEntity(EntityWithSentryPartInstances entityWithSentryPartInstances, Sentry sentry, SentryOnPart sentryOnPart, SentryIfPart sentryIfPart)
    • evaluateSentryIfPart

      protected boolean evaluateSentryIfPart(EntityWithSentryPartInstances entityWithSentryPartInstances, Sentry sentry, VariableContainer variableContainer)
    • evaluateDependentPlanItemEntryCriteria

      protected Criterion evaluateDependentPlanItemEntryCriteria(PlanItem entryDependentPlanItem)
    • planItemsShareDirectParentStage

      protected boolean planItemsShareDirectParentStage(PlanItem planItemOne, PlanItem planItemTwo)
    • getPlanItemLifeCycleEvent

      public PlanItemLifeCycleEvent getPlanItemLifeCycleEvent()
    • setPlanItemLifeCycleEvent

      public void setPlanItemLifeCycleEvent(PlanItemLifeCycleEvent planItemLifeCycleEvent)
    • isEvaluateCaseInstanceCompleted

      public boolean isEvaluateCaseInstanceCompleted()
    • setEvaluateStagesAndCaseInstanceCompletion

      public void setEvaluateStagesAndCaseInstanceCompletion(boolean evaluateStagesAndCaseInstanceCompletion)