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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Figure 3-2 shows an example of a good BPD design pattern.<br />

Figure 3-2 Good BPD design pattern<br />

3.<strong>1.3</strong> Use conditional joins only when necessary<br />

Simple joins use an “and” condition; all lines that head into the join must have an active token<br />

for the tokens to continue forward.<br />

By contrast, for conditional joins, all possible tokens must reach the join before they<br />

proceed. Thus, if you have a conditional join with three incoming lines, but only two of them<br />

currently have tokens (or might have tokens by looking upstream), then those two tokens<br />

must arrive at the join to proceed. To determine this condition, the BPD engine must evaluate<br />

all possible upstream paths to determine whether the tokens can arrive at the join. This<br />

evaluation can be expensive for large, complex BPDs. Use this capability judiciously.<br />

3.1.4 Guidelines for error handling<br />

Avoid global error handling in a service, which can use an excessive amount of server<br />

processor utilization and can even result in infinite loops in coaches.<br />

When catching errors on an activity in a BPD, do not route the error back to the same activity.<br />

Doing so causes the server to thrash between the BPD and service engine, using a large<br />

amount of Process Server processor time and also database processing.<br />

Chapter 3. Development best practices 25

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

Saved successfully!

Ooh no, something went wrong!