Exemple #1
0
        //---------------------------------------------------------------------
        private void AddDependencyIfNeeded()
        {
            ManagementPack workflowMP     = m_mpWorkflow.Workflow.GetManagementPack();
            bool           addRefRequired = true;

            if (workflowMP.Id == m_targetMp.Id)
            {
                //The workflow is defined in the same MP as the new override mp, no need to add dependency
                addRefRequired = false;
            }
            else
            {
                foreach (KeyValuePair <string, ManagementPackReference> existingMPRef in m_targetMp.References)
                {
                    if (existingMPRef.Value.KeyToken == workflowMP.KeyToken &&
                        existingMPRef.Value.Version == workflowMP.Version &&
                        existingMPRef.Value.Name == workflowMP.Name)
                    {
                        addRefRequired = false;
                        break;
                    }
                }
            }

            if (addRefRequired)
            {
                ManagementPackReference mpRef = new ManagementPackReference(workflowMP);

                m_targetMp.References.Add(workflowMP.Name, mpRef);
                m_targetMp.AcceptChanges();
            }
        }
        public static void AddManagementPackReference(string strAlias, string strMPName, ref ManagementPack mp, EnterpriseManagementGroup emg)
        {
            ManagementPack          mpReference = GetManagementPackByName(strMPName, emg);
            ManagementPackReference mpr         = new ManagementPackReference(mpReference);

            foreach (KeyValuePair <string, ManagementPackReference> mprExisting in mp.References)
            {
                if (mprExisting.Value.Name == strMPName)
                {
                    return;
                }
            }
            mp.References.Add(strAlias, mpr);
            return;
        }
Exemple #3
0
        private void btnCreate_Click(object sender, EventArgs e)
        {
            EnterpriseManagementGroup emg = new EnterpriseManagementGroup(txtManagementServer.Text);

            ManagementPackEnumeration mpeSRAreaBase = Helper.GetEnumerationByName("ServiceRequestAreaEnum", emg);
            ManagementPackEnumeration mpeCRAreaBase = Helper.GetEnumerationByName("ChangeAreaEnum", emg);
            ManagementPackEnumeration mpeProblemClassificationBase  = Helper.GetEnumerationByName("ProblemClassificationEnum", emg);
            ManagementPackEnumeration mpeIncidentClassificationBase = Helper.GetEnumerationByName("IncidentClassificationEnum", emg);

            IList <ManagementPackEnumeration> listSRAreaEnums       = emg.EntityTypes.GetChildEnumerations(mpeSRAreaBase.Id, TraversalDepth.Recursive);
            IList <ManagementPackEnumeration> listCRAreaEnums       = emg.EntityTypes.GetChildEnumerations(mpeCRAreaBase.Id, TraversalDepth.Recursive);
            IList <ManagementPackEnumeration> listProblemAreaEnums  = emg.EntityTypes.GetChildEnumerations(mpeProblemClassificationBase.Id, TraversalDepth.Recursive);
            IList <ManagementPackEnumeration> listIncidentAreaEnums = emg.EntityTypes.GetChildEnumerations(mpeIncidentClassificationBase.Id, TraversalDepth.Recursive);

            ManagementPackClass mpcServiceRequest = Helper.GetClassByName("System.WorkItem.ServiceRequest", emg);
            ManagementPackClass mpcChangeRequest  = Helper.GetClassByName("System.WorkItem.ChangeRequest", emg);
            ManagementPackClass mpcProblem        = Helper.GetClassByName("System.WorkItem.Problem", emg);
            ManagementPackClass mpcIncident       = Helper.GetClassByName("System.WorkItem.Incident", emg);

            ManagementPack mpServiceRequest = Helper.GetManagementPackByName("System.WorkItem.ServiceRequest.Library", emg);
            ManagementPack mpChangeRequest  = Helper.GetManagementPackByName("System.WorkItem.ChangeRequest.Library", emg);
            ManagementPack mpProblem        = Helper.GetManagementPackByName("System.WorkItem.Problem.Library", emg);
            ManagementPack mpIncident       = Helper.GetManagementPackByName("System.WorkItem.Incident.Library", emg);

            ManagementPackReference mprServiceRequest = new ManagementPackReference(mpServiceRequest);
            ManagementPackReference mprChangeRequest  = new ManagementPackReference(mpChangeRequest);
            ManagementPackReference mprProblem        = new ManagementPackReference(mpProblem);
            ManagementPackReference mprIncident       = new ManagementPackReference(mpIncident);

            ManagementPack mp = Helper.CreateNewManagementPackInMemory("NotificationRules", "1.0.0.0", "NotificationRules", "NOTIFICATION_RULES", emg, true);

            string strMPAliasServiceRequestLibrary = Helper.MakeMPElementSafeName(mpServiceRequest.Name);
            string strMPAliasChangeRequestLibrary  = Helper.MakeMPElementSafeName(mpChangeRequest.Name);
            string strMPAliasProblemLibrary        = Helper.MakeMPElementSafeName(mpProblem.Name);
            string strMPAliasIncidentLibrary       = Helper.MakeMPElementSafeName(mpIncident.Name);

            mp.References.Add(strMPAliasServiceRequestLibrary, mprServiceRequest);
            mp.References.Add(strMPAliasChangeRequestLibrary, mprChangeRequest);
            mp.References.Add(strMPAliasProblemLibrary, mprProblem);
            mp.References.Add(strMPAliasIncidentLibrary, mprIncident);

            ManagementPackObjectTemplate mpotNewIncident          = Helper.GetObjectTemplateByName(txtNewIncidentTemplate.Text, emg);
            ManagementPackObjectTemplate mpotUpdateIncident       = Helper.GetObjectTemplateByName(txtUpdateIncidentTemplate.Text, emg);
            ManagementPackObjectTemplate mpotNewServiceRequest    = Helper.GetObjectTemplateByName(txtNewServiceRequestTemplate.Text, emg);
            ManagementPackObjectTemplate mpotUpdateServiceRequest = Helper.GetObjectTemplateByName(txtUpdateServiceRequestTemplate.Text, emg);
            ManagementPackObjectTemplate mpotNewChangeRequest     = Helper.GetObjectTemplateByName(txtNewChangeRequestTemplate.Text, emg);
            ManagementPackObjectTemplate mpotUpdateChangeRequest  = Helper.GetObjectTemplateByName(txtUpdateChangeRequestTemplate.Text, emg);
            ManagementPackObjectTemplate mpotNewProblem           = Helper.GetObjectTemplateByName(txtNewProblemTemplate.Text, emg);
            ManagementPackObjectTemplate mpotUpdateProblem        = Helper.GetObjectTemplateByName(txtUpdateProblemTemplate.Text, emg);

            EnterpriseManagementObject emoUser = Helper.GetUserFromEmailAddress(txtEmailAddress.Text, emg);

            double dRulesToCreate = listSRAreaEnums.Count + listCRAreaEnums.Count + listProblemAreaEnums.Count + listIncidentAreaEnums.Count;

            pbProgress.Show();
            pbProgress.Value = 0;
            double i = 0;

            ManagementPackProperty mppSRArea = Helper.GetManagementPackClassPropertyByName("System.WorkItem.ServiceRequest", "Area", emg);
            ManagementPackProperty mppCRArea = Helper.GetManagementPackClassPropertyByName("System.WorkItem.ChangeRequest", "Area", emg);
            ManagementPackProperty mppProblemClassification  = Helper.GetManagementPackClassPropertyByName("System.WorkItem.Problem", "Classification", emg);
            ManagementPackProperty mppIncidentClassification = Helper.GetManagementPackClassPropertyByName("System.WorkItem.Incident", "Classification", emg);

            foreach (ManagementPackEnumeration mpeSRArea in listSRAreaEnums)
            {
                i++;
                CreateAddNotificationRule(mpcServiceRequest, mpeSRArea, strMPAliasServiceRequestLibrary, mppSRArea, ref mp, emoUser, mpotNewServiceRequest, emg);
                pbProgress.Value = (int)(i / dRulesToCreate * 100);
            }
            CreateUpdateNotificationRule(mpcServiceRequest, strMPAliasServiceRequestLibrary, mppSRArea, ref mp, emoUser, mpotUpdateServiceRequest, emg);

            foreach (ManagementPackEnumeration mpeCRArea in listCRAreaEnums)
            {
                i++;
                CreateAddNotificationRule(mpcChangeRequest, mpeCRArea, strMPAliasChangeRequestLibrary, mppCRArea, ref mp, emoUser, mpotNewChangeRequest, emg);
                pbProgress.Value = (int)(i / dRulesToCreate * 100);
            }
            CreateUpdateNotificationRule(mpcChangeRequest, strMPAliasChangeRequestLibrary, mppCRArea, ref mp, emoUser, mpotUpdateChangeRequest, emg);


            foreach (ManagementPackEnumeration mpeProblemClassification in listProblemAreaEnums)
            {
                i++;
                CreateAddNotificationRule(mpcProblem, mpeProblemClassification, strMPAliasProblemLibrary, mppProblemClassification, ref mp, emoUser, mpotNewProblem, emg);
                pbProgress.Value = (int)(i / dRulesToCreate * 100);
            }
            CreateUpdateNotificationRule(mpcProblem, strMPAliasProblemLibrary, mppProblemClassification, ref mp, emoUser, mpotUpdateProblem, emg);

            foreach (ManagementPackEnumeration mpeIncidentClassification in listIncidentAreaEnums)
            {
                i++;
                CreateAddNotificationRule(mpcIncident, mpeIncidentClassification, strMPAliasIncidentLibrary, mppIncidentClassification, ref mp, emoUser, mpotNewIncident, emg);
                pbProgress.Value = (int)(i / dRulesToCreate * 100);
            }
            CreateUpdateNotificationRule(mpcIncident, strMPAliasIncidentLibrary, mppIncidentClassification, ref mp, emoUser, mpotUpdateIncident, emg);

            emg.ManagementPacks.ImportManagementPack(mp);
        }
        private void btnCreate_Click(object sender, EventArgs e)
        {
            EnterpriseManagementGroup emg                 = new EnterpriseManagementGroup(txtManagementServer.Text);
            ManagementPackEnumeration mpeSRAreaBase       = Helper.GetEnumerationByName("ServiceRequestAreaEnum", emg);
            ManagementPackEnumeration mpeCRAreaBase       = Helper.GetEnumerationByName("ChangeAreaEnum", emg);
            ManagementPackEnumeration mpeProblemAreaBase  = Helper.GetEnumerationByName("ProblemClassificationEnum", emg);
            ManagementPackEnumeration mpeIncidentAreaBase = Helper.GetEnumerationByName("IncidentClassificationEnum", emg);

            IList <ManagementPackEnumeration> listSRAreaEnums       = emg.EntityTypes.GetChildEnumerations(mpeSRAreaBase.Id, TraversalDepth.Recursive);
            IList <ManagementPackEnumeration> listCRAreaEnums       = emg.EntityTypes.GetChildEnumerations(mpeCRAreaBase.Id, TraversalDepth.Recursive);
            IList <ManagementPackEnumeration> listProblemAreaEnums  = emg.EntityTypes.GetChildEnumerations(mpeProblemAreaBase.Id, TraversalDepth.Recursive);
            IList <ManagementPackEnumeration> listIncidentAreaEnums = emg.EntityTypes.GetChildEnumerations(mpeIncidentAreaBase.Id, TraversalDepth.Recursive);

            ManagementPackClass mpcServiceRequest = Helper.GetClassByName("System.WorkItem.ServiceRequest", emg);
            ManagementPackClass mpcChangeRequest  = Helper.GetClassByName("System.WorkItem.ChangeRequest", emg);
            ManagementPackClass mpcProblem        = Helper.GetClassByName("System.WorkItem.Problem", emg);
            ManagementPackClass mpcIncident       = Helper.GetClassByName("System.WorkItem.Incident", emg);

            ManagementPack mpServiceRequest = Helper.GetManagementPackByName("System.WorkItem.ServiceRequest.Library", emg);
            ManagementPack mpChangeRequest  = Helper.GetManagementPackByName("System.WorkItem.ChangeRequest.Library", emg);
            ManagementPack mpProblem        = Helper.GetManagementPackByName("System.WorkItem.Problem.Library", emg);
            ManagementPack mpIncident       = Helper.GetManagementPackByName("System.WorkItem.Incident.Library", emg);

            ManagementPackReference mprServiceRequest = new ManagementPackReference(mpServiceRequest);
            ManagementPackReference mprChangeRequest  = new ManagementPackReference(mpChangeRequest);
            ManagementPackReference mprProblem        = new ManagementPackReference(mpProblem);
            ManagementPackReference mprIncident       = new ManagementPackReference(mpIncident);

            ManagementPack mp = Helper.CreateNewManagementPackInMemory("Queues", "1.0.0.0", "Queues", "QUEUES", emg, true);

            string strMPAliasServiceRequestLibrary = Helper.MakeMPElementSafeName(mpServiceRequest.Name);
            string strMPAliasChangeRequestLibrary  = Helper.MakeMPElementSafeName(mpChangeRequest.Name);
            string strMPAliasProblemLibrary        = Helper.MakeMPElementSafeName(mpProblem.Name);
            string strMPAliasIncidentLibrary       = Helper.MakeMPElementSafeName(mpIncident.Name);

            mp.References.Add(strMPAliasServiceRequestLibrary, mprServiceRequest);
            mp.References.Add(strMPAliasChangeRequestLibrary, mprChangeRequest);
            mp.References.Add(strMPAliasProblemLibrary, mprProblem);
            mp.References.Add(strMPAliasIncidentLibrary, mprIncident);

            double dQueuesToCreate = listSRAreaEnums.Count + listCRAreaEnums.Count + listProblemAreaEnums.Count + listIncidentAreaEnums.Count;

            pbProgress.Show();
            pbProgress.Value = 0;
            double i = 0;

            foreach (ManagementPackEnumeration mpeSRArea in listSRAreaEnums)
            {
                i++;
                ManagementPackProperty mppArea = Helper.GetManagementPackClassPropertyByName("System.WorkItem.ServiceRequest", "Area", emg);
                CreateQueue(mpcServiceRequest, mpeSRArea, strMPAliasServiceRequestLibrary, mppArea, ref mp, emg);
                pbProgress.Value = (int)(i / dQueuesToCreate * 100);
            }

            foreach (ManagementPackEnumeration mpeCRArea in listCRAreaEnums)
            {
                i++;
                ManagementPackProperty mppArea = Helper.GetManagementPackClassPropertyByName("System.WorkItem.ChangeRequest", "Area", emg);
                CreateQueue(mpcChangeRequest, mpeCRArea, strMPAliasChangeRequestLibrary, mppArea, ref mp, emg);
                pbProgress.Value = (int)(i / dQueuesToCreate * 100);
            }

            foreach (ManagementPackEnumeration mpeProblemClassification in listProblemAreaEnums)
            {
                i++;
                ManagementPackProperty mppClassification = Helper.GetManagementPackClassPropertyByName("System.WorkItem.Problem", "Classification", emg);
                CreateQueue(mpcProblem, mpeProblemClassification, strMPAliasProblemLibrary, mppClassification, ref mp, emg);
                pbProgress.Value = (int)(i / dQueuesToCreate * 100);
            }

            foreach (ManagementPackEnumeration mpeIncidentClassification in listIncidentAreaEnums)
            {
                i++;
                ManagementPackProperty mppClassification = Helper.GetManagementPackClassPropertyByName("System.WorkItem.Incident", "Classification", emg);
                CreateQueue(mpcIncident, mpeIncidentClassification, strMPAliasIncidentLibrary, mppClassification, ref mp, emg);
                pbProgress.Value = (int)(i / dQueuesToCreate * 100);
            }

            lblStatus.Text = "Importing Manamgeent Pack...";
            emg.ManagementPacks.ImportManagementPack(mp);
            lblStatus.Text = "Importing Manamgeent Pack...DONE!";
        }
Exemple #5
0
        private void CreateDataXmlNode(ref XmlDocument xmldoc, Collection <DataAdapter> collDataAdapters)
        {
            XmlElement elData = xmldoc.CreateElement("Data");

            xmldoc.DocumentElement.AppendChild(elData);  //Add as child of "Configuration" document element for now.
            XmlElement elAdapters = xmldoc.CreateElement("Adapters");

            foreach (DataAdapter da in collDataAdapters)
            {
                XmlElement xmlnodeDataAdapter = CreateDataAdapterNode(ref xmldoc, da);
                elAdapters.AppendChild(xmlnodeDataAdapter);
            }

            elData.AppendChild(elAdapters);

            XmlElement elItemsSource = xmldoc.CreateElement("ItemsSource");
            XmlElement elAdvancedListSupportClass = xmldoc.CreateElement("AdvancedListSupportClass");

            //AdvancedListSupportClass attributes
            XmlAttribute attrXmlnsALSC           = xmldoc.CreateAttribute("xmlns");
            XmlAttribute attrXmlnsAvALSC         = xmldoc.CreateAttribute("xmlns:av");
            XmlAttribute attrXmlnsXALSC          = xmldoc.CreateAttribute("xmlns:x");
            XmlAttribute attrXmlnsSALSC          = xmldoc.CreateAttribute("xmlns:s");
            XmlAttribute attrDataTypeName        = xmldoc.CreateAttribute("DataTypeName");
            XmlAttribute attrAdapterName         = xmldoc.CreateAttribute("AdapterName");
            XmlAttribute attrFullUpdateAdapter   = xmldoc.CreateAttribute("FullUpdateAdapter");
            XmlAttribute attrDataSource          = xmldoc.CreateAttribute("DataSource");
            XmlAttribute attrFullUpdateFrequency = xmldoc.CreateAttribute("FullUpdateFrequency");
            XmlAttribute attrStreaming           = xmldoc.CreateAttribute("Streaming");
            XmlAttribute attrIsRecurring         = xmldoc.CreateAttribute("IsRecurring");
            XmlAttribute attrRecurrenceFrequency = xmldoc.CreateAttribute("RecurrenceFrequency");

            //TODO: Parameterize these someday
            attrXmlnsALSC.Value           = "clr-namespace:Microsoft.EnterpriseManagement.UI.ViewFramework;assembly=Microsoft.EnterpriseManagement.UI.ViewFramework";
            attrXmlnsAvALSC.Value         = "http://schemas.microsoft.com/winfx/2006/xaml/presentation";
            attrXmlnsXALSC.Value          = "http://schemas.microsoft.com/winfx/2006/xaml";
            attrXmlnsSALSC.Value          = "clr-namespace:System;assembly=mscorlib";
            attrDataTypeName.Value        = "";
            attrAdapterName.Value         = "viewframework://Adapters/AdvancedList";
            attrDataSource.Value          = "mom:ManagementGroup";
            attrFullUpdateFrequency.Value = "1";
            attrStreaming.Value           = "true";
            attrIsRecurring.Value         = "true";
            attrRecurrenceFrequency.Value = "{x:Static s:Int32.MaxValue}";
            if (_Projection != null)
            {
                attrFullUpdateAdapter.Value = "dataportal:EnterpriseManagementObjectProjectionAdapter";
            }
            else
            {
                attrFullUpdateAdapter.Value = "dataportal:EnterpriseManagementObjectAdapter";
            }

            elAdvancedListSupportClass.Attributes.Append(attrXmlnsALSC);
            elAdvancedListSupportClass.Attributes.Append(attrXmlnsAvALSC);
            elAdvancedListSupportClass.Attributes.Append(attrXmlnsSALSC);
            elAdvancedListSupportClass.Attributes.Append(attrXmlnsXALSC);
            elAdvancedListSupportClass.Attributes.Append(attrDataTypeName);
            elAdvancedListSupportClass.Attributes.Append(attrAdapterName);
            elAdvancedListSupportClass.Attributes.Append(attrFullUpdateAdapter);
            elAdvancedListSupportClass.Attributes.Append(attrDataSource);
            elAdvancedListSupportClass.Attributes.Append(attrFullUpdateFrequency);
            elAdvancedListSupportClass.Attributes.Append(attrStreaming);
            elAdvancedListSupportClass.Attributes.Append(attrIsRecurring);
            elAdvancedListSupportClass.Attributes.Append(attrRecurrenceFrequency);

            XmlElement elAdvancedListSupportClassParameters = xmldoc.CreateElement("AdvancedListSupportClass.Parameters");

            XmlElement elQueryParameter = xmldoc.CreateElement("QueryParameter");

            XmlAttribute attrParameter = xmldoc.CreateAttribute("Parameter");
            XmlAttribute attrValue     = xmldoc.CreateAttribute("Value");

            ManagementPackElement element;

            if (_Projection != null)
            {
                attrParameter.Value = "TypeProjectionId";
                element             = _Projection;
            }
            else
            {
                attrParameter.Value = "ManagementPackClassId";
                element             = _Class;
            }

            ManagementPack elementMP = element.GetManagementPack();

            string strMPAlias = string.Empty;

            if (elementMP != _ManagementPack)
            {
                //If the class/type projection is not in the same management pack as where we are creating the view then try to either use an existing MP reference or create a new one
                foreach (KeyValuePair <string, ManagementPackReference> mpref in _ManagementPack.References)
                {
                    if (mpref.Value.Id == elementMP.Id)
                    {
                        //Found an existing reference so just use that alias
                        strMPAlias = mpref.Key;
                        break;
                    }
                }

                if (strMPAlias == string.Empty)
                {
                    //We didnt find the MP reference in the set of existing references, let's create one..
                    strMPAlias = elementMP.Name.Replace(".", "_");
                    ManagementPackReference mpref = new ManagementPackReference(elementMP);
                    _ManagementPack.References.Add(strMPAlias, mpref);
                }
            }

            if (strMPAlias == string.Empty)
            {
                attrValue.Value = String.Format("$MPElement[Name='{0}']$", element.Name);
            }
            else
            {
                attrValue.Value = String.Format("$MPElement[Name='{0}!{1}']$", strMPAlias, element.Name);
            }

            elQueryParameter.Attributes.Append(attrParameter);
            elQueryParameter.Attributes.Append(attrValue);

            elAdvancedListSupportClassParameters.AppendChild(elQueryParameter);

            elAdvancedListSupportClass.AppendChild(elAdvancedListSupportClassParameters);

            elItemsSource.AppendChild(elAdvancedListSupportClass);

            elData.AppendChild(elItemsSource);

            XmlDocumentFragment fragCriteria = xmldoc.CreateDocumentFragment();

            fragCriteria.InnerXml = _Criteria;

            elData.AppendChild(fragCriteria);
        }
        //---------------------------------------------------------------------
        private void AddDependencyIfNeeded()
        {
            ManagementPack  workflowMP      = m_mpWorkflow.Workflow.GetManagementPack();
            bool            addRefRequired  = true;

            if (workflowMP.Id == m_targetMp.Id)
            {
                //The workflow is defined in the same MP as the new override mp, no need to add dependency
                addRefRequired = false;
            }
            else
            {
                foreach (KeyValuePair<string, ManagementPackReference> existingMPRef in m_targetMp.References)
                {
                    if (existingMPRef.Value.KeyToken    == workflowMP.KeyToken &&
                        existingMPRef.Value.Version     == workflowMP.Version &&
                        existingMPRef.Value.Name        == workflowMP.Name)
                    {
                        addRefRequired = false;
                        break;
                    }
                }
            }

            if (addRefRequired)
            {
                ManagementPackReference mpRef = new ManagementPackReference(workflowMP);

                m_targetMp.References.Add(workflowMP.Name, mpRef);
                m_targetMp.AcceptChanges();
            }
        }