Assumptions

The procedure implementation classes are packaged into a separate classes tree or JAR file and made available to Unica Plan through a URL path.

Procedure implementation

The procedure execution manager uses an independent class loader to load these classes as needed. By default, Unica Plan looks in the following directory.

<Plan_Home>/devkits/integration/examples/classes

To change this default, set the integrationProcedureClasspathURL parameter under Settings > Configuration > Plan > umoConfiguration > integrationServices.

The procedure implementation class name follows the accepted Java naming conventions, to avoid package collisions with "unica" and classes from other vendors. In particular, customers must not place procedures under the "com.unica" or "com.unicacorp" package tree.

The procedure implementation is coded to the Java runtime version used by Unica Plan on the application server (at least JRE 1.8).

The procedure implementation class is loaded by the class loading policy that is normally used by Unica Plan (typically parent-last). The application server might provide development tools and options to reload classes that would apply to Unica Plan procedures, but that is not required.

Libraries

Unica Plan provides some open source and third-party libraries; application servers also use different versions of these libraries.

Generally, this list changes from release to release. The following third-party libraries are supported.

  • activation.jar
  • axiom-api-1.2.15.jar
  • axiom-compat-1.2.15.jar
  • axiom-dom-1.2.15.jar
  • axiom-impl-1.2.15.jar
  • axis2-adb-1.5.2.jar
  • axis2-adb-codegen-1.5.2.jar
  • axis2-codegen-1.5.2.jar
  • axis2-kernel-1.5.2.jar
  • axis2-transport-http-1.5.2.jar
  • axis2-transport-local-1.5.2.jar
  • httpcore-4.0.jar
  • commons-codec.jar
  • commons-httpclient-3.1.jar
  • commons-lang.jar
  • commons-logging.jar
  • disruptor-3.4.2.jar
  • geronimo-stax-api_1.0_spec-1.0.1.jar
  • httpclient-4.3.6.jar
  • httpcore-4.3.3.jar
  • jersey-client-1.17.jar
  • jersey-core-1.17.jar
  • jersey-json-1.17.jar
  • junit-4.4.jar
  • log4j.jar
  • log4j-api-2.8.2.jar
  • log4j-core-2.8.2.jar
  • mail.jar
  • neethi-2.0.4.jar
  • wsdl4j-1.6.2.jar
  • xlxpScanner.jar
  • xlxpScannerUtils.jar
  • xlxpWASParsers.jar
  • XmlSchema-1.4.3.jar
  • Unica Plan APIs latest version (affinium_plan.jar)
  • Unica Platform APIs latest version (unica-common.jar)

If a procedure, or the secondary classes the procedure imports, does use such packages, their use must agree exactly with the packages provided by Unica Plan or the application server. In this case, rework of your procedure code is required if a later version of Unica Plan upgrades or abandons a library.

Procedures and threads

The procedure must be thread-safe concerning its own state; that is, its run method cannot depend on internal state changes from call to call. A procedure cannot create threads on its own.