[rules-dev] use of declared facts
Edson Tirelli
tirelli at post.com
Tue Jan 27 11:01:33 EST 2009
There should be no difference between MVEL and Java on this. If you can
try with M5 and open a JIRA in case it is not working, I appreciate.
[]s
Edson
2009/1/27 Michal Bali <michalbali at gmail.com>
> Thanks Edson,
> BTW, I've tried to instantiate an internal fact in a rule with MVEL dialect
> but it didn't worked. I've tried this in M4. I' haven't tried it yet in M5.
>
> Is this a known issue or should I create a new JIRA with test case?
>
> Best Regards,
> Michal
>
>
> On Tue, Jan 27, 2009 at 2:31 PM, Edson Tirelli <tirelli at post.com> wrote:
>
>>
>> Michal is correct from the point of view of the application. That is
>> required because the actual classes are generated at compile time and not
>> visible to the application classpath.
>>
>> Although, that is not the only way. Inside your rules, they are visible
>> and you instantiate them the same way as you instantiate any other java
>> Pojo:
>>
>> rule xyz
>> when
>> // sometihng
>> then
>> Person p = new Person();
>> p.setName( "Bob" );
>> insert( p );
>> end
>>
>> Also, if you use Guvnor to define your model, Guvnor is capable of
>> generating a jar file for you with the generated classes. This way you can
>> download the jar and add it to the classpath of your application and use it
>> as any POJOs too.
>>
>> []s
>> Edson
>>
>>
>> 2009/1/27 Michal Bali <michalbali at gmail.com>
>>
>> Look at this unit test for some examples:
>>>
>>> http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
>>>
>>> // Retrieve the generated fact type
>>> FactType cheeseFact = ruleBase.getFactType(
>>> "org.drools.generatedbeans.Cheese" );
>>>
>>> // Create a new Fact instance
>>> Object cheese = cheeseFact.newInstance();
>>>
>>> // Set a field value using the more verbose method chain...
>>> // should we add short cuts?
>>> // cheeseFact.getField( "type"
>>> ).getFieldAccessor().setValue( cheese,
>>> //
>>> "stilton" );
>>>
>>> cheeseFact.set( cheese,
>>> "type",
>>> "stilton" );
>>> assertEquals( "stilton",
>>> cheeseFact.get( cheese,
>>> "type" ) );
>>>
>>>
>>> On Tue, Jan 27, 2009 at 2:02 AM, Oleg Zenzin <zenzin at intalio.com> wrote:
>>>
>>>> There's now possibility to declare facts in the drl, like:
>>>>
>>>> declare Person
>>>> name: String
>>>> age: int
>>>> end
>>>>
>>>> My question is how do I instantiate this fact object during runtime? Do
>>>> I still need to have class Person compiled and existing somewhere in
>>>> classpath, or there's a helper class which I can use "fake the fact",
>>>> something like:
>>>>
>>>> FakeFact person = FakeFact("Person");
>>>> person.setField("name", "Oleg");
>>>> person.setField("age", "42");
>>>> session.insert(person);
>>>>
>>>> Or there's another nicer way?
>>>>
>>>> Thank you,
>>>> -Oleg Zenzin
>>>>
>>>> _______________________________________________
>>>> rules-dev mailing list
>>>> rules-dev at lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/rules-dev
>>>>
>>>>
>>>
>>> _______________________________________________
>>> rules-dev mailing list
>>> rules-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/rules-dev
>>>
>>>
>>
>>
>> --
>> Edson Tirelli
>> JBoss Drools Core Development
>> JBoss, a division of Red Hat @ www.jboss.com
>>
>> _______________________________________________
>> rules-dev mailing list
>> rules-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-dev
>>
>>
>
> _______________________________________________
> rules-dev mailing list
> rules-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-dev
>
>
--
Edson Tirelli
JBoss Drools Core Development
JBoss, a division of Red Hat @ www.jboss.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-dev/attachments/20090127/adc22a83/attachment.html
More information about the rules-dev
mailing list