Please bear in mind that the rule firing when the exception is raised
merely inserts a fact that triggers the evaluation of (most likely)
some other rule, one where the inserted fact could match. So you have
two pointers: the occurrence of one or more NormalizedNamedEntity, and
the occurrence of the inserted fact. Hopefully the latter isn't the
same as the first...
You should be able to exclude all rules that have fired successfully.
-W
On 05/07/2013, Bojan Janisch <bojan.janisch(a)scai.fraunhofer.de> wrote:
Hey Wolfgang,
I'm generating rules automatically with a genetic algorithm, so I don't know
how the rule looks like.
But the rule creation has constraints which will make each rule to something
like this:
when
$[number]:Class(
(Some declarations),
[Optional check for something])
[Optional eval with random conditions to check]
...
then
...
So I'm not using "this" in a rule, never. Also not in the conclusion of
the
rule.
Here's a automatically generated rule:
rule "434"
no-loop
when
$0:NormalizedNamedEntity(
ct_0:CoveredText,
cp_0:Concept,
label_0:getConcept().getPrefLabel().value,
areOverlapping($0))
$1:NormalizedNamedEntity(
ct_1:CoveredText,
cp_1:Concept,
label_1:getConcept().getPrefLabel().value,
isLower($1,$0))
$2:NormalizedNamedEntity(
ct_2:CoveredText,
cp_2:Concept,
label_2:getConcept().getPrefLabel().value,
getConcept().identifierSource.toLowerCase.contains("anatomicpart"))
then
int start = getStart($0,$0,$1,$1,$0,$2);
int ende = getStop($0,$0,$1,$1,$0,$2);
String attribute = label_0+" "+label_0+" "+label_1+"
"+label_1+" "+label_0+"
"+label_2;
insert(annotate(aJCas, "de.cloud4health.odm.eprd.itemGroup.operation", 435,
attribute, start, ende, "", attribute));
end
I'll try to reproduce the error and then write out the rule which throws the
exception.
Greetings
Bojan
----- Ursprüngliche Mail -----
Von: "Wolfgang Laun" <wolfgang.laun(a)gmail.com>
An: "Rules Users List" <rules-users(a)lists.jboss.org>
Gesendet: Freitag, 5. Juli 2013 12:24:28
Betreff: Re: [rules-users] Unable to resolve class x for identifier y
Could be a bug.
Do you have a rule containing a pattern
NormalizedNamedEntity( this ... )
or similar? Or a trace showing which rule fires, and what it inserts?
If not, add logging - without this info it's hopeless.
-W
On 05/07/2013, Bojan Janisch <bojan.janisch(a)scai.fraunhofer.de> wrote:
> Hey everyone,
>
> I'm using Drools in a multithreaded environment where multiple
> KnowledgeBuilder and StatefulKnowledgeSessions are created parallel. Until
> now everything runs smooth, but suddenly I got this error:
>
> Exception in thread "ECJ Evaluation Thread 5"
> org.drools.RuntimeDroolsException: Unable to resolve class
> 'de.fraunhofer.scai.bio.extraction.types.text.NormalizedNamedEntity' for
> identifier 'this
> at
>
org.drools.base.mvel.MVELCompilationUnit.getCompiledExpression(MVELCompilationUnit.java:231)
> at
>
org.drools.rule.constraint.MvelConstraint.createMvelConditionEvaluator(MvelConstraint.java:206)
> at
> org.drools.rule.constraint.MvelConstraint.evaluate(MvelConstraint.java:190)
> at
>
org.drools.rule.constraint.MvelConstraint.isAllowedCachedLeft(MvelConstraint.java:169)
> at
>
org.drools.common.SingleBetaConstraints.isAllowedCachedLeft(SingleBetaConstraints.java:125)
> at org.drools.reteoo.JoinNode.propagateFromLeft(JoinNode.java:105)
> at org.drools.reteoo.JoinNode.assertLeftTuple(JoinNode.java:95)
> at
>
org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:196)
> at
>
org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:71)
> at org.drools.reteoo.JoinNode.propagateFromRight(JoinNode.java:159)
> at org.drools.reteoo.JoinNode.assertObject(JoinNode.java:148)
> at
>
org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:59)
> at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:141)
> at
>
org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:497)
> at
>
org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:382)
> at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:235)
> at org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:240)
> at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:350)
> at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:311)
> at
> org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:903)
> at
> org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:847)
> at
>
org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:269)
> at rulevolution.RulEvolution.runDrools(RulEvolution.java:310)
> at rulevolution.RulEvolution.evaluate(RulEvolution.java:161)
> at ec.simple.SimpleEvaluator.evalPopChunk(SimpleEvaluator.java:259)
> at
> ec.simple.SimpleEvaluator$SimpleEvaluatorThreadCG.run(SimpleEvaluator.java:341)
> at ec.util.ThreadPool$PoolThread.run(ThreadPool.java:57)
>
> I don't know why it happened, my program already ran for about 15 minutes.
> Could someone explain me what could cause such an error? I didn't find
> much
> information about it in the internet.
>
> Thanks and greetings
>
> Bojan
> _______________________________________________
> rules-users mailing list
> rules-users(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/rules-users
>
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users