Assume for a moment we need to create a form based application. Each form may have a variable number of attributes (for simplicity's sake let's keep them of type String at the moment). Also, each form may have their own set of actions that affect the data somehow. How should we tackle this problem? I heard someone said "code generation!". Yes, that's one way to do it, but you can paint yourself into an ugly corner pretty fast. Let's follow a different path. In the end we want an application that looks like this


Nothing unusual here, just your standard observable Groovy bean. Next is the Controller. Here we'll find the first hint that some magic will happen under the covers
This Controller exposes two actions: clear and submit. The job of the clear action is to reset the model state; it's done by simply setting each property value to an empty String. How does the Controller knows which properties must be reset? This is where the GriffonClass of the Model comes into play. The submit action uses the same trick (querying the Model's GriffonClass) to find out which properties must be read, then prepares and popups a dialog that displays all the information read from the Model. And now for the last part, let's have a look at the View
The View uses the same trick to access the Model's properties. It follows a similar path to find out which actions can be called from the Controller. The rest of the code is your standard Swing DSL

Now, what was that about multiple forms? The View as it stands is quite reusable, as it does not have ties to an specific Model or Controller class; you can actually share it with other Models and Controllers. Setting up multiple MVC groups can be done in griffon-app/conf/Application.groovy, assuming we have another form whose model is ExpressoModel then configuring it with this View and Controller is done in the following way
We could have changed the Controller to another class if the clear and submit actions are not suitable for the new Model.
The new Artifact API is the first step on getting scaffolded models and views (perhaps even domain classes) working in Griffon. The rest of the code can be written as a set of plugins. Nick Zhu has written a validation plugin that will surely come in handy in getting the equation right.
Keep on Groovying!