public void addExitCriteriaToCurrentElement(Criterion exitCriterion) { addExitCriterion(exitCriterion); ListIterator<CmmnElement> iterator = currentCmmnElements.listIterator(currentCmmnElements.size()); HasExitCriteria hasExitCriteria = null; while (hasExitCriteria == null && iterator.hasPrevious()) { CmmnElement cmmnElement = iterator.previous(); if (cmmnElement instanceof HasExitCriteria) { hasExitCriteria = (HasExitCriteria) cmmnElement; } } if (hasExitCriteria == null) { hasExitCriteria = getCurrentCase().getPlanModel(); } if (StringUtils.isEmpty(exitCriterion.getId())) { // An id is expected by the evaluation algorithm, so setting an internal one if there isn't one exitCriterion.setId("exitCriterion_" + (hasExitCriteria.getExitCriteria().size() + 1)); } exitCriterion.setAttachedToRefId(hasExitCriteria.getId()); hasExitCriteria.getExitCriteria().add(exitCriterion); }
public void addEntryCriterionToCurrentElement(Criterion entryCriterion) { addEntryCriterion(entryCriterion); ListIterator<CmmnElement> iterator = currentCmmnElements.listIterator(currentCmmnElements.size()); HasEntryCriteria hasEntryCriteria = null; while (hasEntryCriteria == null && iterator.hasPrevious()) { CmmnElement cmmnElement = iterator.previous(); if (cmmnElement instanceof HasEntryCriteria) { hasEntryCriteria = (HasEntryCriteria) cmmnElement; } } if (hasEntryCriteria != null) { if (StringUtils.isEmpty(entryCriterion.getId())) { // An id is expected by the evaluation algorithm, so setting an internal one if there isn't one entryCriterion.setId("entryCriterion_" + (hasEntryCriteria.getEntryCriteria().size() + 1)); } entryCriterion.setAttachedToRefId(hasEntryCriteria.getId()); hasEntryCriteria.getEntryCriteria().add(entryCriterion); } else { throw new FlowableException("Cannot add an entry criteria " + entryCriterion.getId() + " no matching plan item found to attach it to"); } }