Meu Primeiro Pattern ( Padrão )

Unofficial Content

Meu Primeiro Pattern (Padrão) , versão original em ESPANHOL

O pattern que criaremos nos permitirá gerar um SDT que represente a estrutura de uma Transação.


 Por exemplo, dada a transação Country (Países):

MyFirstPattern_img1

nos criará o seguinte SDT:

MyFirstPattern_img2

 Os passos a seguir são :


1. Ler Creating a New Pattern, para ter claro todos os conceitos relacionados com GeneXus Patterns e os requisitos para implementar um.

Nota: Caso siga o documento sem ler o ponto 1 ter em conta que deve-se ter instalado: GeneXus X, GeneXus X/GeneXus Platform SDK e Visual Studio 2005 ou superior.

2. Criar um novo projeto no Visual Studio: File->New->Project

3. Selecionar o Template: GeneXus Pattern

MyFirstPattern_img3

4. Ingressar os dados de acordo suas preferências, dar Next

MyFirstPattern_img4

5. Selecionar Transaction como objeto sobre o qual aplicaremos o pattern:

MyFirstPattern_img5

6. Indicar o tipo e nome do objeto a criar, dar Finish

MyFirstPattern_img6

7. Indicar que se executará GX logo ao dar Start do projeto, para isto ir a: Project->MyFirstPattern Properties->Debug e indicar em Start external program o caminho de  GeneXus.exe

MyFirstPattern_img7

8. Copiar o seguinte código no template correspondente a criação da estrutura do SDT (SDTSDTStructure.dkt) debaixo de <Part type="<%= PartType.SDTStructure %>">

<%--
    Sample SDT Structure definition
--%>

<%-- Aqui o que fazemos é indicar que o SDT a crear será Collection, esto faremos com uma propriedade cujo Nome é AttCollection seu valor é True --%>

   <Level Name="<%= Object.Name %>">
      <LevelInfo guid="<%= Guid.NewGuid() %>">
        <Properties>
            <Property>
                <Name>AttCollection</Name>
                <Value>True</Value>
            </Property>
        </Properties>
      </LevelInfo>

<%-- Percorremos a lista de atributos e a transação sobre a que estamos aplicando o pattern   --%>
<% foreach (TransactionAttribute trnAtt in myInstance.ParentObject.Structure.Root.Attributes)
   {
%>

<%-- Criamos um item dentro do SDT com o mesmo nome e description que o att trnAtt  --%>
<%-- Indicamos mediante una property que el tipo del item estará basado en el tipo del att  --%>
      <Item guid="<%= Guid.NewGuid() %>" name="<%=trnAtt.Name%>" description="<%=trnAtt.Attribute.Description%>">
        <Properties>
            <Property>
                <Name>idBasedOn</Name>
                <Value>Attribute:<%=trnAtt.Name %></Value>
            </Property>
        </Properties>
      </Item>         

<%-- Recorremos os níveis da transação   --%>   
<%
    }
    foreach (TransactionLevel level in myInstance.ParentObject.Structure.Root.Levels)
    {
%>

<%-- Para cada nível da trn criamos um nível no SDT e atribuímos o mesmo nome e description, além de indicarmos que é Collection   --%>
        <Level Name="<%=level.Name%>">
        <LevelInfo guid="<%= Guid.NewGuid() %>">
        <Properties>
            <Property>
                <Name>Name</Name>
                <Value><%=level.Name%></Value>
            </Property>
            <Property>
                <Name>AttCollection</Name>
                <Value>True</Value>
            </Property>
        </Properties>
        </LevelInfo>    

<%-- Percorremos a lista de atributos de cada nível e criamos um campo cujo tipo esta baseado no tipo do atributo do nível   --%>
<%
        foreach (TransactionAttribute trnAtt in level.Attributes)
        {
%>

        <Item guid="<%= Guid.NewGuid() %>" name="<%=trnAtt.Name%>" description="<%=trnAtt.Attribute.Description%>">
        <Properties>
            <Property>
                <Name>idBasedOn</Name>
                <Value>Attribute:<%=trnAtt.Name %></Value>
            </Property>
        </Properties>
      </Item>              

<%
        }    %>     
    </Level>
<%
    }    %>
    </Level>
</Part>

8. Fazer Rebuild All
9. Dar F5
10. Aplicar o pattern!!

MyFirstPattern_img8