Click or drag to resize
Extensibility

[This is preliminary documentation and is subject to change.]

The TOPICA framework is very configurable. You can get must of the basic stuff needed for a particular application running by using only the configuration tools described in the Configuration Guide (i.e. without programming).

Eventually you may run into limitations: the requirements may call for some functionality that is neither implemented in the framework nor obtainable by configuration. It could be some kind of workflow functionality, special user interface requirements, specialized reports, integration with external systems, import/export functionality, etc.

To address these requirements, the TOPICA framework is constructed in such a way, that it is possible to extend the functionality of applications built with it by writing code. In this way it is possible to implement various functionality beyond "pure" configuration.

Technologies
  • JavaScript and AJAX. JavaScript is used when you need to implement client-side-functionality (i.e. things that should happen in the browser) besides what is already implemented in the framework.

    AJAX allows JavaScript to call server-side code.

  • Pre-processing is used, when you want some code to be executed, whenever a user opens a dynamic form (before the dynamic form is displayed for the user). Typically, this is used to get data from an external system, and set this data as default values for some fields in the displayed form.

  • Post-processing is used, when you want some code to be executed, whenever a user saves a dynamic form. This may be used to implement automatic creation/updating of records or integration with some external system, based on user's input in the current form.

  • Plug-ins are compiled .NET-assemblies (.DLL-files), that are developed to implement certains interfaces defined in the framework. When a plug-in is physically placed in the appropriate place in the folder structure, the framework will detect the plug-in and execute the code in the plug-in at appropriate times.

  • SSIS-packages are used to execute code directly on the database level. SSIS packages may be designed in Visual Studio or in SQL Server Management Studio.

    SSIS packages may be used to import data from files. The TOPICA framework contains functionality to upload files from the client to a shared FTP site. The SSIS Packages should then download files from this site.

    SSIS packages may be started from the TOPICA framework, but they execute independently of the TOPICA application. This is useful for "bulk" imports. An SSIS package may run for several minutes, even hours, and the user does not have to wait for its completion. The user may continue with other work - and no time-out occurs in the TOPICA application.

  • Build Custom webservices to implement custom processing in the situations, when the built-in generic webservices cannot easily fulfill the task.

  • Use Custom webforms to implement specialized reports etc., that cannot be built easily using the "normal" reporting tools (TOPICA built-in report format and Reporting Services reports)

Trade-offs

As can be seen from the above list of technologies, there are several ways to extend the functionality in a TOPICA based application by coding. Often a given functionality may be implemented in more than one way. It is crucial to select the right tool for the job. Here are some trade-offs to be considered: