An architecture for customizable applications includes an application
object and a customization object. The application object has internal
logic that performs a set of fixed or predetermined actions, and a public
object model. The public object model includes a set of public methods
that are invocable on the application object, and a set of event source
which are methods that can be implemented by a programmer and are called
by the internal logic of the application object. By implementing methods
invocable by the event sources, it is possible to extend and customize
the functionality of the application object. The customizations are
stored in a customization database for retrieval during the dynamic
operation of the application object. Each customization may be identified
by a "moniker," which is a string having a hierarchical format. The
moniker is derived partly from fixed data known to the application
object, and partly from environmental data that is ascertained by the
application object at run time.