Project DescriptionPerfect Storm started life as a code generation utility.
It now includes Model Components, Rule Engine details and a class loader.
It requires .NET 3.0 to be installed.
PerfectStorm.CodeGenDesign Philosophy XML as a Domain Specific LanguageThis is a one stop code generation utility.
It permits model driven development leaving the user in total control.
Now includes the ability for the user to define their own
Transformation FiltersThe initial utility has the following syntax:
CodeGen model transform target [name value]*
This can be used to create a batch file which when run against the model document can be used to generate whatever source you want.
Look in the demo folder for an example.
The transform is an xslt document.
Since the transforms and the model are entirely customizable by the user this can be used to create almost anything.
This project was inspired by
Code Generation in Microsoft.NET.
The application now includes a small suite of xslt
Functions.
There are a number of
demo projects.
Here is a quick
xslt tutorial. I am not claiming to be an expert, but I can read xslt.
I would love to get feedback on this project - ideas for expansion, contributed samples, success stories (or otherwise).All contributions will be credited.
About Version NumbersThings I Have GeneratedPerfectStorm.RulesI have taken to experimenting with the rules engine from the WF framework. This is a place for me to keep the rules engine parts.
The rules samples (see the tests) are now uploaded (which will be in the next full release when I get around to publishing it).
These cover creating business rules in the following techniques:
- Explicitly in code.
- From a readable xml document
- Rule conditions and actions defined in strings
- Rule conditions and actions defined in anonymous methods
- Rule conditions and actions defined as lambda expressions
These rules (along with the model components) go a long way towards creating a set of validation rules that can cope with multiple attributes.
This is something that existing validation schemes miss.
I am planning to look at various ORM tools (which I do not plan to reinvent) to provide the last piece that I need before I can build the application framework that the Perfect Storm codegen requires.
Once that is done then this project will become far more useful.