Chapter 21. Plug-ins and extensions

Table of Contents

21.1. Managing plug-ins and extensions
21.1.1. Automatic installation wizard
21.1.2. Manual plug-in registration
21.1.3. BASE version 1 plug-ins
21.1.4. Installing the X-JSP compiler
21.1.5. Disable/enable plug-ins and extensions
21.1.6. Plug-in permissions
21.2. Plug-in configurations
21.2.1. Configuring plug-in configurations
21.2.2. Importing and exporting plug-in configurations
21.2.3. The Test with file function

BASE can get extended functionality by the use of plug-ins and extensions. Much of the hard work, such as data import/export and analysis is done with plug-ins. BASE ships with a number of standard plug-ins, the core plug-ins, which gives basic import/export and analysis functionality. Typically a plug-in interacts with a user by asking for parameters that it need to be able to do it's work. For example, which file to import data from, and maybe some regular expressions that should be used when parsing the file and then some information about how the data in the file should be mapped to items and properties in BASE. When the plug-in has all parameters it needs a Job is added to a job queue. A job agent or similar is then responsible for sceduling and executing (possibly on a different machine) the plug-in code.

Extensions are historically more targeted at additions to the user interface, such as additional menu items, toolbar buttons, etc. As a result, extensions have a lot more flexibility when it comes to the visual appearance. On the other hand they are executed immediately as a result of user interaction and are expected to perform quickly and without delay.

Starting with BASE 3 the extension mechanism has been somewhat extended to cover other things that are not directly related to the web interface. For example, extensions can be used to add support for other protocols than HTTP when using external files. The main difference between a plug-in and extension is that an extension must execute immediately it's service is requested, but a plug-in can be scheduled for later execution.