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):
nos criará o seguinte SDT:
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 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
4. Ingressar os dados de acordo suas preferências, dar Next
5. Selecionar Transaction como objeto sobre o qual aplicaremos o pattern:
6. Indicar o tipo e nome do objeto a criar, dar Finish
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
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!!