private static void ValidateNode(SequencingNodeReader nodeReader) { if (nodeReader == null) { return; } ValidateCollection(nodeReader.ExitConditionRules); // Issue: not sure how to trap this ValidateCollection(nodeReader.Objectives); // Issue: not sure how to trap this ValidateCollection(nodeReader.PostConditionRules); // Issue: not sure how to trap this ValidateCollection(nodeReader.PreConditionRules); // Issue: not sure how to trap this ValidateCollection(nodeReader.RollupRules); // Issue: not sure how to trap this ValidateProperty(nodeReader.AttemptAbsoluteDurationLimit); // caught BadProperties3 ValidateProperty(nodeReader.AttemptLimit); // caught BadProperties2 ValidateProperty(nodeReader.Choice); // caught BadProperties2 ValidateProperty(nodeReader.ChoiceExit); // caught BadProperties3 ValidateProperty(nodeReader.CompletionSetByContent); // caught BadProperties3 ValidateProperty(nodeReader.ConstrainChoice); // caught BadProperties3 ValidateProperty(nodeReader.Flow); // caught BadProperties2 ValidateProperty(nodeReader.ForwardOnly); // caught BadProperties3 ValidateProperty(nodeReader.MeasureSatisfactionIfActive); // caught BadProperties3 ValidateProperty(nodeReader.ObjectiveMeasureWeight); // caught BadProperties3 ValidateProperty(nodeReader.ObjectiveSetByContent); // caught BadProperties3 ValidateProperty(nodeReader.PreventActivation); // caught BadProperties3 ValidateProperty(nodeReader.RandomizationSelectCount); // caught BadProperties3 ValidateProperty(nodeReader.RandomizationTiming); // caught BadProperties3 ValidateProperty(nodeReader.ReorderChildren); // caught BadProperties3 ValidateProperty(nodeReader.RequiredForCompleted); // caught BadProperties2 ValidateProperty(nodeReader.RequiredForIncomplete); // caught BadProperties3 ValidateProperty(nodeReader.RequiredForNotSatisfied); // caught BadProperties3 ValidateProperty(nodeReader.RequiredForSatisfied); // caught BadProperties3 ValidateProperty(nodeReader.RollupObjectiveSatisfied); // caught BadProperties2 ValidateProperty(nodeReader.RollupProgressCompletion); // caught BadProperties3 ValidateProperty(nodeReader.SelectionTiming); // caught BadProperties3 ValidateProperty(nodeReader.Tracked); // caught BadProperties3 ValidateProperty(nodeReader.UseCurrentAttemptObjectiveInfo); // caught BadProperties3 ValidateProperty(nodeReader.UseCurrentAttemptProgressInfo); // caught BadProperties3 }
/// <summary> /// Builds a sequencing node with the default rollup rules, for use in cases where a rollup rule is not /// specified. /// </summary> /// <returns></returns> static private ReadOnlyCollection<SequencingRollupRuleNodeReader> GetDefaultRollupRules() { if(s_defaultRules == null) { XmlDocument doc = new XmlDocument(); doc.LoadXml( "<sequencing xmlns=\"http://www.imsglobal.org/xsd/imsss\">" + "<rollupRules>" + "<rollupRule childActivitySet=\"all\">" + "<rollupConditions>" + "<rollupCondition condition=\"completed\"/>" + "</rollupConditions>" + "<rollupAction action=\"completed\"/>" + "</rollupRule>" + "<rollupRule childActivitySet=\"all\">" + "<rollupConditions conditionCombination=\"any\">" + "<rollupCondition condition=\"attempted\"/>" + "<rollupCondition condition=\"completed\" operator=\"not\"/>" + "</rollupConditions>" + "<rollupAction action=\"incomplete\"/>" + "</rollupRule>" + "<rollupRule childActivitySet=\"all\">" + "<rollupConditions>" + "<rollupCondition condition=\"satisfied\"/>" + "</rollupConditions>" + "<rollupAction action=\"satisfied\"/>" + "</rollupRule>" + "<rollupRule childActivitySet=\"all\">" + "<rollupConditions conditionCombination=\"any\">" + "<rollupCondition condition=\"attempted\"/>" + "<rollupCondition condition=\"satisfied\" operator=\"not\"/>" + "</rollupConditions>" + "<rollupAction action=\"notSatisfied\"/>" + "</rollupRule>" + "</rollupRules>" + "</sequencing>"); XPathNavigator nav = doc.CreateNavigator(); nav.MoveToChild("sequencing", "http://www.imsglobal.org/xsd/imsss"); SequencingNodeReader seq = new SequencingNodeReader(nav, new ManifestReaderSettings(false, false), new PackageValidatorSettings(ValidationBehavior.Enforce, ValidationBehavior.None, ValidationBehavior.None, ValidationBehavior.None), false, null); s_defaultRules = seq.RollupRules; } return s_defaultRules; }