protected void checkAndFireEntryCriteria(List<String> satisfiedSentries) { if (isAvailable() || isNew()) { // do that only, when this child case execution // is available CmmnActivity activity = getActivity(); ensureNotNull( PvmException.class, "Case execution '" + getId() + "': has no current activity.", "activity", activity); List<CmmnSentryDeclaration> criteria = activity.getEntryCriteria(); for (CmmnSentryDeclaration sentryDeclaration : criteria) { if (sentryDeclaration != null && satisfiedSentries.contains(sentryDeclaration.getId())) { if (isAvailable()) { fireEntryCriteria(); } else { entryCriterionSatisfied = true; } break; } } } }
protected CmmnSentryPart createSentryPart(CmmnSentryDeclaration sentryDeclaration, String type) { CmmnSentryPart newSentryPart = newSentryPart(); // set the type newSentryPart.setType(type); // set the case instance and case execution newSentryPart.setCaseInstance(getCaseInstance()); newSentryPart.setCaseExecution(this); // set sentry id String sentryId = sentryDeclaration.getId(); newSentryPart.setSentryId(sentryId); return newSentryPart; }
protected void checkAndFireExitCriteria(List<String> satisfiedSentries) { if (isActive()) { CmmnActivity activity = getActivity(); ensureNotNull( PvmException.class, "Case execution '" + getId() + "': has no current activity.", "activity", activity); // trigger first exitCriteria List<CmmnSentryDeclaration> exitCriteria = activity.getExitCriteria(); for (CmmnSentryDeclaration sentryDeclaration : exitCriteria) { if (sentryDeclaration != null && satisfiedSentries.contains(sentryDeclaration.getId())) { fireExitCriteria(); break; } } } }
protected CmmnSentryPart createOnPart( CmmnSentryDeclaration sentryDeclaration, CmmnOnPartDeclaration onPartDeclaration) { CmmnSentryPart sentryPart = createSentryPart(sentryDeclaration, PLAN_ITEM_ON_PART); // set the standard event String standardEvent = onPartDeclaration.getStandardEvent(); sentryPart.setStandardEvent(standardEvent); // set source case execution CmmnActivity source = onPartDeclaration.getSource(); ensureNotNull( "The source of sentry '" + sentryDeclaration.getId() + "' is null.", "source", source); String sourceActivityId = source.getId(); sentryPart.setSource(sourceActivityId); // TODO: handle also sentryRef!!! (currently not implemented on purpose) return sentryPart; }