Rule evaluation error of Attempted to set Instance parent of an instance that has already been set.See error stack for full description.

Rule evaluation error of Attempted to set Instance parent of an instance that has already been set.See error stack for full description.

book

Article ID: KB0094269

calendar_today

Updated On:

Products Versions
TIBCO BusinessEvents Enterprise Edition -
Not Applicable -

Description

Resolution:
Description:
============
2011 Jun 21 14:40:03:674 GMT -4 guy-T400.na.tibco.com Error [main] - [runtime.service] [inference-class] Got runtime exception while executing Rule be.gen.Rules.PFLSA_PFLLOC(Rules.PFLSA_PFLLOC) Action be.gen.Rules.PFLSA_PFLLOC$PFLSA_PFLLOC_a@cf7fda Objects &ltbe.gen.Concepts.PFLSA@id=6&v=0, be.gen.Concepts.PFLLOC@id=3&v=0>
com.tibco.cep.runtime.model.element.ContainedConceptException: Attempted to set Instance be.gen.Concepts.PFLSA@id=6&v=0 as the parent of Instance be.gen.Concepts.PFLLOC@id=3&v=0 while it has been set to Instance be.gen.Concepts.PFLSA@id=5&v=0
    at com.tibco.cep.runtime.model.element.impl.ConceptImpl.setParent(ConceptImpl.java:1031)
    at com.tibco.cep.runtime.model.element.impl.simple.PropertyAtomContainedConceptSimple.setCurrent(PropertyAtomContainedConceptSimple.java:203)
    at com.tibco.cep.runtime.model.element.impl.simple.PropertyAtomContainedConceptSimple.setContainedConcept(PropertyAtomContainedConceptSimple.java:233)
    at com.tibco.be.functions.property.PropertyArrayHelper.appendContainedConcept(PropertyArrayHelper.java:761)
    at be.gen.Rules.PFLSA_PFLLOC$PFLSA_PFLLOC_a.execute(PFLSA_PFLLOC.java:93)


Environment:
==========
BussinessEvents 3.0.x and 4.0.1

Symptoms:
=========
The Conditons of the rull may appear to protect against this happening.  For example:
pflloc.ST_PFL_TYP==pflsa.ST_PFL_TYP;
pflloc@parent==null;

In this case it would appear the condition of 'pflloc@parent==null' prevenst the assignment of a parent in a Contained Concept if it was already filled.


Cause:
=====
This is caused because the Contained Concepts are updated and that forces additional RuleAgenda firings over the same data.  For the next evaluation the rule data has changed but the Condition is not reevaluated.

Resolution:
=========
Put a check in the Rule itself for 'pflloc@parent==null' such as:

if (pflloc@parent == null) {

       //Set the parent.
}

Issue/Introduction

Rule evaluation error of Attempted to set Instance parent of an instance that has already been set.See error stack for full description.