public CbrEvaluator(CbrNodeConfiguration cbrConfig, Func<XrmUri, XDocument> xrmResourceProvider) { this.cbrConfig = cbrConfig; if (cbrConfig.DefaultTarget == null) { throw new InvalidOperationException("The default CBR target is not specified."); } IInclusionResolver xrmInclusionResolver = new XrmInclusionResolver(xrmResourceProvider); branches = new Dictionary<Validator, string>(); foreach (var branch in cbrConfig.Branches) { if (branch.Value == null) { throw new InvalidOperationException(string.Format( "CBR branch '{0}' does not specify the target node.", branch.Key)); } XDocument xSchema = xrmResourceProvider(branch.Key); Validator validator = Validator.Create(xSchema); ValidatorSettings validatorSettings = new ValidatorSettings { InclusionsResolver = xrmInclusionResolver }; branches.Add(validator, branch.Value.Name); } }
public static CbrNodeConfiguration CreateCbr(string name, string testedMessage, NodeConfiguration defaultTarget, params CbrCase[] cases) { var testedMessageSelection = new TokenSelection( string.Format(@"/token/messages/message[@name='{0}']/*[1]", testedMessage)); var result = new CbrNodeConfiguration() { Name = name, TestedSelection = testedMessageSelection, DefaultTarget = defaultTarget }; foreach (CbrCase cbrCase in cases) { result.Branches.Add( new XrmUri(string.Format(@"//item[@name='{0}']", cbrCase.Schematron)), cbrCase.TargetNode); } return result; }
internal CbrNodePropertiesEditor(CbrNodeConfiguration node, NodeSelectionManager nodeSelectionManager) { InitializeComponent(); this.node = node; this.nodeSelectionManager = nodeSelectionManager; uiName.Text = node.Name; if (node.TestedSelection == null) { node.TestedSelection = new TokenSelection(); } uiTestedMessage.Selection = node.TestedSelection; uiDefaultTargetSelector.Initialize(nodeSelectionManager, node, () => node.DefaultTarget, delegate(NodeConfiguration defaultTarget) { node.DefaultTarget = defaultTarget; }); #region Prepare branches uiBranches.Initialize(delegate { XrmUri branchKey = new XrmUri(); node.Branches.Add(branchKey, null); return CreateBranchPresentation(branchKey); }); uiBranches.ItemRemoved += delegate(FrameworkElement uiBranch) { XrmUri branchKey = (XrmUri)uiBranch.Tag; node.Branches.Remove(branchKey); nodeSelectionManager.MessageflowGraphPresenter.RaiseGraphChanged(); }; uiBranches.ItemAdded += delegate(FrameworkElement uiBranch) { nodeSelectionManager.MessageflowGraphPresenter.RaiseGraphChanged(); }; foreach (XrmUri branchKey in node.Branches.Keys) { uiBranches.AddItem(CreateBranchPresentation(branchKey)); } #endregion #region Prepare uiTestXml uiTestXml.SyntaxHighlighting = ICSharpCode.AvalonEdit.Highlighting.HighlightingManager.Instance.GetDefinition("XML"); uiTestXml.Options.ConvertTabsToSpaces = true; uiTestXml.Options.IndentationSize = 4; uiTestXml.ShowLineNumbers = true; #endregion }
/// <summary> /// Initializes a CBR node. /// </summary> /// <param name="configuration">CbrNodeConfiguration is expected /// </param> public override void InitializeCore(NodeConfiguration configuration) { Config = (CbrNodeConfiguration)configuration; evaluator = new CbrEvaluator(Config, ProcessorService.GetXmlResource); }