DocsOmniFi APIsChangelog
SkySparcContact UsLog In
Docs

Architecture

Extensions and environments live in <plugin_home>, which is OmniFi Installation Directory\Plugins by default. <plugin_home> can be moved to any other location by bootstrap.config.

An extension consists of

  1. An executable module (Python module or .NET assembly)
  2. A header file, defining the extension module and it's parameters.

For python extensions, the python script and header file must be in the same directory, in the structure corresponding to the extension type. For example, a query extension must be in the directory structure <plugin_home>\Query.


.NET extension assembly can be referenced relatively from the header file, and doesn’t have to be in the same folder. Further, the assembly may contain any number of extension implementations, each with it’s own header file.
You can create a custom directory structure within the type directory, and this structure will be visible to the end user. For example, placing a query plugin “Entry by State” in <plugin___home>\Query\Accounting GL, the name“Accounting GL” is visible to the user, making it easier to browse for plugins in the GUI.

Extension ID

To identify an extension a unique identity is used, e.g. to run an extension query it is important to know precisely what extension to execute.
The unique identity of an extension is the path and name of the header file relative to the <plugin_home> directory.
E.g. a header file “<plugin_home>\Query\Accounting GL\Entry_by_state.pyplugin” has the ID “Query\Accounting GL\Entry_by_state.pyplugin”.
This is important to note for a couple of reasons:

  • You can move the extension <plugin_home> directory without breaking existing collateral, e.g. reports using a query extension.
  • You cannot modify the path or file name of the header file within <plugin_home> without breaking existing collateral.

Checksum

A checksum is calculated for the extension, based on the python file or .NET assembly. This checksum is used to track changes to the extension and ensure that only approved extension code is executed.

Runtime sandbox

To separate extensions from the OmniFi core and each other, extensions are run inside a sandbox process. There are two sandbox processes for 32 -and 64-bit extensions respectively.

  • SkySparc.Plygin.Host.exe
  • SkySparc.Plygin.Host64.exe

The sandbox process corresponding to the extension architecture is used, allowing both 32- and 64-bit OmniFi to run either of 32 and 64-bit extensions without limitation (assuming 64-bit Windows operating system).



Did this page help you?