Issue No. 03 - May/June (1998 vol. 10)
DOI Bookmark: http://doi.ieeecomputersociety.org/10.1109/69.687973
<p><b>Abstract</b>—Active rules may interact in complex and sometimes unpredictable ways, thus possibly yielding infinite rule executions by triggering each other indefinitely. This paper presents analysis techniques focused on detecting termination of rule execution. We describe an approach which combines static analysis of a rule set at compile-time and detection of endless loops during rule processing at runtime. The compile-time analysis technique is based on the distinction between mutual triggering and mutual activation of rules. This distinction motivates the introduction of two graphs defining rule interaction, called Triggering and Activation Graphs, respectively. This analysis technique allows us to identify reactive behaviors which are guaranteed to terminate and reactive behaviors which may lead to infinite rule processing. When termination cannot be guaranteed at compile-time, it is crucial to detect infinite rule executions at runtime. We propose a technique for identifying loops which is based on recognizing that a given situation has already occurred in the past and, therefore, will occur an infinite number of times in the future. This technique is potentially very expensive, therefore, we explain how it can be implemented in practice with limited computational effort. A particular use of this technique allows us to develop <it>cycle monitors</it>, which check that critical rule sequences, detected at compile time, do not repeat forever. We bridge compile-time analysis to runtime monitoring by showing techniques, based on the result of rule analysis, for the identification of rule sets that can be independently monitored and for the optimal selection of cycle monitors.</p>
Rule analysis, rule termination, rule debugging, active databases, production rules.
Stefano Ceri, Elena Baralis, Stefano Paraboschi, "Compile-Time and Runtime Analysis of Active Behaviors", IEEE Transactions on Knowledge & Data Engineering, vol. 10, no. , pp. 353-370, May/June 1998, doi:10.1109/69.687973