[rules-users] Fully qualified name for generated classes

Lance Leverich lance.leverich at gmail.com
Wed Sep 4 13:43:44 EDT 2013


The issue isn't that Foo cannot be resolved, as it was imported into both
packages from the Global Area. The packages compile just fine. I believe
what might be happening, though, is that each package is creating its own
version of Foo.
For example, am I experiencing something like...
    com.mypkg.a generates a class with a fully qualified name of
drools.com.mypkg.a.Foo
    com.mypkg.b generates a class with a fully qualified name of
drools.com.mypkg.b.Foo
?

If this is the case, is there someway within Guvnor to refer to a
particular version? I'm beginning to think that my best option might be to
create a POJO and import it. At least that way, I can make sure I know the
fully qualified (i.e. canonical) class name.

~ Lance


Cc:
> Date: Wed, 4 Sep 2013 15:41:55 +0100
> Subject: Re: [rules-users] Fully qualified name for generated classes
> Guvnor's Global Area has no affect on fully qualified type names; it's
> just a container for things you want to share.
>
> If Foo could not be resolved in myRuleB the rule would fail to compile.
>
> What do you observations show if you don't have any rule flow?
>
>
> On 4 September 2013 15:28, Lance Leverich <lance.leverich at gmail.com>wrote:
>
>> What would be the fully qualified name for a generated class, that is
>> based upon a fact type (for example a type named "Foo") that is defined
>> inside a declarative model?
>> How is the fully qualified name affected if the model resides in the
>> Global Area, and is imported into multiple packages?
>>
>> The reason for my question is that I have the following issue:
>>
>> In the Global Area, I have a declarative model (named MyModel) with a
>> definition like...
>>    declare Foo
>>       bar: String
>>       version: String
>>    end
>>
>> In a package (com.mypkg.a), I have imported MyModel from the Global Area.
>> I have a rule like...
>>
>>    rule "myRuleA"
>>    ruleflow-group "firstGroup"
>>    when
>>       not Foo( bar=="bar" )
>>    then
>>       Foo fact = new Foo();
>>       fact.setBar("bar");
>>       fact.setVersion("1");
>>       insert(fact);
>>
>> In another package (com.mypkg.b), I have also imported MyModel from the
>> Global Area. I have a rule like
>>
>>    rule "myRuleB"
>>   ruleflow-group "secondGroup"
>>   when
>>      Foo()
>>   then
>>      System.out.println("got at least one Foo");
>>
>> Looking at logs, the rule myRuleA fires as is appropriate; however, the
>> rule myRuleB does not fire, even though both ruleflow groups are
>> represented in the ruleflow. I have verified that both of the ruleflow
>> groups are activated, using the logs. My best guess at this point is that
>> the class generated for fact type Foo is different for each package. So,
>> how can I make sure that I am instantiating and checking for the same type
>> across packages?
>>
>>
>>
>> Lance Leverich
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20130904/90631ab4/attachment.html 


More information about the rules-users mailing list