What about FactType.getFactClass()? Should avoid all issues.
Admittedly, in order to get the FactType, you'll have to start with a
package name and the declared type name as strings, but these ought to
be identlical to what you have in your DRL. But the Class is the
Class.
But I think OP's problem is solved...
Cheers
-W
On 10/11/2013, Stephen Masters <stephen.masters(a)me.com> wrote:
That’s what I meant … if a Java fact is being used, then using
.getClass()
is a better approach than strings.
I wrote the method to support DRL declared types originally. If I create a
declared type, then I know that the simple name will match the name of my
declared type once Drools has converted it internally into a Java class.
However, I can’t reference the class directly at Java compile time, so a
class-based solution won’t work. Additionally, I don’t like to assume that
the full class name with packages, that Drools will generate will remain the
same across different versions. Whereas I do know that within my code, I
won’t be creating 2 facts with the same simple name.
Admittedly these days, I tend to avoid using declared types that are
expected to exist outside of working memory, so there’s not much reason for
me to use this String-based finder any more. In fact I wrote a new method
earlier today, with a Class argument, as it is a better idea for most of my
uses these days. :)
On 10 Nov 2013, at 15:06, Wolfgang Laun <wolfgang.laun(a)gmail.com> wrote:
> I just see that I forgot to add "equals":
> return object.getClass().equals( factClass );
>
> @Stephen: I don't understand "if a Java fact is being used". Sure, the
> object filter's accept takes an object, so object.getClass() is the
> typical way to go. But why the detour into strings?
> ....StudentBean.class isn't much longer than the class name as a
> string ;-)
>
> -W
>
> On 10/11/2013, Stephen Masters <stephen.masters(a)me.com> wrote:
>> Good point Wolfgang … it’s a bit of my code that I provided. I tend to
>> use
>> SimpleName to make it easy to find declared types as well as Java
>> classes.
>> But if a Java fact is being used, then getClass() is a much better idea.
>>
>>
>> On 10 Nov 2013, at 07:27, Wolfgang Laun <wolfgang.laun(a)gmail.com> wrote:
>>
>>> Digging a bit into Java's API always helps ;-) Note that
>>> Class.getSimpleName() really does what it says, as opposed to
>>> Class.getName().
>>>
>>> It would be best to avoid the String representation:
>>>
>>> Collection findFacts( StatefulKnowledgeSession session, Class factClass
>>> ){...
>>> public boolean accept( Object object ){
>>> return object.getClass().( factClass );
>>> }...}
>>>
>>> -W
>>>
>>> On 10/11/2013, forsakendoll <forsakendoll(a)hotmail.com> wrote:
>>>> How can I get the value from a stateful session. As they say I can use
>>>> this:
>>>>
>>>> protected Collection findFacts( final StatefulKnowledgeSession
>>>> session,
>>>> final String factClass )
>>>> {
>>>> ObjectFilter filter = new ObjectFilter()
>>>> {
>>>> @Override
>>>> public boolean accept( Object object )
>>>> {
>>>> return object.getClass().getSimpleName().equals(
>>>> factClass
>>>> );
>>>> }
>>>> };
>>>>
>>>> Collection results = session.getObjects( filter );
>>>>
>>>> return results;
>>>> }
>>>>
>>>> to get the value from the rules. Given the fact the code already red
>>>> the
>>>> rules when I tried this:
>>>>
>>>> StatefulKnowledgeSession ksession =
>>>> aKnowledgeBase.newStatefulKnowledgeSession();
>>>>
>>>> ksession.insert( aBean );
>>>> ksession.fireAllRules();
>>>>
>>>> Collection result = findFacts( ksession,
>>>> "com.neu.als.thesis.db.beans.StudentBean" );
>>>>
>>>> ksession.dispose();
>>>> for( Object test : result )
>>>> {
>>>> System.out.println( test == null );
>>>> System.out.println( test );
>>>> }
>>>>
>>>> Nothing is printed. What is the proper way to get bean that I inserted
>>>> in
>>>> the rules?
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> View this message in context:
>>>>
http://drools.46999.n3.nabble.com/Drools-get-value-from-stateful-session-...
>>>> Sent from the Drools: User forum mailing list archive at
Nabble.com.
>>>> _______________________________________________
>>>> 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
>>
>
> _______________________________________________
> 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