Download PDF (1.3 MB) - IBM Redbooks
Download PDF (1.3 MB) - IBM Redbooks
Download PDF (1.3 MB) - IBM Redbooks
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Client systems that follow a page-flow pattern should consider the following issues:<br />
► Use the completeAndClaimSuccessor() API if possible. This API use provides optimal<br />
response time.<br />
► Applications that assign the next available task to the user can use the following method<br />
on the Human Task Manager EJB interface. This method implements a<br />
performance-optimized mechanism to handle claim collisions.<br />
claim(String queryTableName, …)<br />
► Do not put asynchronous invocations between two steps of a page flow because the<br />
response time of asynchronous services increases as the load on the system increases.<br />
► Where possible, do not start long-running subprocesses between two steps of a page flow<br />
because long-running subprocesses are started using asynchronous messaging.<br />
Clients that present task lists and process lists should consider the following factors:<br />
► Use query tables for task list and process list queries.<br />
► Do not loop over the tasks shown in the task or process list and run an additional remote<br />
call for each object. This practice prevents the application from providing good response<br />
times and good scalability.<br />
► Design the application so that all information is retrieved from a single query table during<br />
task list and process list retrieval. For example, do not make calls to retrieve the input<br />
message for task list or process list creation.<br />
3.2.9 Transactional considerations<br />
One of the strengths of the Business Process Manager BPEL platform is the precise control it<br />
provides for specifying transactional behavior. When modeling a process or mediation<br />
assembly, be sure the modeler carefully designs the transaction boundaries as dictated by<br />
the needs of the application because boundaries are expensive in terms of system resources.<br />
The objective of this section is to guide the modeler to avoid unnecessary transaction<br />
boundaries. The following list details several guiding principles:<br />
►<br />
►<br />
►<br />
►<br />
The throughput of a particular usage scenario is inversely related to the number of<br />
transaction boundaries traversed in the scenario, so fewer transactions is faster.<br />
In user-driven scenarios, improving response time might require more granular transaction<br />
boundaries, even at the cost of throughput.<br />
Transactions can span across synchronous invocations but cannot span asynchronous<br />
invocations.<br />
Avoid synchronous invocation of a two-way asynchronous target. The failure recovery of a<br />
caller transaction can be problematic.<br />
Taking advantage of Service Component Architecture transaction<br />
qualifiers<br />
In an SCA assembly, you can reduce the number of transaction boundaries by allowing<br />
transactions to propagate across components. For any pair of components where you want to<br />
reduce the number of transaction boundaries, use the following settings:<br />
► For the reference of the calling component: SuspendTransaction= false<br />
► For the interface of the called component: joinTransaction= true<br />
► For implementation of both components: Transaction= any|global<br />
These settings assume that the first component in such a chain either starts or participates in<br />
a global transaction.<br />
38 <strong>IBM</strong> Business Process Manager V8.0 Performance Tuning and Best Practices