Hi,

 

I have the following template and rule defined in a file:

 

(deftemplate S 

(declare (from-class svf.data.S))

)

 

(defrule LVC

?s <- (S (name "ABC") (version ~/2\.6\..*/))

=>

(add new svf.data.V)

)

 

Where V and S are java objects and name and version are String members
belonging to S.

 

I can get this rule to fire from the jess command line without any
problem.

 

I am trying to use the JSR-94 api to register a RuleExceutionSet and
create a StatelessRuleSession for the set. But the following code:

 

ruleAdministrator = ruleServiceProvider.getRuleAdministrator();

LocalRuleExecutionSetProvider ruleExecutionSetProvider =
ruleAdministrator.getLocalRuleExecutionSetProvider(properties);

FileInputStream reader = new FileInputStream(RULES_FILE); 

RuleExecutionSet ruleSet =
ruleExecutionSetProvider.createRuleExecutionSet(reader, properties);

ruleAdministrator.registerRuleExecutionSet(RULESET_URI, ruleSet,
properties);

reader.close();

 

RuleRuntime ruleRuntime = ruleServiceProvider.getRuleRuntime();

StatelessRuleSession session = (StatelessRuleSession)
ruleRuntime.createRuleSession(RULESET_URI, null,
RuleRuntime.STATELESS_SESSION_TYPE);

 

 

Throws the following exception:

 

RuleException(javax.rules.RuleSessionCreateException: Problem creating
rule session), root cause(java.io.NotSerializableException: jess.b4)

      at jess.jsr94.h.<init>(Unknown Source)

      at jess.jsr94.c.<init>(Unknown Source)

      at jess.jsr94.l.createRuleSession(Unknown Source)

      at svf.rules.engine.RuleTest.testRules(RuleTest.java:94)

      at svf.rules.engine.RuleTest.main(RuleTest.java:150)

Caused by: java.io.NotSerializableException: jess.b4

      at java.io.ObjectOutputStream.writeObject0(Unknown Source)

      at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)

      at java.io.ObjectOutputStream.writeSerialData(Unknown Source)

      at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)

      at java.io.ObjectOutputStream.writeObject0(Unknown Source)

      at java.io.ObjectOutputStream.writeObject(Unknown Source)

      at java.util.HashMap.writeObject(Unknown Source)

      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

      at java.lang.reflect.Method.invoke(Unknown Source)

      at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)

      at java.io.ObjectOutputStream.writeSerialData(Unknown Source)

      at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)

      at java.io.ObjectOutputStream.writeObject0(Unknown Source)

      at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)

      at java.io.ObjectOutputStream.defaultWriteObject(Unknown Source)

      at java.util.Collections$SynchronizedMap.writeObject(Unknown
Source)

      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

      at java.lang.reflect.Method.invoke(Unknown Source)

      at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)

      at java.io.ObjectOutputStream.writeSerialData(Unknown Source)

      at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)

      at java.io.ObjectOutputStream.writeObject0(Unknown Source)

      at java.io.ObjectOutputStream.writeObject(Unknown Source)

      at jess.Rete.bsave(Unknown Source)

      at jess.jsr94.j.clone(Unknown Source)

      ... 5 more

 

 

 

When I remove the regular expression part from the rule above, the
RuleSession gets successfully created without any problems. 

Is there something I am doing wrong, or is there a problem with the
regular expression syntax when used from JSR-94?

 

Thanks,

Shyamal

Reply via email to