Next: Functions
Up: Active Rules in ConceptBase
Previous: Timestamps
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.
- Because of the current transaction processing of ConceptBase,
it is not possible to use Tell and Untell events and actions
in any combination, i.e. you can not tell and untell the same object
in one transaction.
- 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.
- As QueryClasses, ECArules can not be updated after they have
been telled (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.
ConceptBase Team