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