protected static List<PlanItem> getSourcePlanItems(List<Criterion> criteria) { List<PlanItem> planItems = new ArrayList<>(); if (!criteria.isEmpty()) { for (Criterion entryCriterion : criteria) { Sentry sentry = entryCriterion.getSentry(); if (sentry.getOnParts() != null && !sentry.getOnParts().isEmpty()) { for (SentryOnPart sentryOnPart : sentry.getOnParts()) { planItems.add(sentryOnPart.getSource()); } } } } return planItems; }
public static boolean criterionHasOnPartDependingOnPlanItem(Criterion criterion, PlanItem planItem, String event) { Sentry sentry = criterion.getSentry(); if (sentry != null) { for (SentryOnPart sentryOnPart : sentry.getOnParts()) { if (sentryOnPart.getSource().getId().equals(planItem.getId()) && sentryOnPart.getStandardEvent().equals(event)) { return true; } } } return false; }
protected String evaluateDependentPlanItemEntryCriteria(PlanItem entryDependentPlanItem) { List<Criterion> entryCriteria = entryDependentPlanItem.getEntryCriteria(); if (!entryCriteria.isEmpty()) { for (Criterion criterion : entryCriteria) { // According to the spec, only the sentries that actually reference the planitem of which the event happens should be evaluated if (CriterionUtil.criterionHasOnPartDependingOnPlanItem(criterion, planItemLifeCycleEvent.getPlanItem(), planItemLifeCycleEvent.getTransition())) { boolean criterionSatisfied = true; List<SentryOnPart> onParts = criterion.getSentry().getOnParts(); for (SentryOnPart onPart : onParts) { if (!sentryOnPartMatchesCurrentLifeCycleEvent(onPart)) { criterionSatisfied = false; } } if (criterion.getSentry().getSentryIfPart() != null) { if (!evaluateSentryIfPart(criterion.getSentry(), caseInstanceEntity)) { // Resolved against case entity as there's no plan item instance yet criterionSatisfied = false; } } if (criterionSatisfied) { return criterion.getId(); } } } } return null; }
for (Criterion criterion : criteria) { Sentry sentry = criterion.getSentry();
Sentry sentry = criterion.getSentry(); if (sentry.getOnParts().size() > 0) { SentryOnPart sentryOnPart = sentry.getOnParts().get(0);