Jibe Framework
From Jibeframework
Contents |
Prerequisites
To be able to develop with Jibe you would need the following knowledge:
- Advanced Java knowledge
- Springframework
- Alfresco configuration mechanism
- ExtJs JavaScript library
- Freemarker template engine
Architecture
The following picture is describing different building blocks of the Jibe framework. The yellow blocks are Alfresco native and blue blocks are Jibe framework specific.
All those building blocks are simple addons to the Alfresco repository which are packed as AMP files.
Client side JavaScript engine
The main responsibility of the client side JavaScript is to accurately construct and initialize ExtJS components tree using json data received from the server
Dispatcher WebScript
Using parameters from the received Ajax request, the dispatcher WebScript will invoke an appropriate method from the registered service bean passing an initialized Context object obtained from the Context Factory as an argument
Context Factory
Responsible to instantiate and initialize the Context object, which is used as a value map throughout the request serving pipeline
Service Bean
The Service Bean contains methods invoked from the JavaScript client. In order to be exposed for invocation from JavaScript, a method of the Service Bean needs to have a specific signature and has to be specifically annotated
Data Provider Bean
The facade toward Alfresco Service API with responsibility to produce appropriate data models consumable by Components. A Node instance is considered to be a data model for a form component while a List of Node instances is considered to be a data model for a grid. The Node Factory is used to create instances of the Node class
Node Factory
This is a singleton object with responsibility to produce instances of the Node class. A node is a thin wrapper around the Alfresco NodeRef or WorkflowTask objects with all dependencies injected during the instantiation. The intention is to encapsulate node's related operations within the node class and by that make Java code more readable. The concept is the same as for the Alfresco org.repo.jscript.ScriptNode class mechanism
Component Factory
The Component Factory is a singleton with a responsibility to create and initialize new Component instances. Components are created using Components API consulting xml configuration files and are Context dependent. Component instance should be able to produce JSON string consumed by the Client side JavaScript engine in order to create and initialize ExtJS components
Converter Service
Conceptually similar to JSF converters, with the difference that it does not have to be a separate class registered in the XML configuration but the converters are annotated methods of an appropriately registered bean
Resolver Service
Resolvers are like virtual properties or properties created on runtime. Resolvers are exposed for usage in a grid configuration by annotating a method of an appropriately registered bean
Actions Service
Responsibility of actions service is to evaluate visual status of registered actions (disabled, hidden) depending on the context and to provide dynamic actions which are dependent on the context (e.g. task transition actions). As usual, action evaluator and actions provider methods are registered with appropriate annotations

