Procedure lifecycle

Each procedure runs through a complete lifecycle.

The runtime lifecycle of a procedure includes the following steps.

  1. Discovery and initialization
  2. Selection (optional)
  3. Execution
  4. Destruction

Discovery and initialization

HCL® Marketing Operations must be made aware of all standard and custom procedures available for a particular installation instance. This process is called discovery.

Note: Standard procedures (procedures that are defined by the Marketing Operations engineering team) are known implicitly and so do not need any action to be discovered.

Custom procedures are defined in the procedure plug-in definition file. The Marketing Operations plug-in manager reads this file during initialization. For each procedure found, the plug-in manager completes the following steps.

  1. Instantiate the procedure; transition its state to INSTANTIATED.
  2. Create a procedure audit record.
  3. If the procedure was instantiated, its initialize() method is called with any initialization parameters found in its plug-in description file. If this method throws an exception, the status is logged and the procedure is abandoned. Otherwise, the procedure state changes to the INITIALIZED state. It is now ready to run.
  4. Create a procedure audit record.
  5. If the procedure was initialized, its getKey() method is called to determine the key that is used by clients to reference the procedure. This key is associated with the instance and saved for later lookup.

Selection

From time to time, HCL Marketing Operations might present a list of available procedures to users, for example to enable administrators to set up a trigger. Marketing Operations only presents this list after the procedure is initialized, using the procedure's getDisplayName() and getDescription() methods.

Execution

At some point after the procedure is initialized, HCL Marketing Operations receives a request to run the procedure. This request might happen concurrently with other procedures (or the same procedure) running on other threads.

At run time, the procedure execution manager completes the following steps.

  1. Start a database transaction.
  2. Set the procedure state to EXECUTING.
  3. Create a procedure audit record.
  4. Call the procedure's execute() method with an execution context and any run parameters that are provided by the client. The method implementation uses the Marketing Operations API as needed, acquiring edit locks, and passing along the execution context. If the run method throws an exception, the execution manager marks the transaction for rollback.
  5. Commit or rollback the transaction according to the execution results; set procedure state to EXECUTED.
  6. Release any outstanding edit locks.
  7. Create a procedure audit record.
Note: The execute() method is not intended to alter the procedure instance data.

Destruction

When HCL Marketing Operations shuts down, the procedure plug-in manager walks through all loaded procedures. For each procedure found, it completes the following steps.

  1. Calls the procedure's destroy() method to allow the procedure to clean up before the instance is destroyed.
  2. Changes the state of the procedure to FINALIZED (it cannot be run).
  3. Creates a procedure audit record.
  4. Destroys the instance of the procedure.