protected static void writeItemControlContent(PlanItemControl planItemControl, XMLStreamWriter xtw) throws Exception { writeCompletionNeutralRule(planItemControl.getCompletionNeutralRule(), xtw); writeRepetitionRule(planItemControl.getRepetitionRule(), xtw); writeRequiredRule(planItemControl.getRequiredRule(), xtw); writeManualActivationRule(planItemControl.getManualActivationRule(), xtw); }
@Override protected CmmnElement convert(XMLStreamReader xtr, ConversionHelper conversionHelper) { PlanItemControl planItemControl = new PlanItemControl(); CmmnElement currentCmmnElement = conversionHelper.getCurrentCmmnElement(); if (currentCmmnElement instanceof PlanItem) { ((PlanItem) currentCmmnElement).setItemControl(planItemControl); } return planItemControl; }
protected boolean hasRepetitionRule(PlanItem planItem) { return planItem.getItemControl() != null && planItem.getItemControl().getRepetitionRule() != null; }
protected boolean isRequiredPlanItemInstance(PlanItemInstanceEntity planItemInstanceEntity) { PlanItemControl planItemControl = planItemInstanceEntity.getPlanItem().getItemControl(); if (planItemControl != null && planItemControl.getRequiredRule() != null) { boolean isRequired = true; // Having a required rule means required by default, unless the condition says otherwise String requiredCondition = planItemControl.getRequiredRule().getCondition(); if (StringUtils.isNotEmpty(requiredCondition)) { isRequired = evaluateBooleanExpression(commandContext, planItemInstanceEntity, requiredCondition); } return isRequired; } return false; }
protected boolean isCompletionNeutralPlanItemInstance(PlanItemInstanceEntity planItemInstanceEntity) { PlanItemControl planItemControl = planItemInstanceEntity.getPlanItem().getItemControl(); if (planItemControl != null && planItemControl.getCompletionNeutralRule() != null) { boolean isCompletionNeutral = true; // Having a required rule means required by default, unless the condition says otherwise String condition = planItemControl.getCompletionNeutralRule().getCondition(); if (StringUtils.isNotEmpty(condition)) { isCompletionNeutral = evaluateBooleanExpression(commandContext, planItemInstanceEntity, condition); } return isCompletionNeutral; } return false; }
protected boolean evaluateManualActivationRule() { PlanItemControl planItemControl = planItemInstanceEntity.getPlanItem().getItemControl(); if (planItemControl != null && planItemControl.getManualActivationRule() != null) { ManualActivationRule manualActivationRule = planItemControl.getManualActivationRule(); if (StringUtils.isNotEmpty(manualActivationRule.getCondition())) { return evaluateBooleanExpression(commandContext, planItemInstanceEntity, manualActivationRule.getCondition()); } else { return true; // Having a manual activation rule without condition, defaults to true. } } return false; }
@Override protected CmmnElement convert(XMLStreamReader xtr, ConversionHelper conversionHelper) { if (conversionHelper.getCurrentCmmnElement() instanceof PlanItemControl) { ManualActivationRule manualActivationRule = new ManualActivationRule(); manualActivationRule.setName(xtr.getAttributeValue(null, CmmnXmlConstants.ATTRIBUTE_NAME)); PlanItemControl planItemControl = (PlanItemControl) conversionHelper.getCurrentCmmnElement(); planItemControl.setManualActivationRule(manualActivationRule); return manualActivationRule; } return null; }
@Override protected CmmnElement convert(XMLStreamReader xtr, ConversionHelper conversionHelper) { if (conversionHelper.getCurrentCmmnElement() instanceof PlanItemControl) { RequiredRule requiredRule = new RequiredRule(); requiredRule.setName(xtr.getAttributeValue(null, CmmnXmlConstants.ATTRIBUTE_NAME)); PlanItemControl planItemControl = (PlanItemControl) conversionHelper.getCurrentCmmnElement(); planItemControl.setRequiredRule(requiredRule); return requiredRule; } return null; }
planItemControl.setCompletionNeutralRule(completionNeutralRule);
@Override protected CmmnElement convert(XMLStreamReader xtr, ConversionHelper conversionHelper) { if (conversionHelper.getCurrentCmmnElement() instanceof PlanItemControl) { RepetitionRule repetitionRule = new RepetitionRule(); repetitionRule.setName(xtr.getAttributeValue(null, CmmnXmlConstants.ATTRIBUTE_NAME)); repetitionRule.setRepetitionCounterVariableName(xtr.getAttributeValue(CmmnXmlConstants.FLOWABLE_EXTENSIONS_NAMESPACE, CmmnXmlConstants.ATTRIBUTE_REPETITION_COUNTER_VARIABLE_NAME)); PlanItemControl planItemControl = (PlanItemControl) conversionHelper.getCurrentCmmnElement(); planItemControl.setRepetitionRule(repetitionRule); return repetitionRule; } return null; }
protected boolean isPlanItemRepeatableOnComplete(PlanItem planItem) { return planItem != null && planItem.getEntryCriteria().isEmpty() && planItem.getItemControl() != null && planItem.getItemControl().getRepetitionRule() != null; }
protected String getCounterVariable(PlanItemInstanceEntity repeatingPlanItemInstanceEntity) { String repetitionCounterVariableName = repeatingPlanItemInstanceEntity.getPlanItem().getItemControl().getRepetitionRule().getRepetitionCounterVariableName(); return repetitionCounterVariableName; }
@Override protected CmmnElement convert(XMLStreamReader xtr, ConversionHelper conversionHelper) { PlanItemControl planItemControl = new PlanItemControl(); CmmnElement currentCmmnElement = conversionHelper.getCurrentCmmnElement(); if (currentCmmnElement instanceof PlanItemDefinition) { ((PlanItemDefinition) currentCmmnElement).setDefaultControl(planItemControl); } return planItemControl; } }
protected boolean evaluateRepetitionRule(PlanItemInstanceEntity planItemInstanceEntity) { if (hasRepetitionRule(planItemInstanceEntity)) { String repetitionCondition = planItemInstanceEntity.getPlanItem().getItemControl().getRepetitionRule().getCondition(); return evaluateRepetitionRule(planItemInstanceEntity, repetitionCondition); } return false; }
|| (hasRepetitionRule(entryDependentPlanItem) && evaluateRepetitionRule(caseInstanceEntity, entryDependentPlanItem.getItemControl().getRepetitionRule().getCondition())))) { // (terminated state) the plan item instance should not have been created anytime before