I just realized how long it has been since I’ve made a blog posting, and so I decided to talk a little a little more about what I’ve been doing with Flex and Cairngorm.

A colleague of mine has recently put in a lot of work in developing an internal application architecture that extends the Cairngorm architecture, while remaining true to the basic patterns. We adopted several of my ideas from the posts about abstract classes, but with some tweaks to make them more Cairngorm-standard, rather than changing the way the architecture works.

If I started a project from scratch, I would still choose to use my classes as the base, but since we work in a company with an existing investment in Cairngorm, this extended architecture had to support the old applications.

Here’s some of the things that are in our Cairngorm Extended Architecture.

  • Modular development. This was THE main goal of the project and we can now easily develop modular apps with Cairngorm.
  • Event callbacks. Each Cairngorm event can now have a Responder parameter that can make the views receive feedback on the success/failure of commands.
  • Chain/Parallel commands. We can map a single Cairngorm event to multiple commands and have the execute in parallel or chained (asynchronous).
  • Global data registry. This feature allows modules to access data contained in another module’s data model.
  • Global event bus. An application-scoped event bus that allows modules to communicate with each other.
  • Sophisticated module loading configuration options.
  • Extended basic Cairngorm service locator pattern to support Flex Messaging and ColdFusion Messaging (using ColdFusion Event Gateways).

We’ve got it up and running on a few smaller applications, but we’re already planning on getting our two main business applications using it within a year.

Exciting times!