INTERNAL ERROR: Tree completed too early / Rule execution order

6 views
Skip to first unread message

Tassilo Horn

unread,
Dec 21, 2010, 6:35:44 AM12/21/10
to tef...@googlegroups.com
Hi all,

I'm stuggeling with a rule that should set some references after all
objects have already been created.

--8<---------------cut here---------------start------------->8---
CLASS MemberToPerson { // Created when creating Persons
Member src;
Person dst;
};

PATTERN parent(mp, mc)
WHERE (NOT UNDEF mp.familyFather AND mc.familySon = mp.familyFather)
OR (NOT UNDEF mp.familyFather AND mc.familyDaughter = mp.familyFather)
OR (NOT UNDEF mp.familyMother AND mc.familySon = mp.familyMother)
OR (NOT UNDEF mp.familyMother AND mc.familyDaughter = mp.familyMother)
;

RULE SetParents()
FORALL Member mp, Member mc, Person p, Person c
WHERE parent(mp, mc)
AND MemberToPerson LINKS src = mp, dst = p
AND MemberToPerson LINKS src = mc, dst = c
SET c.parents = p
;
--8<---------------cut here---------------end--------------->8---

Unfortunately, since I've added that rule, my transformation execution
fails with the following output:

--8<---------------cut here---------------start------------->8---
INFO: Loaded (2044954184) http://families
INFO: Loaded (467020566) http://persons
INFO: Loaded (518571326) platform:/resource/Families2PersonsTefkat/families2persons.qvt
INFO: Loaded (234932602) platform:/resource/Families/models/example.families
INFO: Transformation started: families2persons
INFO: Constructing stratification...
INFO: ... 2 levels.
INFO: Stratum 0 : FamilyModel2Genealogy, Family2Address, Member2Female, SetParents
INFO: Evaluating FamilyModel2Genealogy
INFO: Evaluating Family2Address
INFO: Evaluating Member2Female
INFO: Evaluating SetParents
INFO: Loaded (871671242) platform:/resource/Families2PersonsTefkat/trace.xmi
INFO: Loaded (1416383103) platform:/resource/Families2PersonsTefkat/result.persons
INFO: TRule: SetParents completed.
INFO: TRule: Member2Female completed.
INFO: TRule: Family2Address completed.
INFO: TRule: FamilyModel2Genealogy completed.
INFO: Stratum 1 : Member2Male, Member2Father
INFO: Evaluating Member2Male
INFO: Evaluating Member2Father
ERROR: INTERNAL ERROR: Tree completed too early: tefkat.engine.Context@7f97bad6 -- RULE SetParents:
Term: MemberToPerson[src->SetParents::mp, dst->SetParents::p]
tefkat.engine.ResolutionException: INTERNAL ERROR: Tree completed too early: tefkat.engine.Context@7f97bad6 -- RULE SetParents:
Term: MemberToPerson[src->SetParents::mp, dst->SetParents::p] -- RULE SetParents:
Term: MemberToPerson[src->SetParents::mp, dst->SetParents::p]
at tefkat.engine.Context.error(Unknown Source)
at tefkat.engine.SourceResolver$HandleNewTrackingInstance.handleInstance(Unknown Source)
at tefkat.engine.RuleEvaluator.trackingCreate(Unknown Source)
at tefkat.engine.TargetResolver.createTrackingInstance(Unknown Source)
at tefkat.engine.TargetResolver.resolveTrackingUse(Unknown Source)
at tefkat.engine.AbstractResolver.doResolveNode(Unknown Source)
at tefkat.engine.TargetResolver.doResolveNode(Unknown Source)
at tefkat.engine.RuleEvaluator.resolve(Unknown Source)
at tefkat.engine.RuleEvaluator.runIncrementalTransformation(Unknown Source)
at tefkat.engine.RuleEvaluator.runTransformation(Unknown Source)
at tefkat.engine.Tefkat.transform(Unknown Source)
at tefkat.engine.Tefkat.transform(Unknown Source)
at tefkat.engine.Tefkat.transform(Unknown Source)
at tefkat.plugin.debug.EngineLaunchConfigurationDelegate$1.run(Unknown Source)

INFO: ResourceSet event 8: null
--8<---------------cut here---------------end--------------->8---

What should that error tell me?

One thing I can grasp from the output is that the rule is executed too
early. Basically, it can only work successfully after Member2Female,
Member2Male, and Member2Father have completed and thus all
MemberToPerson trackings have been established. But I guess, I have no
control over the rule evaluation order, right?

Thanks a lot in advance,
Tassilo

Reply all
Reply to author
Forward
0 new messages