Try OpenEdge Now
skip to main content
BP Server Developer's Guide
Inline adapters : Inline adapters : Usage of Inline adapters
 

Usage of Inline adapters

While designing a process template in the Progress Developer Studio for OpenEdge, you can select the option for an Adapter workstep to execute the adapter in same thread. This sets the ‘inline’ flag for the adapter in the process template’s XML file.
After creating a process instance of such a process template with an inline adapter, when the execution thread reaches adapter execution, BP Server detects the inline adapter. Consequently, it directly executes the adapter in the same thread instead of sending a JMS message. Thus, the adapter is executed using the same thread that completed the previous workstep.

Important points

*Only an additional property is introduced for the Adapter workstep. There is no change in the adapter development. The adapter structure remains same.
*If a process template has all its worksteps as inline Adapter worksteps, then the entire process instance is completed in the same thread of execution. Thus, all adapters are executed in the same thread.
*Inline adapters should not start any EJB transaction.
*Any datasource used in an inline adapter code should be an XA enabled datasource.
*Only local synchronized adapters can be configured as inline adapters. All other adapters, like ejbadapters, should not be configured as inline adapters.
*Inline adapters are recommended only for short lived adapters. The following issues may occur with the long running inline adapters:
*Transaction timeout may happen, and hence, it may cancel completion of previous workstep.
*It may lock the system resources, like thread, and application resoruces, like database connections, cursors etcetera. Such locking may affect the performance, maximum number of concurrent users/access, and may cause other resource issues.

Limitations

Inline adapters are always executed using EJB transactions. In contrast, non-inline adapters, which are executed via an MDB, are never involved in a transaction.