During the course of inferencing, a rule-thread action may sub-inference into another rulebase domain - in order to pursue an inferencing sub-problem.
The Engine imposes no limits on sub-inferencing - i.e., a thread in a sub-inference domain may, in turn, sub-inference into yet another domain - so Domain1 may sub-inference to Domain2 and Domain2 may, in turn, sub-inference to Domain3, and so on.
The Engine will disallow a given domain from being loaded more than once during sub-inferencing. For example, Domain1 may sub-inference to Domain2 but Domain2 may not then sub-inference (directly or indirectly) back to Domain1.
When a thread action invokes sub-inferencing, the Engine suspends inferencing within the current domain, de-activates the current domain, activates the new domain and then begins inferencing within that domain. The Engine assigns a separate inferencing agenda to the new domain - so rules from different domains are not mixed together within the same agenda.
As the Engine fires threads within the new domain, the Engine may unpend threads in ascendant domains - but the Engine will not revisit those threads until their owning domain again becomes active.
At the completion of inferencing within the new domain, the Engine de-activates it, unloads it, re-activates the prior domain and then resumes execution of the interrupted rule-thread action.
| Copyright © 2009 CA. All rights reserved. | Email CA Technologies about this topic |