There are, of course, lots of ways to skin any given cat, but here's how you might go about developing a Wicket Objects app:
use the Naked Objects application archetype to create an outline domain model, running against the in-memory object store. The structure of a Naked Objects application is reviewed in Section 3.1, “Structure of a Naked Objects Application”.
(optionally) use the DnD viewer to define some of the basic domain services and entities. Or, you might want to skip this step and develop solely using Wicket.
modify the app to run under Wicket, either using a built-in Jetty web server (see Section 3.2, “Running from the commandline project”) or as a regular webapp (see Section 3.3, “Running from the webapp project”).
with your app now running as a webapp, customize the look-n-feel to use your preferred fonts and logos by updating the CSS (see Section 4.1.1, “Generic CSS”). You can also use CSS to fine-tune the layout for selected objects or object members (see Section 4.1.2, “Specific CSS”).
continue to develop your domain application, identifying properties, collections and defining behavior through actions. Also, define fixtures to represent pre-canned scenarios to explore with your domain expert. For more on developing Naked Objects applications, you might want to (he says modestly) check out Domain Driven Design using Naked Objects (published by the Pragmatic Bookshelf).
fine tune the set of Component
s used to
render your entities. Wicket Objects provides
built-in Component
s to render every element
of your domain objects, and in some cases provides more than one
Component
. When Wicket
Objects provides a number of alternate views like this,
you might prefer only one. Or, you might use an existing
Component
and adapt it into your own
Component
. In either case, you'll need to
fine-tune the set of ComponentFactory
s (see
Section 4.2, “Component Factories”).
implement custom representations of some entities (or
collections of entities), where it makes sense. For example, you
might want to display objects that have a location in a google maps
mashup, or objects that have a date/time in a calendar. Ultimately
these custom representations are also just
ComponentFactory
s. A number of
Component
s (including one for google maps and
one for charting) are described in ???; use these directly or use them as
inspiration for your own.
support specialized use cases, if you have any. That is, rather than require the end-user to interact directly with persisted entities, introduce transient process objects to manage workflow and bulk input, or write transient report objects to provide dashboards
as you continue to develop your application, you may need to integrate with external services. For example, you might want to send out an email, or invoke a web service exposed by some other system in your enterprise. Define an interface for these domain services, and register their implementation in the Naked Objects configuration file. See the main Naked Objects documentation for more details on this.
ultimately your application will be ready to deploy. Before you do, though, remember that you'll need to sort out persistence and security (see ???)
Enough verbiage. The next chapter is a run through of a simple application, screenshot by screenshot, so you can quickly assess whether Wicket Objects fits your needs.