my    assertDocument method uses all the data types Jess supports. The 
assertParameters is always just strings or a list of strings

On Sep 10, 2010, at 11:18 AM, Wolfgang Laun wrote:

> So everthing is String or list of String? (What if your data contains 
> numbers, where you'd like to use > in patterns?)
> 
> Is there a stable relationship between key/slot and its type, i.e., scalar 
> String or list of String?
> 
> You realize that a record of untyped fields (slots) is fundamentally 
> different from an approach where data is bound to be stored in (necessarily) 
> strongly typed fields of an object. There's no difficulty with writing 
> similar code for storing values from a Map into an object of some class, but 
> class fields must have fixed types.  
> 
> -W
> 
> 
> 2010/9/10 Donald Winston <[email protected]>
> This is what I'm doing:
> 
> /* Assert unordered facts from the request parameter map. A deftemplate with 
> matching id and 
>        * slots should already exist. 
>        */
>       public void assertParameterMap(String id, Map map, Rete engine) throws 
> JessException {
>               Fact fact = new Fact(id, engine);
>               Iterator keys = map.keySet().iterator();
>               while (keys.hasNext() == true) {
>                       String key = (String)keys.next();
>                       if (ID.equals(key) == true) continue;
>                       String[] paramValues = (String[])map.get(key);
>                       if (paramValues.length > 1) {
>                               ValueVector values = new ValueVector();
>                               for(String value : paramValues)
>                                       values.add(new Value(value, RU.STRING));
>                               fact.setSlotValue(key, new Value(values, 
> RU.LIST));
>                       }
>                       else
>                               fact.setSlotValue(key, new 
> Value(paramValues[0], RU.STRING));
>               }
>               engine.assertFact(fact);
>       }
> 
> I'm working on something similar for a jdom document object. I'm not using 
> POJOs. I'm using a data structure. (technically they're objects because java 
> is object oriented, but they're not "problem domain objects").
> 
> On Sep 10, 2010, at 10:12 AM, Wolfgang Laun wrote:
> 
>> If you insert POJOs as facts in Jess, you'll have to write a 
>>    (deftemplace X (declare (from-class X)))
>> and the fields available for pattern matching in rules rely on the JavaBeans 
>> convention.
>> 
>> I have (quite successfully) used POJOs resulting from unmarshalling an XML 
>> document (via JAXB) as facts, both in Drools and in Jess; most certainly 
>> without writing any "copycat" fact classes and tedious transformations.
>> 
>> As for globals: They play the same role in Drools as in Jess; in neither 
>> system are they part of the working memory.
>> 
>> I don't know what you could mean by a "standard fact class".
>> 
>> As for iterating over all fact objects in Drools' WM, Drools provides 
>> getObjects() in WorkingMemory; or you could set up a query and run this.
>> 
>> -W
>> 
>> 
>> On 10 September 2010 14:54, Donald Winston <[email protected]> wrote:
>> I'm reviewing JBoss Rules (Drools) for an application I'm starting to build. 
>> It appears that the only way to assert facts is to use the insert(Object) 
>> method where the object is a bean using the proper naming conventions for 
>> it's properties. There also appears to be a way to use arbitrary objects 
>> using globals but do these end up in the fact base? It's disturbing to me 
>> that I have to create a bunch of classes whose sole purpose in life is to 
>> support the rule base. This is similar to using java server pages and having 
>> to create a bunch of classes just to support each page. That's why I don't 
>> use java server pages and use xsl transformations instead. I want to use my 
>> xml jdom document to represent my data and not have to create a bunch of 
>> beans. I can't seem to find anything in the api where I can assert facts 
>> without creating my own custom classes. There's no standard Fact class?
>> 
>> I've been also experimenting with Jess and it provides an easy way for me to 
>> do this. I just iterate through my jdom document and create Fact objects and 
>> assert them. I can then execute the rules and then iterate through the 
>> updated fact base using engine.listFacts() and update my jdom document. It 
>> couldn't be easier or more natural. Is there an analogous way to do this in 
>> Drools?
>> 
>> 
>> Thank you very much.
>> _______________________________________________
>> rules-users mailing list
>> [email protected]
>> https://lists.jboss.org/mailman/listinfo/rules-users
>> 
>> _______________________________________________
>> rules-users mailing list
>> [email protected]
>> https://lists.jboss.org/mailman/listinfo/rules-users
> 
> 
> _______________________________________________
> rules-users mailing list
> [email protected]
> https://lists.jboss.org/mailman/listinfo/rules-users
> 
> 
> _______________________________________________
> rules-users mailing list
> [email protected]
> https://lists.jboss.org/mailman/listinfo/rules-users

_______________________________________________
rules-users mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to