Skip to content

Developing Plugins

IdentityIQ stores the .zip archive file of the Plugin in the IdentityIQ database in a data LONGBLOB in the spt_file_bucket table. The data in the spt_file_bucket table is referenced ID to an entry in the spt_persisted_file table.

Plugins are loaded from this .zip file after installation or after an application server restart. The .zip file is extracted, and all important files are cached for later use. There are several accessor methods to reference the cached files, but they can also be referenced by the url prefix /identityiq/plugin/pluginName followed by the path found in the build structure. Compiled java classes are loaded and cached from the .zip archive using the PluginClassLoader class.

Plugin Versioning Requirements

Note

The single exception to these requirements are version numbers with -dev appended to the end. This suffix causes version number validation to be bypassed.

To provide better support for upgrading plugins, plugin version numbers must be numeric, contain no alphabetic or other characters, and must separate the elements of the version number with decimal points. Within each segment of the version number, the values between the decimal points, the values are cast as integers, and leading zeroes are trimmed.

For example:

  • 04 and 00004 are both interpreted as 4
  • A segment containing any non-numeric values is interpreted as 0
  • 1.004.alpha is parsed as 1.4.0
  • 2.3.4a is parsed as 2.3.0

Plugin Object Model

A plugin is defined in IdentityIQ by the Plugin XML object. This object defines the parameters of the plugin, such as REST Resources, Snippets, Widgets, and Settings. This Plugin object is defined in the manifest.xml file. The Plugin Object is an XML object that defines the features of the plugin. This object tells IdentityIQ what features are in your plugin by defining them as attributes of a Plugin Object. In the Plugin Object you also define items such as the name of the plugin, the rights required for using the plugin, version, snippets, and REST resources.

These attributes are included in the plugin model:

Attribute Name Description
name Unique Name of the plugin
installDate Date that plugin is installed
displayName Display Name for the plugin
disabled Status of the plugin
rightRequired What SPRIGHT is required for this plugin
version The version of the plugin
minSystemVersion The minimum version of IdentityIQ that the plugin will run on
maxSystemVersion The maximum version of IdentityIQ that the plugin will run on
attributes List of configurable attributes
file Reference to the persisted file in the database

Plugin Structure

A plugin can include the following components:

  • Manifest file

  • Build file(s)

  • Database Scripts

  • UI Elements

  • XML Artifacts

  • Java Classes

  • Java JAR libraries

Not all of these components are required for a plugin – it can be as basic as the manifest, and some javascript / xhtml pages. In order to understand how a plugin operates, and how best to create one, it is important to understand what each of these components does, and how they interact.