/// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public BizTalkBaseObjectCollectionEx GetRuleSets()
        {
            TraceManager.SmartTrace.TraceIn();

            BizTalkBaseObjectCollectionEx ruleSets = new BizTalkBaseObjectCollectionEx();

            try
            {
                RuleSetDeploymentDriver rsdd = new RuleSetDeploymentDriver(this.server, this.database);
                RuleStore rs = rsdd.GetRuleStore();

                RuleSetInfoCollection rsic = rs.GetRuleSets(Microsoft.RuleEngine.RuleStore.Filter.All);

                foreach (RuleSetInfo rsi in rsic)
                {
                    RuleArtifact ra = new RuleArtifact();
                    ra.Name          = rsi.Name;
                    ra.MajorVersion  = rsi.MajorRevision;
                    ra.MinorVersion  = rsi.MinorRevision;
                    ra.QualifiedName = ra.Name + "," + ra.MajorVersion + "," + ra.MinorVersion;
                    ruleSets.Add(ra);
                }
            }
            catch (Exception ex)
            {
                TraceManager.SmartTrace.TraceError(ex);
            }

            TraceManager.SmartTrace.TraceOut();
            return(ruleSets);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="filterXml"></param>
        /// <returns></returns>
        internal static BizTalkBaseObjectCollectionEx CreateFilterGroups(string filterXml)
        {
            BizTalkBaseObjectCollectionEx groups = new BizTalkBaseObjectCollectionEx();

            XmlDocument filterDoc = new XmlDocument();

            filterDoc.LoadXml(filterXml);

            foreach (XmlNode groupNode in filterDoc.SelectNodes("./Filter/Group"))
            {
                FilterGroup fg = new FilterGroup();

                foreach (XmlNode statementNode in groupNode.SelectNodes("./Statement"))
                {
                    Filter f = new Filter();
                    f.Property       = statementNode.Attributes.GetNamedItem("Property").Value.ToString();
                    f.FilterOperator = (FilterOperator)Enum.Parse(typeof(FilterOperator), statementNode.Attributes.GetNamedItem("Operator").Value.ToString());

                    XmlNode valueNode = statementNode.Attributes.GetNamedItem("Value");

                    if (valueNode != null)
                    {
                        f.Value = valueNode.Value.ToString();
                    }
                    fg.Filter.Add(f);
                }

                groups.Add(fg);
            }

            return(groups);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="filterXml"></param>
        /// <returns></returns>
        internal static BizTalkBaseObjectCollectionEx CreateFilterGroups(string filterXml)
        {
            BizTalkBaseObjectCollectionEx groups = new BizTalkBaseObjectCollectionEx();

            XmlDocument filterDoc = new XmlDocument();

            //CD 20140407
            try
            {
                filterDoc.LoadXml(filterXml);
            }
            catch (Exception ex)
            {
                throw new ApplicationException(string.Format(
                                                   @"The Filter XML is malformed (quite often caused by the binding being reformatted and putting whitespace in front of the filter XML): 
                      XML='{0}' ",
                                                   filterXml));
            }

            foreach (XmlNode groupNode in filterDoc.SelectNodes("./Filter/Group"))
            {
                FilterGroup fg = new FilterGroup();
                // Added so that it actually adds it to the list - CD 20140408
                fg.Name = "Filter Group";

                foreach (XmlNode statementNode in groupNode.SelectNodes("./Statement"))
                {
                    Filter f = new Filter();
                    f.Property       = statementNode.Attributes.GetNamedItem("Property").Value.ToString();
                    f.FilterOperator = (FilterOperator)Enum.Parse(typeof(FilterOperator), statementNode.Attributes.GetNamedItem("Operator").Value.ToString());
                    // Added so that it actually adds it to the list - CD 20140408
                    f.Name = "Filter";

                    XmlNode valueNode = statementNode.Attributes.GetNamedItem("Value");

                    if (valueNode != null)
                    {
                        f.Value = valueNode.Value.ToString();
                    }
                    // Changed to ignore duplicate name - CD 20140408
                    fg.Filter.Add(f, true);
                }
                // Changed to ignore duplicate name - CD 20140408
                groups.Add(fg, true);
            }

            return(groups);
        }