Postings are provided "AS IS" with no warranties, and confers no rights.

 

Pessoal,

 

Este artigo inicia uma séria de conteúdo que irei publicar aqui no blog, conteúdo este de autoria da comunidade, com a ajuda de colaboradores externos, ou seja, teremos aqui opiniões de especialistas em System Center, começando por este ótimo post abaixo, aproveitem.


Autor deste artigo:

 

Claudio Merola

Claudio Merola: Atua na Skip Services, é certificado em MCSA Windows Server 2003, MCITP Enterprise, MCSE Private Cloud, MCTS SQL Server 2005, MCITP Support Desktop e MCTS Small Business. Já foi certificado Altiris Engineer e LanDesk Engineer e atualmente trabalha como especialista em System Center.

 

 

Muitas vezes precisamos que os formulários do System Center Service Manager tenham um pouco mais de recursos do que os disponíveis no Authoring Tool, nesses casos o indicado é utilizar o Visual Studio para criar uma DLL para usarmos como Custom Form dentro do próprio Authoring Tool.

 

Esses procedimentos já foram escritos pelo Patrik Sundqvist, mas o post é um pouco mais voltado para quem já está habituado com programação, então alguns detalhes acabam faltando, meu objetivo é descrever um passo-a-passo para que qualquer um consiga criar seu próprio custom form em DLL que contenha as abas padrões de Related Items e History para utilizar no Service Manager. Nesse exemplo iremos criar um template com foco em Itens de Configuração, Porém podemos usar a mesma lógica para criar templates de Work Items também.

 

 

1. Abra o Visual Studio e crie um novo projeto, selecione “WPF User Control Library”


SCSM 2012


2. Devemos criar um novo User Control. Coloque o nome que desejar Ex: CITemplate


SCSM 2012


SCSM 2012



3. Em "Solution Explorer" delete o UserControl1 que é criado automaticamente.


SCSM 2012


4. Vamos adicionar as seguintes referências:

 

 

 

Microsoft.EnterpriseManagement.UI.Controls.dll

Microsoft.EnterpriseManagement.UI.SMControls.dll

Microsoft.EnterpriseManagement.ServiceManager.Application.Common.dll

Microsoft.EnterpriseManagement.ServiceManager.SharedResources.dll

 

 

SCSM 2012 


Essas DLLs podem ser encontradas dentro da pasta do "System Center 2012\Service Manager\" a última DLL está presente no diretório: "Authoring Tool\PackagesToLoad"

 

SCSM 2012


A pasta References deve ficar assim:

 

SCSM 2012

 

5. Agora vamos alterar o arquivo "NomeDoSeuUserControl".xaml:

 

Em "d:DesignHeight="300" d:DesignWidth="300">" você define o tamanho do seu Form, no exemplo o tamanho foi alterado para 600 x 600

 

SCSM 2012

 

6. Ainda no arquivo “.xaml”. No canto esquerdo, vá em Toolbox e arraste TabControl para o form em branco.

 

SCSM 2012


7. Em TabControl altere o  HorizontalAlignment e VerticalAlignment para "Stretch". Remova os itens "Width" e "Height" e mude as Margins para 0.

 

SCSM 2012


Feito isso. Altere o Header e Name para "Geral" (ou General se preferir) e "TabGeral"

 

8. Adicionar a seguinte linha nos "xmlns":

 

 

 

xmlns:smcontrols="clr-namespace:Microsoft.EnterpriseManagement.UI.WpfControls;assembly=

Microsoft.EnterpriseManagement.UI.SMControls"

 

 

SCSM 2012

 

9. Agora para adicionar as 2 Abas "Related Items" e "History", podemos arrastar "Tab Items" para o Tab Control ou podemos adicionar diretamente as linhas no código dentro de TabControl, eu prefiro adicionar as linhas no código:

 

 

 

<TabControl HorizontalAlignment="Stretch" VerticalAlignment="Stretch">

    <TabItem Header="General" x:Name="tabItemGeneral">

        <Grid />

    </TabItem>

    <TabItem Header="Related Items" x:Name="tabItemRelItems">

    </TabItem>

    <TabItem Header="History" x:Name="tabItemHistory">

        <smcontrols:HistoryTab></smcontrols:HistoryTab>

  </TabItem>

</TabControl>

 

 

 

SCSM 2012


Provavelmente alguns erros vão ser diagnosticados pelo Visual Studio. Ignore, ainda precisamos mexer no arquivo C#.

 

 

10. Abra o arquivo "NomeDoSeuUserControl".xaml.cs. Esse arquivo irá conter as classes e referencias com o arquivo XAML. Como o objetivo desse post não é focar no desenvolvimento. Basicamente substitua o conteúdo do arquivo por esse:

 

 

 

using Microsoft.EnterpriseManagement.ServiceManager.Application.Common;

 

namespace MerolaProject /// Nome Referenciado no XAML

{

    /// < summary>

    /// Interaction logic for MerolaTemplate.xaml

    /// < /summary>

    public partial class MerolaTemplate //// Nome que será exibido no Authoring Tool

    {

        private RelatedItemsPane _relatedItemsPane;

 

        public MerolaTemplate() //// Alterar aqui também

        {

            InitializeComponent();

 

            _relatedItemsPane = new RelatedItemsPane(new ConfigItemRelatedItemsConfiguration());

            tabItemRelItems.Content = _relatedItemsPane;

        }

    }

}

 

 

 

SCSM 2012


Dois nomes presentes no documento precisam ser alterados. O NameSpace identifica o nome que esta referenciado no arquivo XAML, portanto caso você altere aqui, precisará alterar lá também. O "Public partial class" identifica o nome da classe, é basicamente o nome que irá aparecer no Authoring Tool quando você apontar a DLL.

 

SCSM 2012

 

11. Qualquer teste, alteração ou complemento no template como adicionar um campo expander ou grid, deverá ser feito agora

 

SCSM 2012

 

12. Agora vamos construir o projeto (build) mas antes é necessário alterar o modo de "Debug" para "Release" (O porquê desse passo ficará claro mais pra frente). Para alterar vá em: BUILD > CONFIGURATION MANAGER. E altere para "Release"

 

SCSM 2012

 

13. Agora vá em BUILD > BUILD SOLUTION. Se todos os passos foram bem sucedidos não deverá apresentar nenhum erro.

 

SCSM 2012

 

14. Agora navegue até a pasta do projeto em: bin > Release e lá estará sua DLL pronta para ser referenciada no Authoring Tool

 

SCSM 2012

SCSM 2012

 

Uma vez que você tenha criado sua nova classe com seu novo custom form. Você precisará alterar o arquivo XML gravado pelo Authoring Tool para habilitar (basicamente a aba Related Items) para que tudo funcione corretamente com o CI ou Work Item. Seguem os procedimento pós criação do arquivo XML.

 

15. Basicamente você precisará adicionar as seguintes referências no começo do XML. Mesmo que tenhamos feito o DLL focada em CIs, essas alterações também contemplam Work Items:

 

 

 

      <Reference Alias="WorkItem">

        <ID>System.WorkItem.Library</ID>

        <Version>7.5.1561.0</Version>

        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>

      </Reference>

      <Reference Alias="ConfigurationManagement">

        <ID>ServiceManager.ConfigurationManagement.Library</ID>

        <Version>7.5.1561.0</Version>

        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>

      </Reference>

      <Reference Alias="SupportingItem">

        <ID>System.SupportingItem.Library</ID>

        <Version>7.5.1561.0</Version>

        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>

      </Reference>

      <Reference Alias="CoreKnowledge">

        <ID>System.Knowledge.Library</ID>

        <Version>7.5.1561.0</Version>

        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>

      </Reference>

 

 

 

Provavelmente algumas das referências já estarão lá. Verifique se o Alias está correto.

 

16. Em TypeProjections no meio do arquivo XML, adicione essas linhas para cada formulário criado:

 

 

 

<TypeProjections>

        <TypeProjection ID="MyConfigItem.Projection" Accessibility="Public" Type="MyConfigItem">

          <Component Path="$Context/Path[Relationship='WorkItem!System.WorkItemRelatesToConfigItem' SeedRole='Target']$" Alias="ImpactedWorkItem" />

          <Component Path="$Context/Path[Relationship='WorkItem!System.WorkItemAboutConfigItem' SeedRole='Target']$" Alias="RelatedWorkItem" />

          <Component Path="$Context/Path[Relationship='SupportingItem!System.ConfigItemHasFileAttachment']$" Alias="FileAttachment" />

          <Component Path="$Context/Path[Relationship='System!System.ConfigItemRelatesToConfigItem']$" Alias="RelatedConfigItem" />

          <Component Path="$Context/Path[Relationship='System!System.ConfigItemRelatesToConfigItem' SeedRole='Target']$" Alias="RelatedConfigItemSource" />

          <Component Path="$Context/Path[Relationship='CoreKnowledge!System.EntityLinksToKnowledgeDocument']$" Alias="RelatedKnowledgeArticles" />

</TypeProjection>

 

 

 

SCSM 2012


Feito isso seu arquivo XML já pode ser importado normalmente na console do System Center 2012 Service Manager. Parece um pouco trabalhoso para poder simplesmente criar um template DLL que já contenha as 2 abas de Related itens e History. Mas com o Visual Studio, temos a liberdade para colocar muitas outras coisas.

 

Obrigado pela leitura e até a próxima publicação,

Abraço.

 

Cleber Marques

Consultor, Escritor e Palestrante especialista em System Center
CleberMarques.com | MOF.com.br | CanalSystemCenter.com.br |
SystemCenter.co