My First Pattern, english version
Mi Primer Pattern, versão em Português - BR
El pattern que crearemos nos permitirá a partir de una transaction generar un SDT que represente la estructura de la transaction.
Por ejemplo, dada la transaction Country:
nos generará el siguiente SDT:
Los pasos a seguir son:
1. Leer Creating a New Pattern, para tener claros todos los conceptos relacionados con GeneXus Patterns y los requerimientos para implementar uno.
Nota: De seguir el documento sin leer el punto 1 tener en cuenta que se debe tener instalado: GeneXus X, GeneXus X/GeneXusPlatform SDK y Visual Studio 2005 o superior.
2. Crear un nuevo proyecto en Visual Studio: File->New->Project
3. Seleccionar el Template: GeneXus Pattern
4. Ingresar los datos de acuerdo a sus preferencias, dar Next
5. Seleccionar Transaction como objeto sobre el cual aplicaremos el pattern:
6. Indicar el tipo y nombre del objeto a crear, dar Finish
7. Indicar que se levantará GX luego de hacer Start del proyecto, para esto ir a: Project->MyFirstPattern Properties->Debug e indicar en Start external program la ruta a GeneXus.exe
8. Copiar el siguiente código en el template correspondiente a la creación de la estructura del SDT (SDTSDTStructure.dkt) debajo de <Part type="<%= PartType.SDTStructure %>">
<%--
Sample SDT Structure definition
--%>
<%-- Aqui lo que hacemos es indicar que él SDT a crear será Collection, esto lo hacemos con una property cuyo Name es AttCollection y su Value es True --%>
<Level Name="<%= Object.Name %>">
<LevelInfo guid="<%= Guid.NewGuid() %>">
<Properties>
<Property>
<Name>AttCollection</Name>
<Value>True</Value>
</Property>
</Properties>
</LevelInfo>
<%-- Recorremos la lista de atributos e la transcation sobre la que estamos aplicando el pattern --%>
<% foreach (TransactionAttribute trnAtt in myInstance.ParentObject.Structure.Root.Attributes)
{
%>
<%-- Creamos un item dentro del SDT con el mismo nombre y description que el 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 los niveles de la transaction --%>
<%
}
foreach (TransactionLevel level in myInstance.ParentObject.Structure.Root.Levels)
{
%>
<%-- Por cada level de la trn creamos un level en el SDT y le asignamos el mismo nombre y description, además indicamos que es 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>
<%-- Recorremos la lista de atributos de cada level y creamos un campo cuyo tipo esta basado en el tipo del atributo del level --%>
<%
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>
9. Hacer Rebuild All
10. Dar F5
11. Aplicar el pattern!!