Class AbstractEvaluationCriteriaOperation
- java.lang.Object
-
- org.flowable.cmmn.engine.impl.agenda.operation.CmmnOperation
-
- org.flowable.cmmn.engine.impl.agenda.operation.AbstractCaseInstanceOperation
-
- org.flowable.cmmn.engine.impl.agenda.operation.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 Summary
Fields Modifier and Type Field Description protected booleanevaluateStagesAndCaseInstanceCompletiononly the last evaluation planned on the agenda operation will have this true.protected PlanItemLifeCycleEventplanItemLifeCycleEvent-
Fields inherited from class org.flowable.cmmn.engine.impl.agenda.operation.AbstractCaseInstanceOperation
caseInstanceEntity, caseInstanceEntityId
-
Fields inherited from class org.flowable.cmmn.engine.impl.agenda.operation.CmmnOperation
commandContext, isNoop
-
-
Constructor Summary
Constructors Constructor Description AbstractEvaluationCriteriaOperation(CommandContext commandContext, String caseInstanceId, CaseInstanceEntity caseInstanceEntity, PlanItemLifeCycleEvent planItemLifeCycleEvent)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected booleanallOnPartsSatisfied(Set<String> satisfiedSentryOnPartIds, List<org.flowable.cmmn.model.SentryOnPart> sentryOnParts)Evaluate, if the sentries on-parts are all satisfied.protected SentryPartInstanceEntitycreateSentryPartInstanceEntity(EntityWithSentryPartInstances entityWithSentryPartInstances, org.flowable.cmmn.model.Sentry sentry, org.flowable.cmmn.model.SentryOnPart sentryOnPart, org.flowable.cmmn.model.SentryIfPart sentryIfPart)protected booleanevaluateAvailableCondition(CommandContext commandContext, PlanItemInstanceEntity planItemInstanceEntity)protected org.flowable.cmmn.model.CriterionevaluateCriteria(EntityWithSentryPartInstances entityWithSentryPartInstances, List<org.flowable.cmmn.model.Criterion> criteria)protected org.flowable.cmmn.model.CriterionevaluateDependentPlanItemEntryCriteria(org.flowable.cmmn.model.PlanItem entryDependentPlanItem)protected voidevaluateDependentPlanItems()protected org.flowable.cmmn.model.CriterionevaluateEntryCriteria(PlanItemInstanceEntity planItemInstanceEntity, org.flowable.cmmn.model.PlanItem planItem)protected org.flowable.cmmn.model.CriterionevaluateExitCriteria(EntityWithSentryPartInstances entityWithSentryPartInstances, org.flowable.cmmn.model.HasExitCriteria hasExitCriteria)voidevaluateForActivation(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).booleanevaluateForCompletion(PlanItemInstanceEntity planItemInstanceEntity, PlanItemEvaluationResult evaluationResult)Evaluates the given plan item for completion or termination by looking at its state and exit criteria.protected booleanevaluatePlanItemsCriteria(PlanItemInstanceContainer planItemInstanceContainer)Evaluates the entry/exit criteria for the given plan item instances and plans new operations when its criteria are satisfied.protected booleanevaluatePlanItemsWithAvailableCondition(PlanItemInstanceContainer planItemInstanceContainer)protected booleanevaluatePlanModelComplete()protected booleanevaluateSentryIfPart(EntityWithSentryPartInstances entityWithSentryPartInstances, org.flowable.cmmn.model.Sentry sentry, VariableContainer variableContainer)protected List<PlanItemInstanceEntity>findChangedEventListenerInstances(PlanItemInstanceContainer planItemInstanceContainer, String state, boolean conditionValueToChange)PlanItemLifeCycleEventgetPlanItemLifeCycleEvent()protected booleanhasSameParentInModel(EntityWithSentryPartInstances entityWithSentryPartInstances, org.flowable.cmmn.model.SentryOnPart sentryOnPart)booleanisEvaluateCaseInstanceCompleted()protected booleanisStageCompletable(PlanItemInstanceEntity stagePlanItemInstanceEntity, org.flowable.cmmn.model.Stage stage)protected booleanplanItemsShareDirectParentStage(org.flowable.cmmn.model.PlanItem planItemOne, org.flowable.cmmn.model.PlanItem planItemTwo)booleansentryOnPartMatchesCurrentLifeCycleEvent(EntityWithSentryPartInstances entityWithSentryPartInstances, org.flowable.cmmn.model.SentryOnPart sentryOnPart)voidsetEvaluateStagesAndCaseInstanceCompletion(boolean evaluateStagesAndCaseInstanceCompletion)voidsetPlanItemLifeCycleEvent(PlanItemLifeCycleEvent planItemLifeCycleEvent)-
Methods inherited from class org.flowable.cmmn.engine.impl.agenda.operation.AbstractCaseInstanceOperation
getCaseInstanceEntity, getCaseInstanceId, run, setCaseInstanceEntity, setCaseInstanceEntityId
-
Methods inherited from class org.flowable.cmmn.engine.impl.agenda.operation.CmmnOperation
childPlanItemInstanceForPlanItemExists, createPlanItemInstanceIfNeeded, createPlanItemInstancesForNewOrReactivatedStage, evaluateReactivationCondition, evaluateReactivationRule, getCaseInstance, getPlanItemCreationOrReactivationType, getPlanModel, getStage, isEventListenerWithAvailableCondition, isNoop, isStage, markAsNoop, setRepetitionCounter
-
-
-
-
Field Detail
-
planItemLifeCycleEvent
protected PlanItemLifeCycleEvent planItemLifeCycleEvent
-
evaluateStagesAndCaseInstanceCompletion
protected boolean evaluateStagesAndCaseInstanceCompletion
only the last evaluation planned on the agenda operation will have this true.
-
-
Constructor Detail
-
AbstractEvaluationCriteriaOperation
public AbstractEvaluationCriteriaOperation(CommandContext commandContext, String caseInstanceId, CaseInstanceEntity caseInstanceEntity, PlanItemLifeCycleEvent planItemLifeCycleEvent)
-
-
Method Detail
-
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 evaluateplanItemInstanceContainer- the parent container of the plan item instanceevaluationResult- 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 terminationevaluationResult- 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)
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, org.flowable.cmmn.model.Stage stage)
-
evaluatePlanModelComplete
protected boolean evaluatePlanModelComplete()
-
evaluatePlanItemsWithAvailableCondition
protected boolean evaluatePlanItemsWithAvailableCondition(PlanItemInstanceContainer planItemInstanceContainer)
-
evaluateEntryCriteria
protected org.flowable.cmmn.model.Criterion evaluateEntryCriteria(PlanItemInstanceEntity planItemInstanceEntity, org.flowable.cmmn.model.PlanItem planItem)
-
evaluateExitCriteria
protected org.flowable.cmmn.model.Criterion evaluateExitCriteria(EntityWithSentryPartInstances entityWithSentryPartInstances, org.flowable.cmmn.model.HasExitCriteria hasExitCriteria)
-
evaluateCriteria
protected org.flowable.cmmn.model.Criterion evaluateCriteria(EntityWithSentryPartInstances entityWithSentryPartInstances, List<org.flowable.cmmn.model.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<org.flowable.cmmn.model.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, org.flowable.cmmn.model.SentryOnPart sentryOnPart)
-
hasSameParentInModel
protected boolean hasSameParentInModel(EntityWithSentryPartInstances entityWithSentryPartInstances, org.flowable.cmmn.model.SentryOnPart sentryOnPart)
-
findChangedEventListenerInstances
protected List<PlanItemInstanceEntity> findChangedEventListenerInstances(PlanItemInstanceContainer planItemInstanceContainer, String state, boolean conditionValueToChange)
-
createSentryPartInstanceEntity
protected SentryPartInstanceEntity createSentryPartInstanceEntity(EntityWithSentryPartInstances entityWithSentryPartInstances, org.flowable.cmmn.model.Sentry sentry, org.flowable.cmmn.model.SentryOnPart sentryOnPart, org.flowable.cmmn.model.SentryIfPart sentryIfPart)
-
evaluateSentryIfPart
protected boolean evaluateSentryIfPart(EntityWithSentryPartInstances entityWithSentryPartInstances, org.flowable.cmmn.model.Sentry sentry, VariableContainer variableContainer)
-
evaluateDependentPlanItemEntryCriteria
protected org.flowable.cmmn.model.Criterion evaluateDependentPlanItemEntryCriteria(org.flowable.cmmn.model.PlanItem entryDependentPlanItem)
-
planItemsShareDirectParentStage
protected boolean planItemsShareDirectParentStage(org.flowable.cmmn.model.PlanItem planItemOne, org.flowable.cmmn.model.PlanItem planItemTwo)
-
getPlanItemLifeCycleEvent
public PlanItemLifeCycleEvent getPlanItemLifeCycleEvent()
-
setPlanItemLifeCycleEvent
public void setPlanItemLifeCycleEvent(PlanItemLifeCycleEvent planItemLifeCycleEvent)
-
isEvaluateCaseInstanceCompleted
public boolean isEvaluateCaseInstanceCompleted()
-
setEvaluateStagesAndCaseInstanceCompletion
public void setEvaluateStagesAndCaseInstanceCompletion(boolean evaluateStagesAndCaseInstanceCompletion)
-
-