Appian Plug-ins

Overview

Appian Plug-ins simplify the creation and deployment of common Appian extensions, such as Custom Functions, Custom Data Types, and Smart Services. Appian's Plug-in architecture is based on an industry-standard architecture called OSGI. See also: http://www.osgi.org/Main/HomePage

  • A Plug-in is a JAR file that contains Modules and supporting JAR files.
  • A Module is a contribution to an extension point such as a Function, a Function Category, or a Smart Service.
  • A Bundled Plug-in is a Plug-in that is a core part of the Appian System and can not be removed, disabled, or undeployed.

See also:

Deploying Plug-ins

Plug-ins are located in APPIAN_INSTALL/_admin/plugins/. Deploy a plug-in by copying it to this directory.

On application server start-up, Appian attempts to deploy all plug-ins. If, on start-up, a plug-in fails to deploy due to a timeout, Appian will retry the deployment, but if the plug-in continues to timeout, the application server will fail to start. This guardrail is in place to ensure that Appian does not start with missing dependencies that could cause errors in running processes.

Plug-in deployment supports hot deployment. Changes in the Plug-ins directory are read at the polling interval conf.plugins.poll-interval specified in the custom.properties file. If this interval is set to 0 (zero), hot deployment is disabled.

In order for a plug-in to be authorized to use the EncryptionService, the plug-in must be granted access to it via the Plug-ins page of the Administration Console.

See also: Administration Console

Plug-in Manifest (appian-plugin.xml)

Every Appian Plug-in must have an appian-plugin.xml at the root of the Plug-in jar. If this file is not present, the Plug-in is ignored.

Required Properties

Plug-in Key: The unique identifier for a Plug-in.

<appian-plugin key="acme.sample.key" name="Sample Plugin">
	<plugin-info>
		...
	</plugin-info>
</appian-plugin>

Best Practice: As a best practice, use a namespace for your Plug-in. The appian-system namespace is reserved.

Plug-in Name: A readable name for the Plug-in. Internationalization of this name is recommended.

<appian-plugin key="acme.sample.key" name="Sample Plugin">
	<plugin-info>
		...
	</plugin-info>
</appian-plugin>

Plug-in Version

The version of the plug-in. When updating a plug-in custom data type, the version number of the plug-in must be incremented for the changes to take effect.

<plugin-info>
	...
	<version>6.2</version>
	...
</plugin-info>

Best Practice: As a best practice, increment the version number any time you change a plug-in that has been released.

Optional Properties

Appian version dependencies

<plugin-info>
	...
	<application-version min="6.0.2" max="6.2.0"/>
	...
</plugin-info>

Java version dependencies

<plugin-info>
	...
	<java-version min="1.6"/>
	...
</plugin-info>

Plug-in Description: Description for the Plug-in. Internationalization of this description is recommended.

<plugin-info>
	...
	<description>A Sample appian-plugin.xml</description>
	...
</plugin-info>

Vendor name and URL

<plugin-info>
	...
	<vendor name="Appian Corporation" url="http://www.appian.com" />
	...
</plugin-info>

Logging

Include the log4j library from deployment/web.war/WEB-INF/lib/ in the build path of the project.

It does not need to be included in the plug-in's META-INF/lib/ directory. The library will be provided at runtime. Any logging settings specific to the plug-in should be added to appian_log4j.properties.

See also: Customizing Application Logging

Provided Java Libraries

Appian provides plug-ins with access to certain libraries, like Appian's public Java API, and these libraries do not need to be included in your plug-in package. The full list of provided libraries can be found on the Custom Plug-in Packages page.

FEEDBACK