It is possible to have cycles or loops occurring in service flows.
In this situation, the status of the cycle is determined by applying
the procedure that is described in Rules for calculating operation aggregate status to the aggregates in the
cycle, disregarding any relationships among them. Then, the overall
status for the cycle is considered, along with the status of the parts
of the service flow that occur before and after the cycle, to determine
the status for the entire service flow.
Figure 1 displays a
simple example of a cyclic flow. The cycle occurs where B calls C and C,
in turn, calls B.
Figure 1. An example of a
service flow with a cyclic flow
To illustrate how the overall status for this flow is determined,
consider the following example:
- Suppose these aggregates each have the following aggregate level
status:
- The status forA is Normal.
- The status for B is Warning.
- The status for C is Critical.
- The status for D is Fatal.
- Starting at the end of the flow, the status for the rightmost
dependent pair, CD, is determined to be Fatal.
- Using the rules for calculating operation aggregate status, and
ignoring the cyclical directed relationships between C and D,
the combined status for B and CD is determined to be Fatal.
- Finally, the status for the dependent pair A and BCD is
determined to be Warning.
It is possible for a cyclic flow to occur at the beginning of the
service flow. In this case, there is no clear front-end service. However,
the algorithm for determining status within a cycle still applies.
Using the example flow in
Figure 1,
assume
B,
C, and
D are in the service
group but
A is
not. The status of the composite relationships for
B,
C,
and
D are determined as follows:
- Determine the status of the dependent pair, CD.
- Determine the combined status of B and CD.