Exception: Conversion to long not supported for type: class org.drools.examples.BilboAndTheDwarfs$DwarfShadowProxy
by gnumpf2006-drools@yahoo.de
Hi Mailinglist,
as discussed with tirelli in irc chat yesterday, I am sending my code:
I modified the golfer example with an other riddle. I wrote all given rules and when I run the code I get an
Exception in thread "main" org.drools.RuntimeDroolsException:
Conversion to long not supported for type: class org.drools.examples.BilboAndTheDwarfs$DwarfShadowProxy
at org.drools.spi.PatternExtractor.getLongValue(PatternExtractor.java:125)
at org.drools.rule.VariableRestriction$LongVariableContextEntry.updateFromTuple(VariableRestriction.java:260)
at org.drools.common.DefaultBetaConstraints.updateFromTuple(DefaultBetaConstraints.java:139)
[...]
I put my code in a tgz file which contains the following files:
BilboAndTheDwarfs.java --> my java class (based on golfer example)
BilboAndTheDwarfs.drl -> my rules
outputWithException.txt -> my output on the console
remarks.txt -> some remarks to the output
riddle.txt -> the riddle (automaticly translated)
solution.txt -> the solution of the riddle
I hope you can help me. Thank you in advance
Oliver (aka Hightower, gnumpf2006)
__________________________________ Ihr erstes Baby? Holen Sie sich Tipps von anderen Eltern. www.yahoo.de/clever
16 years, 11 months
BRMS Insurance Sample - InvalidClassException
by Paul Browne
Folks,
I'm working through the BRMS insurance example (the very last section in
the Drools documentation). I can build ( the example) and deploy both it
and the BRMS ok. I import the repository , rebuild the snapshot binaries
(BRMS), then hit the 'Continue' button on the drools insurance I get the
InvalidClassException (below).
I remember testing this for Edson and Ferando a couple of months back,
so it could be something stupid that I'm doing. I'm running JBoss 4.2.1
, Java 1.6.0_03 on Windows Vista. I'm currently using BRMS 4.0.4 , with
the insurance example from the Trunk (4.1.0 Snapshot),
Other things I've tried:
1) All combinations of latest stable 4.0.4 and Trunk (including the
obvious 4.0.4 for both, and the snapshot for both)
2) I've extracted the fact classes from the insurance war, made a
standalone jar, and imported these into the BRMS
3) I've check the URL that the Insurance example uses, and modified it
to take ' /LATEST'.
Michael (thanks for the earlier suggestion) : Is this (number 2) what
you meant by updating the Jars? Any other suggestions that I can try?
Thanks
Paul
07:18:44,174 ERROR [STDERR] java.io.InvalidClassException:
org.drools.base.BaseEvaluator; local class incompatible: stre
am classdesc serialVersionUID = -8775766726376324603, local class
serialVersionUID = 6904653022187134940
07:18:44,174 ERROR [STDERR] at
java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:562)
07:18:44,190 ERROR [STDERR] at
java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1583)
07:18:44,190 ERROR [STDERR] at
java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
07:18:44,190 ERROR [STDERR] at
java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1583)
07:18:44,190 ERROR [STDERR] at
java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
07:18:44,190 ERROR [STDERR] at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)
07:18:44,190 ERROR [STDERR] at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
07:18:44,190 ERROR [STDERR] at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
07:18:44,205 ERROR [STDERR] at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
07:18:44,205 ERROR [STDERR] at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
07:18:44,205 ERROR [STDERR] at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
07:18:44,205 ERROR [STDERR] at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
07:18:44,221 ERROR [STDERR] at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
07:18:44,221 ERROR [STDERR] at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
07:18:44,221 ERROR [STDERR] at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
07:18:44,221 ERROR [STDERR] at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
07:18:44,221 ERROR [STDERR] at
java.util.ArrayList.readObject(ArrayList.java:593)
07:18:44,221 ERROR [STDERR] at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
07:18:44,221 ERROR [STDERR] at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
07:18:44,236 ERROR [STDERR] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
07:18:44,236 ERROR [STDERR] at
java.lang.reflect.Method.invoke(Method.java:597)
07:18:44,236 ERROR [STDERR] at
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
07:18:44,236 ERROR [STDERR] at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1846)
07:18:44,236 ERROR [STDERR] at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
07:18:44,252 ERROR [STDERR] at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
07:18:44,252 ERROR [STDERR] at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
07:18:44,252 ERROR [STDERR] at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
07:18:44,252 ERROR [STDERR] at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
07:18:44,252 ERROR [STDERR] at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
07:18:44,252 ERROR [STDERR] at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
07:18:44,268 ERROR [STDERR] at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
07:18:44,268 ERROR [STDERR] at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
07:18:44,268 ERROR [STDERR] at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
07:18:44,283 ERROR [STDERR] at
java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667)
07:18:44,283 ERROR [STDERR] at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
07:18:44,283 ERROR [STDERR] at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
07:18:44,283 ERROR [STDERR] at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
07:18:44,283 ERROR [STDERR] at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
07:18:44,299 ERROR [STDERR] at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
07:18:44,299 ERROR [STDERR] at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
07:18:44,299 ERROR [STDERR] at
java.util.HashMap.readObject(HashMap.java:1030)
07:18:44,299 ERROR [STDERR] at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
07:18:44,299 ERROR [STDERR] at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
07:18:44,299 ERROR [STDERR] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
07:18:44,314 ERROR [STDERR] at
java.lang.reflect.Method.invoke(Method.java:597)
07:18:44,314 ERROR [STDERR] at
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
07:18:44,314 ERROR [STDERR] at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1846)
07:18:44,314 ERROR [STDERR] at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
07:18:44,330 ERROR [STDERR] at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
07:18:44,330 ERROR [STDERR] at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
07:18:44,330 ERROR [STDERR] at
org.drools.rule.PackageCompilationData.readExternal(PackageCompilationData.java:152)
07:18:44,330 ERROR [STDERR] at
java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1792)
07:18:44,330 ERROR [STDERR] at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1751)
07:18:44,330 ERROR [STDERR] at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
07:18:44,330 ERROR [STDERR] at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
07:18:44,346 ERROR [STDERR] at
org.drools.rule.Package.readExternal(Package.java:175)
07:18:44,346 ERROR [STDERR] at
java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1792)
07:18:44,346 ERROR [STDERR] at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1751)
07:18:44,346 ERROR [STDERR] at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
07:18:44,346 ERROR [STDERR] at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
07:18:44,361 ERROR [STDERR] at
org.drools.agent.HttpClientImpl.fetchPackage(HttpClientImpl.java:54)
07:18:44,361 ERROR [STDERR] at
org.drools.agent.URLScanner.readPackage(URLScanner.java:137)
07:18:44,361 ERROR [STDERR] at
org.drools.agent.URLScanner.getChangeSet(URLScanner.java:109)
07:18:44,361 ERROR [STDERR] at
org.drools.agent.URLScanner.loadPackageChanges(URLScanner.java:88)
07:18:44,361 ERROR [STDERR] at
org.drools.agent.RuleAgent.checkForChanges(RuleAgent.java:330)
07:18:44,361 ERROR [STDERR] at
org.drools.agent.RuleAgent.refreshRuleBase(RuleAgent.java:298)
07:18:44,377 ERROR [STDERR] at
org.drools.agent.RuleAgent.configure(RuleAgent.java:284)
07:18:44,377 ERROR [STDERR] at
org.drools.agent.RuleAgent.init(RuleAgent.java:208)
07:18:44,377 ERROR [STDERR] at
org.drools.agent.RuleAgent.newRuleAgent(RuleAgent.java:176)
07:18:44,377 ERROR [STDERR] at
org.drools.agent.RuleAgent.newRuleAgent(RuleAgent.java:148)
07:18:44,377 ERROR [STDERR] at
org.drools.agent.RuleAgent.newRuleAgent(RuleAgent.java:216)
07:18:44,377 ERROR [STDERR] at
org.acme.insurance.web.InsuranceSessionHelper.loadRuleBaseFromRuleAgent(InsuranceSess
ionHelper.java:26)
07:18:44,392 ERROR [STDERR] at
org.acme.insurance.web.InsuranceSessionHelper.getSession(InsuranceSessionHelper.java:
17)
07:18:44,392 ERROR [STDERR] at
org.acme.insurance.web.DroolsBusiness.execute(DroolsBusiness.java:46)
07:18:44,392 ERROR [STDERR] at
org.acme.insurance.web.InsuranceServlet.doGet(InsuranceServlet.java:24)
07:18:44,392 ERROR [STDERR] at
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
07:18:44,392 ERROR [STDERR] at
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
07:18:44,392 ERROR [STDERR] at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterCha
in.java:290)
07:18:44,408 ERROR [STDERR] at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
206)
07:18:44,408 ERROR [STDERR] at
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
07:18:44,408 ERROR [STDERR] at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterCha
in.java:235)
07:18:44,424 ERROR [STDERR] at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
206)
07:18:44,424 ERROR [STDERR] at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
07:18:44,424 ERROR [STDERR] at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
07:18:44,424 ERROR [STDERR] at
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValv
e.java:179)
07:18:44,424 ERROR [STDERR] at
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
07:18:44,439 ERROR [STDERR] at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
07:18:44,455 ERROR [STDERR] at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
07:18:44,455 ERROR [STDERR] at
org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.j
ava:157)
07:18:44,455 ERROR [STDERR] at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
07:18:44,455 ERROR [STDERR] at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)
07:18:44,455 ERROR [STDERR] at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
07:18:44,470 ERROR [STDERR] at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protoco
l.java:580)
07:18:44,470 ERROR [STDERR] at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
07:18:44,470 ERROR [STDERR] at java.lang.Thread.run(Thread.java:619)
07:18:44,658 ERROR [STDERR] java.lang.IllegalArgumentException: Unknown
process ID: insuranceProcess
07:18:44,658 ERROR [STDERR] at
org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1571)
07:18:44,673 ERROR [STDERR] at
org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1565)
07:18:44,673 ERROR [STDERR] at
org.acme.insurance.web.InsuranceSessionHelper.getSession(InsuranceSessionHelper.java:
21)
07:18:44,673 ERROR [STDERR] at
org.acme.insurance.web.DroolsBusiness.execute(DroolsBusiness.java:46)
07:18:44,673 ERROR [STDERR] at
org.acme.insurance.web.InsuranceServlet.doGet(InsuranceServlet.java:24)
07:18:44,689 ERROR [STDERR] at
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
07:18:44,689 ERROR [STDERR] at
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
07:18:44,689 ERROR [STDERR] at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterCha
in.java:290)
07:18:44,689 ERROR [STDERR] at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
206)
07:18:44,689 ERROR [STDERR] at
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
07:18:44,689 ERROR [STDERR] at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterCha
in.java:235)
07:18:44,704 ERROR [STDERR] at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
206)
07:18:44,704 ERROR [STDERR] at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
07:18:44,704 ERROR [STDERR] at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
07:18:44,704 ERROR [STDERR] at
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValv
e.java:179)
07:18:44,720 ERROR [STDERR] at
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
07:18:44,720 ERROR [STDERR] at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
07:18:44,720 ERROR [STDERR] at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
07:18:44,720 ERROR [STDERR] at
org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.j
ava:157)
07:18:44,720 ERROR [STDERR] at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
07:18:44,736 ERROR [STDERR] at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)
07:18:44,736 ERROR [STDERR] at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
07:18:44,736 ERROR [STDERR] at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protoco
l.java:580)
07:18:44,736 ERROR [STDERR] at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
07:18:44,736 ERROR [STDERR] at java.lang.Thread.run(Thread.java:619)
07:19:14,516 INFO [STDOUT] ERROR 18-01 07:19:14,516
(Contexts.java:flushAndDestroyContexts:335) could not discover
transaction status
16 years, 11 months
add/remove rules dynamically at runtime?
by Guardian
Hello,
is it possible to add/remove rules dynamically at runtime? So that the
nothing have to deployed and the server does not need to reboot.
When it is possible, where is some documentation or examples about it?
Thx very much
16 years, 11 months
<pattern /> tag is not working in rule file
by prateek.katiyar@wipro.com
Hello all
I am using Drools 4.0.3
I am using a .xml rule file in my application in which I am validating
the user entered data through my rule file.
When I am not using <pattern /> tag in my rule file then it is working
fine but when I use it ,the rules are not firing even it is not showing
any exception also.
For your reference I am coping my rule file below :
<?xml version="1.0" encoding="UTF-8" ?>
<package xmlns="http://drools.org/drools-4.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" name="jbossrules"
xs:schemaLocation="http://drools.org/drools-4.0 drools-4.0.xsd">
<import name="com.wipro.evalidator.response.bean.ResponseBean" />
<global identifier="response"
type="com.wipro.evalidator.response.bean.ResponseBean" />
<import name="java.lang.*" />
<import name="com.wipro.airline.SearchBean" />
<rule name="rule1">
<rule-attribute name="agenda-group" value="AirlineApp" />
<rule-attribute name="activation-group"
value="activation_1195126928297" />
<lhs>
<pattern identifier="searchbean"
object-type="com.wipro.airline.SearchBean" />
<eval>true</eval>
</lhs>
<rhs>
System.out.println("date is not
valid.");response.setStatus("failure");response.setSubStatus("date_notva
lid");
</rhs>
</rule>
</package>
If <pattern /> tag is not allowed here then how can we use SearchBean
fields in the lhs part of the rule.
Any help will be appreciated.
Regards
Prateek Katiyar
The information contained in this electronic message and any attachments to this message are intended for the exclusive use of the addressee(s) and may contain proprietary, confidential or privileged information. If you are not the intended recipient, you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately and destroy all copies of this message and any attachments.
WARNING: Computer viruses can be transmitted via email. The recipient should check this email and any attachments for the presence of viruses. The company accepts no liability for any damage caused by any virus transmitted by this email.
www.wipro.com
16 years, 11 months
Drools and event based decisions, i.e. streaming market quotes
by Henry Canterburry
What would be the best approach using drools to handle event driven
decisions based on streaming data? In my case I am looking for a typical
stock market scenario. Ticker quotes usually come in at second
increments and depending on how many ticker symbols you subscribe to at
any one time, there can be a lot of data coming and and changing every
second. However, there probably isn't a need to keep large quantities of
historic data in memory...maybe the last 200-500 ticks. The outputs are
if a stock should be sold or bought, at what quantity and what price.
Once the decision has been made, we need to make sure it does not
persist past the point of being valid given the state of that data.
If I have rules that are meant to derive/calculate info and decisions
from the streaming data, what is the best integration architecture for
the rule engine with the rest of the application?
Stateful session which constantly updates the ticks in working memory
and queries the memory for results on an ongoing basis? In this case,
the session would be kept alive for as long as the data stream is going
(i.e. hours)? This approach would require very rigorous working memory
management and all the objects in it.
Or...loop constantly over a stateless session for each tick? This would
reduce the need to manage the number of objects in working memory since
only the amount needed would be inserted in the first place and read
back the results? Sounds inefficient and with lots of overhead.
Also, what about multi-threaded environments? Any potential for
conflicts between concurrent session instances?
Thanks
HC
16 years, 11 months
Multiple DSL sources
by mmquelo massi
Hi everybody,
I was wondering whether is possible to add multiple DSL sources to a single
rule package.
If we look to the *PackageBuilder* methods we do not find any method
which allows us to add more than one DSL source per DRL reader.
I would like to be able to do something like:
*package myRulePackage*
*expander DSLsource1;*
*expander DSLsource2;*
**
*rule "myMultipleDSLRule"*
* when*
* #*
* then*
* #*
*end*
**
**
*.....*
**
*rule*
* .....*
*end*
Is That possible??
In case It weren't possible, Would It be any workaround to this?
I guess I could workaround this using the class *DefaultExpanderResolver*
but I have got no idea on the way to do it.
Can You suggest me any way to do it?
Does anybody have ever had the same issue?
Let me know.
Thank You anyway.
Massi
16 years, 11 months
Problem with ternary and mvel
by vdelbart
Hi,
I have a problem with this simplified rule (mvel + ternary) :
rule "Your Third Rule"
dialect "mvel"
when
v:Venue()
then
v.activite = (v.um == null ? "it's null" : "it's not null");
end
before the execution I have this fact :
Venue(Type Hosp: null, activite: null, activite Hosp: null, um: null,
SousVenue: null)
when I execute the rule, I have :
Venue(Type Hosp: null, activite: true, activite Hosp: null, um: null,
SousVenue: null)
Of course with dialect = java it works but I need to use mvel dialect for
other reason in all of my rules.
maybe somebody have a workaround for this ?
Thanks,
Vincent
--
View this message in context: http://www.nabble.com/Problem-with-ternary-and-mvel-tp14452888p14452888.html
Sent from the drools - user mailing list archive at Nabble.com.
16 years, 11 months
BRMS version 4.0.4 problems
by Michael Neale
Something has gone awry, 4.0.4 BRMS seems to have been packaged badly
somehow. So please be patient while we sort it out.
Michael.
16 years, 11 months