IBM BPM, V8.0.1, All platforms > Programming IBM BPM > Service Component Architecture programming > SCA programming model fundamentals
Qualifiers
Qualifiers allow developers to place quality of service requirements on the IBM BPM runtime.
There are several different categories of qualifiers available in SCA...
- transaction
- activity session
- security
- asynchronous reliability
Each SCA qualifier has a particular scope within the SCDL definition for a component where the qualifier can be specified.
For example, some qualifiers can be specified at the references level, while others may only be valid at the interfaces or implementation level. The table lists the various qualifiers that are available and the valid scope for each. The qualifiers are sorted by the type of quality of service they provide, such as transaction or security.
Summary of qualifiers
Type Qualifier Scope Description Transaction transaction Implementation
global A global transaction must be present to run the component local A global transaction must not exist to run the component any Component is unaffected by transactional state local application Component processing occurs within a WebSphere local transaction containment managed by the application joinTransaction
Interface
true Hosting container joins client transaction false Default. Hosting container does not join client transaction suspendTransaction
Reference
true Synchronous invocations of target component do not run within client global transaction. false Synchronous invocations of target component run within client global transaction deliverAsyncAt
Reference
call Asynchronous invocations of a target service occur immediately commit Asynchronous invocations of a target service occur as part of a global transaction Asynchronous Response reliability Reference Quality of service level for asynchronous message delivery. Reliability can be one of the following values: bestEffort or assured requestExpiration
Reference Length of time (milliseconds) after which an asynchronous request is to be discarded if not delivered responseExpiration
Reference Duration (milliseconds) between the time a request is sent and the time a response or callback is received Security securityIdentity Implementation The permission specifies a logical name for the identity under which the implementation executes at run time. securityPermission
Interfaces
Interface
MethodThe caller identity must have the role specified from this qualifier in order to have permission to run the interface or method Activity Session activitySession Implementation
true There must be an ActivitySession established in order to run this component false The component runs under no Activity Session any – The component does not depend on the presence or absence of an ActivitySession joinActivitySession
Interface
true Hosting container joins client ActivitySession false Hosting container does not join client ActivitySession suspendActivitySession
Reference
true Methods on target component does NOT run as part of any client ActivitySession false Methods on target component run as part of any client ActivitySession
Transaction qualifiers
Transaction qualifiers allow developers to request a particular transactional environment for the service components in an SCA module. The following is a summary of these qualifiers:
- transaction
- Set at the implementation scope of n service component. This qualifier can be set to either 'global', 'local' (default), or 'any'. When set to global, the component runs in the context of a global transaction. If a global transaction is present on invocation, the component is added to this global transaction scope. If set to local, the component runs in the context of a local transaction. Finally, if the value is set to any then if a global transaction is present the component joins the current global transaction scope. However, if a global transaction is not present, the component runs in the context of a local transaction.
- joinTransaction
- Set at the interface scope of a service component. This qualifier can be set to either true or false (false being the default). If set to true, it instructs the runtime not to suspend a global transaction (if present) at the interface boundary. If set to false, it instructs the runtime to suspend a global transaction (if present) at the interface boundary. Exposing the joinTransaction transactional qualifier on an interface provides metadata that can be used by assemblers and deployers to ensure that the assembled application behaves as required. It is up to the assembler and deployer in addition to dynamic runtimes to reason about whether a target component federates with a propagated transaction.
- suspendTransaction
- Set at the reference level of a service component and identifies whether a global transaction should be suspended before invoking the target service associated with the reference. This qualifier can be set to either true or false (default).
- deliveryAsyncAt
- Like the suspendTransaction qualifier, except that it pertains to asynchronous interactions rather than synchronous types as is the case with suspendTransaction. The deliverAsyncAt qualifier can have the value of call (default) or commit. If set to call, it indicates to the runtime that the message for the asynchronous interaction should be committed to the queue immediately when the call has been made. The value of commit indicates that the message should be committed to the queue as part of a transaction associated with the current unit of work.
Asynchronous response qualifiers
There are three qualifiers available for indicating quality of service for asynchronous response. Each of the asynchronous response qualifiers are specified at the reference scope. The following is a summary of asynchronous response qualifiers:
- reliability
- Quality of service level for asynchronous message delivery. The reliability can be set to either bestEffort or assured (default).
- requestExpiration
- Length of time the runtime should hold onto an asynchronous request if it has not yet been delivered. After the time indicated for this qualifier, given in milliseconds, this request is discarded.
- responseExpiration
- Length of time that the runtime must retain an asynchronous response or must provide a callback. The value for this qualifier is given in milliseconds.
Security qualifiers
available for indicating quality of service related to security. The following is a summary of these qualifiers:
- securityIdentity
- Security identity under which the implementation for the service component should run at run time. This qualifier must be placed at the implementation scope for the service component and the value given must match the logical name for the identity under which the component will run.
- securityPermission
- Specified at the interfaces level or method level. Indicates that a caller of this service must have the role that is specified in order to invoke the service.
For both the securityPermission and the securityIndentity, the underlying implementation for these qualifiers is based on existing Java EE concepts.
Activity session qualifiers
The set of activity session qualifiers are similar to the transaction qualifiers introduced earlier. The ActivitySession service is a WebSphere programming model extension that can provide an alternative unit of work when compared with global transactions. In fact, an activity session context can be longer lived than a global transaction and can even include global transactions.
The following is a summary of the activity session qualifiers:
SCA programming model fundamentals
- joinActivitySession
- Set at the interface level, and indicates whether or not the component should join the activity session of a client caller. There are two values for this qualifier, true and false (default). If set to true it indicates that the runtime should not suspend an activity session if present when the component is invoked. If set to false it indicates that an activity session should be suspended before invoking the component.
- activitySession
- Specified at the implementation level and is used to indicate whether or not an activity session should or should not exist in order to run the service component with which it is associated. This qualifier can be set to either ‘true', ‘false', or 'any‘ (default). If set to true, it indicates that the component will run as part of an activity session. If set to false, the component should not run as part of an activity session. This means that the joinActivitySession should also be set to false for any interfaces specified for the component. Finally, if this qualifier is set to any, the component will run as part of an activity session if it is present, otherwise it will not.
- suspendActivitySession
- Set at the reference level and is used to indicate whether or not a target service associated with a reference will get called as part of the calling activity session or not. If set to true, the activity session is suspended and the methods on the target component will not run as part of the client activity session. If set to false (default) the activity session is not suspended and methods on the target component will run as part of the client ActivitySession.