//--------------------------------------------------------------------- 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; }
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!"; }
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(); } }