Пример #1
0
        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);
            }
        }
Пример #2
0
 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
        }
Пример #4
0
        /// <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);
        }