Hay un modelo que describe la tecnología que vamos a usar en Projects/AjFirstExample/Technologies/VbNet3.xml:
Puede cambiar el host a .\SQLEXPRESS si no tiene un servidor MS SQL. Puede agregar <Username> y <Password> si quiere usar la seguridad de SQL. Si no están, el ejemplo usa seguridad integrada de Windows.
Generando la aplicación
Debe bajarse la versión liberada actual de AjGenesis, la 0.5, desde http://ajlgenesis.codeplex.com. Agregue el directorio bin a su lista de directorios en PATH. Hecho esto, podemos ejecutar desde el directorio del ejemplo:
GenerateProject.cmd AjFirstExample VbNet3
El primer parámetro es el nombre del proyecto, el segundo es la tecnología a usar. El comando invoca
AjGenesis.Console Projects\%Project%\Project.xml tasks\BuildProject.ajg Projects\%Project%\Technologies\%Technology%.xml tasks\BuildTechnology.ajg tasks\BuildProg.ajg tasks\BuildSql.ajg
Esto lee el modelo de proyecto, ejecuta la tarea BuildProject, carga el modelo de tecnología, ejecuta la tarea de BuildTechnology. Finalmente, la tarea BuildProg genera el código, y BuildSql genera el DDL necesario para crear la base de datos.

Se crea un nuevo directorio, Build, que contiene el resultado:

En el directorio Sql, encontramos el comando ExecuteAll.cmd que crea la base de datos

Podemos ejecutarlo con un parámetro, especificando ahí el servidor:
ExecuteAll.cmd Bombadil
Si ejecutamos el comando sin parámetro, usa el host especificado en el modelo de tecnología.
En directorio Src encontraremos recién generada una solución .NET completa, con dos proyectos:

Podemos levantarla en Visual Studio 2008, y compilarla (necesitamos tener una versión de Mere Mortals Framework instalada).

La librería de clases contiene definiciones de objetos de negocios de Mere Mortals (usando clases parciales, clases de acceso a datos usando procedimientos almacenados, reglas….)

El proyecto WinForm tiene dos formularios de mantenimiento, para Customers y Suppliers:

Bueno, no será “uy que bruto, que aplicación”…. :-)… pero ejecuta:

Si no quieren seguir estos pasos, pueden bajarse la solución generada, de mi Skydrive
AjFirstExampleMereMortals.zip
Conclusiones
Usando un modelo abstracto, podemos generar los artefactos de textos que requiere el framework de Mere Mortals (o cualquier otro framework o tecnología como describí en Generación de código, AjGenesis, y Dunga dunga a la tecnología). Con clases parciales, y archivos separados, podemos regenerar código desde el modelo, sin perder el código manual que hayamos agregado. Podemos extender el código generado agregando validaciones automáticos, nuevas reglas, y cualquier estándar de codificación que estemos usando.
Pero el punto principal, para mí, es que usando un modelo abstracto, estamos separando el núcleo importante de nuestra aplicación, de los detalles técnicos´. Podemos regenerar la aplicación usando otro framework, otros lenguajes, otras tecnologías, y nuestro modelo podría ser el mismo. El modelo describe lo que queremos. Tareas, y plantillas terminan siendo un sistema experto, que conoce COMO obtener lo que queremos como aplicación.
Nos leemos!
Angel “Java” Lopez
http://www.ajlopez.com/en
http://twitter.com/ajlopez