Fork me on GitHub


Moulding the Software Brick

  • Create a working prototype in minutes
  • Easily enhance the prototype to an application
  • Continuously deliver new enhancements
  • Self documenting for Agile development
Example OfficeFloor Graphical Configuration

OfficeFloor is freely distributed under GPL and the source is available here.

Inversion of Control = Dependency Injection + Thread Injection + Continuation Injection

Four steps to build an OfficeFloor application

OfficeFloor Step One

Write some HTML

OfficeFloor dynamic web pages only require the following 3 non-obtrusive tags:

  • ${bean ... $} , ${property} : allows dynamic content from POJOs (plain old Java objects) to be rendered on the web page
  • #{link} : allows indirection of web page links to enable graphical configuration of the web site navigation
  • <!-- {section} --> : segments the web page into functions

The reason for using non-obtrusive tags in the OfficeFloor web pages is to allow using WYSIWYG web design tools (e.g. Web Tools Platform, DreamWeaver, KompoZer) to create and edit the web pages.

Also reviewers can open the raw web pages in any web browser. This makes for faster feedback loops with the Web Designer enabling the right look and feel for the web application.

OfficeFloor Step Two.

Write some methods

The application logic is written with POJOs (plain old Java objects) but with a slightly different focus to many dependency injection frameworks. OfficeFloor injects the dependency as a parameter into the method rather than into the object. This difference is key to OfficeFloor's simplicity yet power!

Dependency injection into methods is fundamental to Inversion of Control as methods are the natural building blocks for managed code. The JEE API's highlight this:

  • Servlet has the service(...) method
  • JMS has the onMessage(...) method
  • Session Beans contain methods run within a context

OfficeFloor focuses on the method and its Dependency Injection and the invoking thread (Thread Injection).

OfficeFloor Step Three.

Draw some lines

The web pages and POJO methods are connected together via OfficeFloor's Task Orchestration providing a cohesive application.

OfficeFloor's task orchestration is configured graphically which improves application development by:

  • providing a visual representation that all stakeholders can use to understand and review the application
  • making OfficeFloor applications self documenting, which is great for Agile and Support teams
  • simplifying application changes

No additional coding/configuration is required for task orchestration, as OfficeFloor is built from the ground up with Continuation Injection. This enables development teams to focus on the web pages and POJOs.

OfficeFloor Step Four.

You're ready to go

The run anywhere flexibility provided by OfficeFloor's inversion of control fundamentals means that applications built with OfficeFloor can be deployed anywhere, including:

  • on the developer's workstation
  • as a stand-alone application
  • within an existing JEE Application Server
  • by a Cloud Computing provider

The build once run anywhere capability of OfficeFloor provides flexibility to make the best deployment decisions for the application - both now and in the future.