Next: Functions
Up: Active Rules in ConceptBase
Previous: Simulation of Petri Nets
The current implementation of active rules in ConceptBase has several limitations.
- The dependency graph of ECA rules may contain cycles, i.e.
rule R1 executes an action, which fires the rule R2 and R2
has an action which fires R1. The current algorithm for detecting
cycles tests the dependency graph during compile time.
The cycle checker prints a warning message on the
console if it has detected a possible cycle, but the compilation
of the rule is not aborted, because it is still possible that the cycle
does not occur during the execution of the rule. The user must
take care, that cycles are avoided.
- Instantiations and specializations of system classes (Proposition,
Attribute, InstanceOf, ...) are not detected in the event manager.
We don't think, that this is a real problem, because an ECArule with
a system class in the event expression does not make sense.
- Like QueryClasses, ECArules can not be modified after they have
been told (e.g. change the event, condition or actions).
The only updateable attribute of ECArule is active.
If you set this attribute to FALSE, you can deactivate
the rule for a certain time. Deleting or setting the attribute
to TRUE re-activates the ECArule. If you don't want to use an ECArule
anymore, you can untell it as a whole.
- The ECArule evaluator is not very efficient. Response times may be
long in case that an ECArule leads to many updates to the object base.
- ECArules that update the database will temporarily disable the
cache-based literal evaluator. By this, certain recursive rules called
in the IF-part of ECArules may not terminate. We have no example for
this theoretically possible scenario however.
ConceptBase Team