Monday, May 23, 2005

In Prometheus I have a system schema xml file that defines the classes in the target system.  For code generation I have found it useful to classify the classes into subtypes. There are generally utility classes such as Lookup which provides the lookup table functionality, common classes such as name, address, email etc which are re usable common classes and then there are business objects.  The business objects are the main classes of the system where most business logic is concentrated.  Common types like Address may contain some simple validation but not too much if any system level business rules.  However a particular instance of Address may have some additional logic. 

An Example:

A Home object is one of the main objects in the system.  A home has an address.  A home also has a customer (buyer) and the customer (buyer) has an address.  Address is the common type and Home is the business type.

So here is the topography:

Home.Address

Home.Customer.Address

We have a business rule that says the customer should be able to update his/her own address but not the address of the Home they are buying.  This is a place where field level security can be useful.  Based on the topography listed above the customer role would have access to Home.Customer.Address.* but not Home.Address.*.  The asterisk indicates that the user can have permissions to all fields (value or object type) of the parent object.  Our topography gives us a context in which to view two similar objects in a different way.  Even though both objects have similar validation and are saved in the same address table they can have different permissions and/or functionality as needed.  

This is just one more step in the 80/20 code generation solution.  If I can achieve 80% of the functionality I need through code generation and the rest through custom coding then I can greatly enhance my productivity.  Code generation is nice in many ways but in this case it allows us to apply a consistent set of generation rules and build hierarchies of objects to which permissions can be applied in a consistent manner. 

Monday, May 23, 2005 2:33:17 PM (Central Standard Time, UTC-06:00)  #    Comments [0]
 Tuesday, May 03, 2005
The code generation project Prometheus continues to evolve.  I have the general ASP.NET UI generation completed.  However as I move forward there are some advanced features to add.  One of these is support for lists.  DropDownLists or ListBox controls are the first and foremost issue.  It's fine to generate them but the current issue is how to indicate the datasource for the values to populate the list.  This is more of a conceptual problem then a technical problem as I know serveral ways to do this but I need to determine a nice clean way to make this work with the rest of the site.
Tuesday, May 03, 2005 7:51:22 AM (Central Standard Time, UTC-06:00)  #    Comments [0]
 Friday, April 08, 2005

Pragmatic Labs is pleased to announce its second product offering tentatively code named "Prometheus"

Simply stated; Prometheus is a code generation tool for .NET applications.  However, Prometheus goes a step further then most generation tools.  Most code generation tools are tier specific, meaning that they target one tier of the application.  The most common example of this is the data access layer generator.  Generators of this type usually read a database schema and generate code for CRUD operations on the database

Prometheus is a step beyond the single tier generators.  Prometheus allows an application to be defined in a tier independent schema file using XML.  From this schema Prometheus generates the database creation script, stored procedures, the data access layer, the business logic layer and the user interface.  The reason this works is there are certain common patterns that emerge when building applications.  Harnessing the experience of developers and the distilled knowledge of design patterns, a rather full skeleton of an application can be generated very rapidly. 

 Prometheus allows for code extensibility with either inheritance or region directives.  No matter how good a code generator is there is still a need for manual coding to handle business logic and special case situations.  Prometheus seeks to coexist with manual code and provides a clear separation between generated and manual coding.

 Prometheus is currently scheduled for release in the fall of 2005.

 

Friday, April 08, 2005 8:08:34 AM (Central Standard Time, UTC-06:00)  #    Comments [0]