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(a)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(a)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(a)gmail.com>
>
> Look at this unit test for some examples:
>>
>>
http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-compiler...
>>
>> // 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(a)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(a)lists.jboss.org
>>>
https://lists.jboss.org/mailman/listinfo/rules-dev
>>>
>>>
>>
>> _______________________________________________
>> rules-dev mailing list
>> rules-dev(a)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(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/rules-dev
>
>
_______________________________________________
rules-dev mailing list
rules-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev
--
Edson Tirelli
JBoss Drools Core Development
JBoss, a division of Red Hat @