IBM BPM, V8.0.1, All platforms > Authoring services in Integration Designer > Advanced development topics > Assuring Quality of Service > Quality of service qualifier reference
Join transaction qualifier
This qualifier determines whether the target service is capable of joining a client-propagated transaction.
Location: You can apply the qualifier at three levels of a component or import:
- For all of its interfaces
- For an individual interface
- For an individual operation of an interface
Settings: The join transaction qualifier can have these settings:
- True - If the implementation runs in a global transaction, it will join any transaction propagated by a client.
- False - The implementation will not join any transaction propagated by a client.
If this qualifier is not defined, the implementation will not join a transaction propagated by the client. When you add this qualifier, its value is set to join a propagated transaction.
Application: The join transaction qualifier is applied when the client invokes this service synchronously. If this qualifier is present and the client makes an asynchronous invocation, the qualifier is ignored; transactions are not propagated over asynchronous invocations. A runtime error does not result under these conditions. This qualifier simply directs the component to run under a propagated transaction if one is propagated.When you specify that a transaction should be joined, the transaction qualifier should be specified for the component implementation and the qualifier should be set to "global" or "any". (This setting is checked and the handler produces an error if the qualifier is not set this way.) Since it only takes affect on synchronous invocations, the preferred interaction style of the interface should be set to "synchronous" or "any". (This setting is not checked by validation.) This qualifier is typically used only when the component will perform the operation in a short amount of time. If your component is likely to take a long time to perform an operation, you should not specify this qualifier. If you do, then you should set it to "false" so that the component will not join in any propagated transaction.
A component implemented with a long-running BPEL process or a business state machine cannot join a client transaction, because these implementations are invoked asynchronously. The transaction qualifier must be set to "false".
Programming notes
Behavior of target component Interface - Join Transaction qualifier Implementation - Transaction Value qualifier Resulting behavior of the target component True Global The component runs in a propagated transaction if one is present. Otherwise, the runtime processes create a new global transaction. True Local Runtime processes generate an error. These qualifier settings are incompatible. True Any The component runs in a propagated transaction if one is present. Otherwise, it runs in a local transaction. False Global The component runs in a new global transaction. False Local The component runs in a local transaction. False Any The component runs in a local transaction.
Quality of service qualifier reference
Related concepts:
Transactions
Related reference:
Transaction qualifier
Suspend transaction qualifier