An EJB client application accesses the appropriate local session
bean through the home interface of the bean.
Why and when to perform this task
The session bean can be either the LocalBusinessFlowManager session
bean for process applications or the LocalHumanTaskManager session bean for
human task applications.
Steps for this task
- Add a reference to the local session bean to the application deployment
descriptor. Add the reference to one of the following files:
- The application-client.xml file, for a Java™ 2
Platform, Enterprise Edition (J2EE) client application
- The web.xml file, for a Web application
- The ejb-jar.xml file, for an Enterprise JavaBeans™ (EJB)
application
The reference to the local home interface for process applications
is shown in the following example:
<ejb-local-ref>
<ejb-ref-name>ejb/LocalBusinessFlowManagerHome</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local-home>com.ibm.bpe.api.LocalBusinessFlowManagerHome</local-home>
<local>com.ibm.bpe.api.LocalBusinessFlowManager</local>
</ejb-local-ref>
The reference to the local home interface
for task applications is shown in the following example:
<ejb-local-ref>
<ejb-ref-name>ejb/LocalHumanTaskManagerHome</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local-home>com.ibm.task.api.LocalHumanTaskManagerHome</local-home>
<local>com.ibm.task.api.LocalHumanTaskManager</local>
</ejb-local-ref>
If you use WebSphere® Integration Developer to
add the EJB reference to the deployment descriptor, the binding for the EJB
reference is automatically created when the application is deployed. For more
information on adding EJB references, refer to the WebSphere Integration Developer documentation.
- Retrieve a reference to the local home interface
of the local session bean from Java Naming and Directory Interface (JNDI).
The following example shows this step for a process application:
// Obtain the default initial JNDI context
InitialContext initialContext = new InitialContext();
// Lookup the local home interface of the LocalBusinessFlowManager bean
LocalBusinessFlowManagerHome processHome =
(LocalBusinessFlowManagerHome)initialContext.lookup
("java:comp/env/ejb/LocalBusinessFlowManagerHome");
The home interface of the local session bean
contains a create method for EJB objects. The method returns the local interface
of the session bean.
- Access the local interface of the local session bean.
The
following example shows this step for a process application:
LocalBusinessFlowManager process = processHome.create();
Access to the session bean does not guarantee that the caller
can perform all of the actions provided by the bean; the caller must also
be authorized for these actions. When an instance of the session bean is created,
a context is associated with the instance of the session bean. The context
contains the caller's principal ID, group membership list, and indicates whether
the caller has one of the Business Process Choreographer J2EE roles. The context
is used to check the caller's authorization for each call, even when global
security is not set. If global security is not set, the caller's principal
ID has the value UNAUTHENTICATED.
- Call the business functions exposed by the service interface.
The following example shows this step for a process application:
process.initiate("MyProcessModel",input);
Calls
from applications are run as transactions. A transaction is established and
ended in one of the following ways:
Tip: To prevent database deadlocks, avoid
running statements similar to the following in parallel transactions:
// Obtain user transaction interface
UserTransaction transaction=
(UserTransaction)initialContext.lookup("jta/usertransaction");
transaction.begin();
//read lock on the activity instance
process.getActivityInstance(aiid);
//write lock on the activity instance
process.claim(aiid);
transaction.commit();
Example
Example
Here is an example of how steps 2 through
4 might look for a task application.
//Obtain the default initial JNDI context
InitialContext initialContext = new InitialContext();
//Lookup the local home interface of the LocalHumanTaskManager bean
LocalHumanTaskManagerHome taskHome =
(LocalHumanTaskManagerHome)initialContext.lookup
("java:comp/env/ejb/LocalHumanTaskManagerHome");
...
//Access the local interface of the local session bean
LocalHumanTaskManager task = taskHome.create();
...
//Call the business functions exposed by the service interface
task.callTask(tkiid,input);