This topic lists ways to implement conditional routing most effectively.
- Cover the entire range of values in your rules. For example, if an
item should be routed based on a numeric value, and the user specifies a value
that is not covered by a rule, it must take the transition associated with the
Otherwise rule. This could result in unintended
- Make rules mutually exclusive. For example, if an item in a defect
management application should be routed based on severity, and the severity
level can be 1 through 5, make sure each level is covered by only one rule. Do
not assign 1 and 2 to one rule, and assign 2 and 3 to another rule.
- Use application variables. They offer the following advantages:
- You can change the value of an application variable and all of
the rules that use the application variable are automatically updated.
- You can prevent gaps that can cause unintended routing. For
example, in an expense reimbursement application, one rule covers
reimbursements that are between $0.00 and $100.00, inclusive. Another rule
covers reimbursements greater than $100.00 but less than $1000.00.
If you change the upper limit of the first rule to $90.00, but
forget to change the lower limit of the second rule accordingly, then a
reimbursement of $95.00 must take the transition associated with the
Otherwise rule. You can avoid this
unintended routing if you instead assign 100 to an application variable, and
use that variable in both rules.
- To prevent infinite loops:
- Do not have two
decisions, where each decision has an
outgoing transition to the other decision.
- Do not put a transition action on an outgoing transition from a
decision that causes the incoming
transition to that
decision to be executed.
- Do not restrict the "Otherwise" transition from a
decision by role, group, or item type.
decision must have one incoming transition
Any state before it can have an outgoing
transition back to the
Copyright © 2007–2015 Serena Software, Inc. All rights reserved.