Download PDF (1.3 MB) - IBM Redbooks
Download PDF (1.3 MB) - IBM Redbooks
Download PDF (1.3 MB) - IBM Redbooks
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
3.2.6 Business Process Execution Language business process<br />
considerations<br />
This section presents considerations for authoring performance specific to BPEL business<br />
processes.<br />
Modeling best practices for activities in a business process<br />
For best performance, use the following guidelines when modeling a BPEL business process:<br />
►<br />
►<br />
►<br />
►<br />
Use the Audit Logging property for Business Processes only setting if you need to log<br />
events in the Business Process Choreographer database (BPEDB). You can set this<br />
property at the activity or process level. If you set it at the process level, the setting is<br />
inherited by all activities.<br />
For long-running processes, in Integration Designer, click Properties Server, and clear<br />
the Enable persistence and queries of business-relevant data property for both the<br />
process and for each individual BPEL activity. Enabling this flag causes details of the<br />
execution of this activity to be stored in the BPC database, which increases the load on the<br />
database and the amount of data stored for each process instance. Use this setting only if<br />
you must retrieve specific information later.<br />
For long-running processes, a setting of Participates on all activities generally provides<br />
the best throughput performance. See “Avoiding two-way synchronous invocation of an<br />
asynchronous target” on page 39 for more details.<br />
Human tasks can be specified in business processes (for example, process<br />
administrators), start activities, and receive activities. Specify human tasks only if<br />
necessary. When multiple users are involved, use group work items (people assignment<br />
criterion: Group) instead of individual work items for group members (people assignment<br />
criterion: Group Members).<br />
Avoiding two-way synchronous invocation of long-running processes<br />
When designing long-running business process components, ensure that callers of a two-way<br />
(request/response) interface do not use synchronous semantics because this function ties up<br />
the caller’s resources (such as threads and transactions) until the process completes.<br />
Instead, start such processes either asynchronously, or through a one-way synchronous call,<br />
where no response is expected. In addition, calling a two-way interface of a long-running<br />
business process synchronously introduces difficulties when exceptions occur. Suppose that<br />
a non-interruptible process calls a long-running process using the two-way request/response<br />
semantics, and the server fails after the long-running process completes, but before the<br />
caller’s transaction is committed. The following results occur:<br />
►<br />
►<br />
If the caller was started by a persistent message, upon server restart, the caller’s<br />
transaction is rolled back and tried again. However, the result of the execution of the<br />
long-running process on the server is not rolled back because it was committed before the<br />
server failure. As a result, the long-running process on the server runs twice. This<br />
duplication causes functional problems in the application unless corrected manually.<br />
If the caller was not started by a persistent message, and the response of the long-running<br />
process was not submitted yet, the process ends in the failed event queue.<br />
36 <strong>IBM</strong> Business Process Manager V8.0 Performance Tuning and Best Practices