/** * Returns all {@link PlanItem}s that are referenced by the onParts of the entry criteria of this {@link PlanItem}. */ public static List<PlanItem> getEntryDependencies(PlanItem planItem) { return getSourcePlanItems(planItem.getEntryCriteria()); }
public static boolean planItemHasOneEntryCriterionDependingOnPlanItem(PlanItem planItemToCheck, PlanItem planItem, String event) { List<Criterion> entryCriteria = planItemToCheck.getEntryCriteria(); if (!entryCriteria.isEmpty()) { for (Criterion criterion : entryCriteria) { if (criterionHasOnPartDependingOnPlanItem(criterion, planItem, event)) { return true; } } } return false; }
protected String evaluateEntryCriteria(PlanItemInstanceEntity planItemInstanceEntity, PlanItem planItem) { List<Criterion> criteria = planItem.getEntryCriteria(); if (criteria != null && !criteria.isEmpty()) { return evaluateCriteria(planItemInstanceEntity, criteria); } return null; }
protected boolean isPlanItemRepeatableOnComplete(PlanItem planItem) { return planItem != null && planItem.getEntryCriteria().isEmpty() && planItem.getItemControl() != null && planItem.getItemControl().getRepetitionRule() != null; }
public static void writeCriteriaElements(PlanItem planItem, XMLStreamWriter xtw) throws Exception { writeEntryCriteriaElements(planItem.getEntryCriteria(), xtw); writeExitCriteriaElements(planItem.getExitCriteria(), xtw); }
processCriteria(planItem.getEntryCriteria(), "EntryCriterion", model, elementArray); processCriteria(planItem.getExitCriteria(), "ExitCriterion", model, elementArray);
/** * Deletes any part instance of a sentry that was satisfied before. */ protected void deleteSentryPartInstances() { SentryPartInstanceEntityManager sentryPartInstanceEntityManager = CommandContextUtil.getSentryPartInstanceEntityManager(commandContext); if (planItemInstanceEntity.getPlanItem() != null && (!planItemInstanceEntity.getPlanItem().getEntryCriteria().isEmpty() || !planItemInstanceEntity.getPlanItem().getExitCriteria().isEmpty())) { if (planItemInstanceEntity.getSatisfiedSentryPartInstances() != null) { for (SentryPartInstanceEntity sentryPartInstanceEntity : planItemInstanceEntity.getSatisfiedSentryPartInstances()) { sentryPartInstanceEntityManager.delete(sentryPartInstanceEntity); } } } }
protected void processElements(List<PlanItem> planItemList, CmmnModel model, ArrayNode elementArray, ArrayNode flowArray, GraphicInfo diagramInfo) { for (PlanItem planItem : planItemList) { ObjectNode elementNode = objectMapper.createObjectNode(); elementNode.put("id", planItem.getId()); elementNode.put("name", planItem.getName()); GraphicInfo graphicInfo = model.getGraphicInfo(planItem.getId()); if (graphicInfo != null) { fillGraphicInfo(elementNode, graphicInfo, true); fillDiagramInfo(graphicInfo, diagramInfo); } PlanItemDefinition planItemDefinition = planItem.getPlanItemDefinition(); String className = planItemDefinition.getClass().getSimpleName(); elementNode.put("type", className); if (planItemDefinition instanceof ServiceTask) { ServiceTask serviceTask = (ServiceTask) planItemDefinition; if (HttpServiceTask.HTTP_TASK.equals(serviceTask.getType())) { elementNode.put("taskType", "http"); } } elementArray.add(elementNode); processCriteria(planItem.getEntryCriteria(), "EntryCriterion", model, elementArray); processCriteria(planItem.getExitCriteria(), "ExitCriterion", model, elementArray); if (planItemDefinition instanceof Stage) { Stage stage = (Stage) planItemDefinition; processElements(stage.getPlanItems(), model, elementArray, flowArray, diagramInfo); } } }
protected static void writePlanItem(PlanItem planItem, CmmnModel model, XMLStreamWriter xtw) throws Exception { createCmmnShape(model, planItem.getId(), xtw); for (Criterion criterion : planItem.getEntryCriteria()) { createCmmnShape(model, criterion.getId(), xtw); } for (Criterion criterion : planItem.getExitCriteria()) { createCmmnShape(model, criterion.getId(), xtw); } }
if (planItem.getEntryCriteria().isEmpty() || satisfiedEntryCriterion != null) { boolean activatePlanItemInstance = true; if (!planItem.getEntryCriteria().isEmpty() && hasRepetitionRule(planItemInstanceEntity)) { boolean isRepeating = evaluateRepetitionRule(planItemInstanceEntity); if (isRepeating) {
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; }
if (!entryDependentPlanItem.getEntryCriteria().isEmpty() && hasRepetitionRule(entryDependentPlanItemInstance)) { if (evaluateRepetitionRule(entryDependentPlanItemInstance)) { createPlanItemInstanceDuplicateForRepetition(entryDependentPlanItemInstance);
if (!planItem.getEntryCriteria().isEmpty()) { resolveEntryCriteria(planItem);
for (Criterion criterion : planItem.getEntryCriteria()) { Sentry sentry = criterion.getSentry(); if (sentry.getOnParts().size() > 0) {