How user exits in services and adapters work (V5.2.2 and higher)

User exits are a set of predefined points you can use to implement customized functions. You implement them by adding custom code to perform a particular operation, thus extending the functions of the adapter.

Custom user exits are available for the following service sand adapters:
  • FTP Server adapter (V5.2.2 and higher)
  • SFTP Server adapter (V5.2.5 and higher)
  • Mailbox Add service (V5.2.5 and higher)
Note: After an iFix or a Fix Pack upgrade, the property files in the user exitdirectory may be overridden. In this case, you must retain the custom files and compare with the new files; then restore or create new custom files based on the modified files and new files.
The User Exit framework consists of the following components, plus a handler that interacts with all the components to perform the particular task:
  • Adapter or service that needs to use the execution framework
  • User exit registry that can be queried for all user exits configured for a particular adapter instance. All user exits are registered and maintained in this registry.
  • User exit framework that you use to obtain the references to the user exit implementation and to run the user exit

The handler’s reference is maintained by the adapter, which refers to the registry and the execution framework.

The following figure shows the user exit architecture:

User Exit Architecture
The following table provides the generic properties that are defined for a user exit:

Property

Description

Implementations

Contains the list of custom code implementation classes that must be called when a user exit is run.

The implementation classes are called in the order they were added. If a user exit implementation fails, the next user exit implementation in the chain is not called.

return.on.exception

Determines the result if an exception occurs when a user exit is run.

Set the value to false only if the user exit is critical and displays a failure.

execution.threshold.time (integer value 1 - 600,000) in milliseconds.

Generates a log statement if total run time of the implementation chain takes more time than allowed by the threshold value.

pool.size (integer value 1 - 10)

These properties are used to manage thread pools for running the user exits.

maximum.queue.length (integer value 1 – 100)

wait.time (integer value 1 - 600) in seconds