Individualizing the global FirstSpirit web applications
Table of contents |
FirstSpirit builds on the concept of modular extensibility by customers and partners. This means that the FirstSpirit standard functions can be adjusted relatively easily to the specific requirements of the projects in question by means of individual, project-specific enhancements (such as input components, services, applications).
For these individual enhancements both
- FirstSpirit's global web applications (fs5root, fs5preview, fs5webedit, ...) can be adapted and
- project-local, configurable instances of the FirstSpirit web applications can be created.
Adapting global web applications is usually much more efficient than using local project instances, especially in a corporate environment with many projects.
See also for more information:
- global Web applications: Web applications and for
- local project-specific Web applications: Web components.
Example: ContentCreator
An individual report (and/or an EasyEdit action, JSP tag lib, executable, etc.) is to be added to the ContentCreator. The necessary classes are defined in a module in a web app component and the module is installed on the FirstSpirit Server.
- ContentCreator as global, individualized web application: The new functionality can be made available server-wide (globally).
To do this, the desired web app component is simply added and deployed via the FirstSpirit ServerManager in the Server Properties / Web applications area.
The added enhancements are then available to all projects on the server (for which no local project ContentCreator instance has been configured). If, for example, a JSP tag lib has been provided via the web app component, the corresponding tags can then be used in all projects. It is no longer necessary to create instances that are local to the project. Instead of n instances, only one instance now needs to be stored on the front-end side. - ContentCreator as local project instance: A ContentCreator instance that is local to the project must be created for each project that is to use the new functionality (report, JSP tags, etc.) and the application must be configured with the web app component (from the module; add, configure, deploy).
Aside from the amount of work involved, one ContentCreator instance for n projects also means that n instances of the application are stored on the front-end side, which can potentially take up a lot of memory on the front-end server.
The global web applications (e.g. ContentCreator, Preview) and any corresponding local project web applications are independent. This means that components added to the global ContentCreator instance are not automatically available in projects with a project-local ContentCreator instance. If you want components to be available in a project-local ContentCreator, they must be added to it separately. Updates must also be made separately for both the global and any project-local ContentCreator instances.
Since every web application requires computing time, memory and storage space, it is recommended for productive environments to avoid using project-local web applications if possible. |
Further prerequisites
Scope
The scopes attribute, which can be used within the module declaration, provides the values global and project for Web applications (component type web-app), for example:
<web-app scopes="global">
<web-app scopes="project">
<web-app scopes="global, project">
See also Module Definition (→FirstSpirit Online Documentation).
Components can only be added to the global and/or local web applications if the scope is defined accordingly.
For developers, web app components differ according to their scope with regard to the information available via the SpecialistsBroker. Web applications that are local to a project have a WebEnvironment which inherits from the ProjectEnvironment and they receive (via the #getBroker method) a (project-specific) instance of the type SpecialistsBroker.
For global web applications, the WebEnvironment returns a project-independent instance of the type SpecialistsBroker when #getBrokeris called, and therefore returns “null” when #getProject is called.
<module>
...
<components>
...
<web-app scopes="global">
...
</web-app>
</components>
</module>
See also FirstSpirit Access API, packages
Configuration
For a global web application, the initial configuration can only take place at a global level. However, it is also possible to carry out an additional configuration that is local to a project for global web app components, e.g., via an additional project application which is also part of the module.
<module>
...
<components>
...
<web-app scopes="global">
...
<configurable> MyGlobalAppConfigPanel </configurable>
</web-app>
<project-app>
...
<configurable> MyProjectAppConfigPanel </configurable>
</project-app>
...
</components>
</module>