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
An abstract base class for operations using criteria evaluation like entry / exit sentries, repetition rule and parent completion rule.
- Author:
- Micha Kiener
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected boolean
only the last evaluation planned on the agenda operation will have this true.protected PlanItemLifeCycleEvent
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
ConstructorsConstructorDescriptionAbstractEvaluationCriteriaOperation
(CommandContext commandContext, String caseInstanceId, CaseInstanceEntity caseInstanceEntity, PlanItemLifeCycleEvent planItemLifeCycleEvent) -
Method Summary
Modifier and TypeMethodDescriptionprotected boolean
allOnPartsSatisfied
(Set<String> satisfiedSentryOnPartIds, List<SentryOnPart> sentryOnParts) Evaluate, if the sentries on-parts are all satisfied.protected SentryPartInstanceEntity
createSentryPartInstanceEntity
(EntityWithSentryPartInstances entityWithSentryPartInstances, Sentry sentry, SentryOnPart sentryOnPart, SentryIfPart sentryIfPart) protected boolean
evaluateAvailableCondition
(CommandContext commandContext, PlanItemInstanceEntity planItemInstanceEntity) protected Criterion
evaluateCriteria
(EntityWithSentryPartInstances entityWithSentryPartInstances, List<Criterion> criteria) protected Criterion
evaluateDependentPlanItemEntryCriteria
(PlanItem entryDependentPlanItem) protected void
protected Criterion
evaluateEntryCriteria
(PlanItemInstanceEntity planItemInstanceEntity, PlanItem planItem) protected Criterion
evaluateExitCriteria
(EntityWithSentryPartInstances entityWithSentryPartInstances, HasExitCriteria hasExitCriteria) 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).boolean
evaluateForCompletion
(PlanItemInstanceEntity planItemInstanceEntity, PlanItemEvaluationResult evaluationResult) Evaluates the given plan item for completion or termination by looking at its state and exit criteria.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.protected boolean
evaluatePlanItemsWithAvailableCondition
(PlanItemInstanceContainer planItemInstanceContainer) protected boolean
protected boolean
evaluateSentryIfPart
(EntityWithSentryPartInstances entityWithSentryPartInstances, Sentry sentry, VariableContainer variableContainer) protected List<PlanItemInstanceEntity>
findChangedEventListenerInstances
(PlanItemInstanceContainer planItemInstanceContainer, String state, boolean conditionValueToChange) protected boolean
hasSameParentInModel
(EntityWithSentryPartInstances entityWithSentryPartInstances, SentryOnPart sentryOnPart) boolean
protected boolean
isStageCompletable
(PlanItemInstanceEntity stagePlanItemInstanceEntity, Stage stage) protected boolean
planItemsShareDirectParentStage
(PlanItem planItemOne, PlanItem planItemTwo) boolean
sentryOnPartMatchesCurrentLifeCycleEvent
(EntityWithSentryPartInstances entityWithSentryPartInstances, SentryOnPart sentryOnPart) void
setEvaluateStagesAndCaseInstanceCompletion
(boolean evaluateStagesAndCaseInstanceCompletion) void
setPlanItemLifeCycleEvent
(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 Details
-
planItemLifeCycleEvent
-
evaluateStagesAndCaseInstanceCompletion
protected boolean evaluateStagesAndCaseInstanceCompletiononly the last evaluation planned on the agenda operation will have this true.
-
-
Constructor Details
-
AbstractEvaluationCriteriaOperation
public AbstractEvaluationCriteriaOperation(CommandContext commandContext, String caseInstanceId, CaseInstanceEntity caseInstanceEntity, PlanItemLifeCycleEvent planItemLifeCycleEvent)
-
-
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 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, 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
-
getPlanItemLifeCycleEvent
-
setPlanItemLifeCycleEvent
-
isEvaluateCaseInstanceCompleted
public boolean isEvaluateCaseInstanceCompleted() -
setEvaluateStagesAndCaseInstanceCompletion
public void setEvaluateStagesAndCaseInstanceCompletion(boolean evaluateStagesAndCaseInstanceCompletion)
-