Fork me on GitHub

OfficeFrame provides the runtime environment to execute jobs based on the Job Based Architecture. The main focuses of OfficeFrame include:

  • Executing application functionality blocks of code as Tasks (which are Jobs)
  • Passing output of a Task as input to another Task
  • Exceptions being handled by a catch block Task
  • Teams that are thread pools
  • ManagedObjects providing the dependencies
  • Other additional focuses in implementing the Job Based Architecture of OfficeFloor

It also provides an additional concept, Administration. As application functionality is separated into Jobs, Administration Duties can be weaved in between the Jobs. This is much like weaving aspects around methods and enables the Administration Duties (which are themselves Jobs) to handle such things as logging and transaction management.

Single jar with no dependencies

The OfficeFrame is provided as a single jar with no dependencies (except those provided by the JRE). The reason for this is that it is the pure implementation of the Job Based Architecture and does not want to dictate which plug-ins must be used. It also contains the multi-threading state machine that is at the heart of the Job Based Architecture implementation and does not want this to be poluted with the specifics of plug-ins.

As the OfficeFrame provides only the core, it only provides an API to configure it for running. This has been intentional as the OfficeCompiler is responsible for using this API to configure OfficeFrame. This enables OfficeFrame to focus on supporting the Job Based Architecture (with OfficeCompiler compiling the graphical models into the OfficeFrame). It is anticipated that you should not be using OfficeFrame directly, but rather use the graphical models that are compiled by the OfficeCompiler.

Starting points

As long as you are familiar with the Job Based Architecture, you need not delve into the specifics of OfficeFrame. If however, you want a deeper understanding some recommended places to start looking into the code are:

Class Description
net.officefloor.frame.api.OfficeFloor The starting point for the OfficeFrame configuration API
net.officefloor.frame.impl.execute.job.AbstractJobContainer The core class providing functionality to manage execution of jobs