08.06.2014 Views

Download PDF (1.3 MB) - IBM Redbooks

Download PDF (1.3 MB) - IBM Redbooks

Download PDF (1.3 MB) - IBM Redbooks

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!