I think Florian Fischer wrote: [Charset iso-8859-1 unsupported, filtering to ASCII...] > Strange error message > > Hello. I got the following error message that I cannot make any sense of. > "Bad index 21 in call to get() on this vector: > (MAIN::__not_or_test_CE)." >
Looks like a rule compilation error. I was able to reproduce it from your code so I will have a look and get back to you. Thanks for the report. > The rule generating the error is below, the error stack trace is after that. > If I use the (or ...) redoing two possible patient matches, it works. > If I use the equivalent (test (or ...)) it gives the error message and > seems to hang Jess badly. > > Is this use of (test ...) legitimate, or did I stumble uppon a bug? > > I am using Jess 6. > > Regards, > Florian Fischer > > --------------------------------------------------------------------------------------------- > The rule > --------------------------------------------------------------------------------------------- > (defrule topo-ATT-UPED-C-remove-patient > ?f <- (zone-includes-patient (zone ?z&"ATT-UPED-C") (patient ?ipat)) > (not (and > (patient (id ?ipat) (careUnitMnemo "UPED") > (flagCasChir ?fc) (flagTraumaRea ?ft)) > ; option 1 - test > ; (test (or (> ?fc 0) (> ?ft 0)) ) > ; option 2 - redo the matches > (or > (patient (id ?ipat) (careUnitMnemo "UPED") (flagCasChir > 1)) > (patient (id ?ipat) (careUnitMnemo "UPED") > (flagTraumaRea 1)) > ) > ; end options > (or > ; explicit ATT-UPED > (patient (id ?ipat) (room "ATT-UPED")) > ; ATT-UPED is default for UPED > (and > (patient (id ?ipat) (room ?r)) > (not (zone (zonetype "room") (unit "UPED") (room ?r)) ) > ) > ) > ) ) > => > (printout t "(jess) Special zone " ?z " looses patient " ?ipat crlf) > (retract ?f) > ) > > --------------------------------------------------------------------------------------------- > The error > --------------------------------------------------------------------------------------------- > Exception jess.JessException > Jess reported an error in routine ValueVector.get > while executing (> ?_2_fc 0) > while executing (or (> ?_2_fc 0) (> ?_2_ft 0)) > while executing 'test' CE > while executing rule LHS (Node2) > while executing rule LHS (Node2) > while executing rule LHS (TEQ) > while executing rule LHS (TECT). > Message: Bad index 21 in call to get() on this vector: > (MAIN::__not_or_test_CE). > Program text: ( defrule topo-ATT-UPED-C-remove-patient ?f <- ( > zone-includes-patient ( zone ?z & "ATT-UPED-C" ) ( patient ?ipat ) ) ( > not ( and ( patient ( id ?ipat ) ( careUnitMnemo "UPED" ) ( flagCasChir > ?fc ) ( flagTraumaRea ?ft ) ) ( test ( or ( > ?fc 0 ) ( > ?ft 0 ) ) ) ( > or ( patient ( id ?ipat ) ( room "ATT-UPED" ) ) ( and ( patient ( id > ?ipat ) ( room ?r ) ) ( not ( zone ( zonetype "room" ) ( unit "UPED" ) ( > room ?r ) ) ) ) ) ) ) = > ( printout t "(jess) Special zone " ?z " > looses patient " ?ipat crlf ) ( retract ?f ) ) at line 455. > === Stack trace: > Jess reported an error in routine ValueVector.get > while executing (> ?_2_fc 0) > while executing (or (> ?_2_fc 0) (> ?_2_ft 0)) > while executing 'test' CE > while executing rule LHS (Node2) > while executing rule LHS (Node2) > while executing rule LHS (TEQ) > while executing rule LHS (TECT). > Message: Bad index 21 in call to get() on this vector: > (MAIN::__not_or_test_CE). > Program text: ( defrule topo-ATT-UPED-C-remove-patient ?f <- ( > zone-includes-patient ( zone ?z & "ATT-UPED-C" ) ( patient ?ipat ) ) ( > not ( and ( patient ( id ?ipat ) ( careUnitMnemo "UPED" ) ( flagCasChir > ?fc ) ( flagTraumaRea ?ft ) ) ( test ( or ( > ?fc 0 ) ( > ?ft 0 ) ) ) ( > or ( patient ( id ?ipat ) ( room "ATT-UPED" ) ) ( and ( patient ( id > ?ipat ) ( room ?r ) ) ( not ( zone ( zonetype "room" ) ( unit "UPED" ) ( > room ?r ) ) ) ) ) ) ) = > ( printout t "(jess) Special zone " ?z " > looses patient " ?ipat crlf ) ( retract ?f ) ) at line 455. > at jess.ValueVector.get(ValueVector.java:77) > at jess.Fact.get(Fact.java:117) > at jess.BindingValue.resolveValue(BindingValue.java:82) > at jess.BindingValue.numericValue(BindingValue.java:114) > at jess.Gt.call(Funcall.java:1156) > at jess.FunctionHolder.call(FunctionHolder.java:30) > at jess.Funcall.execute(Funcall.java:266) > at jess.FuncallValue.resolveValue(FuncallValue.java:33) > at jess.Or.call(Funcall.java:1032) > at jess.FunctionHolder.call(FunctionHolder.java:30) > at jess.Funcall.execute(Funcall.java:266) > at jess.FuncallValue.resolveValue(FuncallValue.java:33) > at jess.Test1.doTest(Test1.java:88) > at jess.NodeJoin.runTests(NodeJoin.java:131) > at jess.NodeJoin.callNodeLeft(NodeJoin.java:115) > at jess.NodeJoin.passAlong(NodeJoin.java:149) > at jess.Node2.doRunTestsVaryRight(Node2.java:356) > at jess.Node2.runTestsVaryRight(Node2.java:313) > at jess.Node2.callNodeLeft(Node2.java:176) > at jess.NodeJoin.passAlong(NodeJoin.java:149) > at jess.NodeNot2.runTestsVaryRight(NodeNot2.java:45) > at jess.Node2.callNodeLeft(Node2.java:188) > at jess.NodeNot2.callNodeLeft(NodeNot2.java:25) > at jess.Node1RTL.passAlong(Node1RTL.java:35) > at jess.Node1RTL.callNodeRight(Node1RTL.java:25) > at jess.Node1.passAlong(Node1.java:60) > at jess.Node1TEQ.callNodeRight(Node1TEQ.java:48) > at jess.Node1.passAlong(Node1.java:60) > at jess.Node1TECT.callNodeRight(Node1TECT.java:38) > at jess.Rete.updateNodes(Rete.java:973) > at jess.ReteCompiler.addRule(ReteCompiler.java:103) > at jess.Rete.addDefrule(Rete.java:799) > at jess.Jesp.addARule(Jesp.java:1012) > at jess.Jesp.doParseDefrule(Jesp.java:968) > at jess.Jesp.parseDefrule(Jesp.java:893) > at jess.Jesp.parseSexp(Jesp.java:149) > at jess.Jesp.parse(Jesp.java:69) > at jess.Rete.executeCommand(Rete.java:1413) > at jess.Rete.executeCommand(Rete.java:1397) > at > ch.hcuge.panorama.tbserver.TBJessManager.executeJessStringToString(TBJessManager.java:516) > at > org.apache.jsp.auth.JessConsole_jsp._jspService(org.apache.jsp.auth.JessConsole_jsp:180) > at > org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > at > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) > at > org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) > at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) > at > org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) > at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) > at > org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:667) > at > org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) > at > org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) > at > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) > at java.lang.Thread.run(Thread.java:595) > > -------------------------------------------------------------------- > To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]' > in the BODY of a message to [EMAIL PROTECTED], NOT to the list > (use your own address!) List problems? Notify [EMAIL PROTECTED] > -------------------------------------------------------------------- > --------------------------------------------------------- Ernest Friedman-Hill Advanced Software Research Phone: (925) 294-2154 Sandia National Labs FAX: (925) 294-2234 PO Box 969, MS 9012 [EMAIL PROTECTED] Livermore, CA 94550 http://herzberg.ca.sandia.gov -------------------------------------------------------------------- To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]' in the BODY of a message to [EMAIL PROTECTED], NOT to the list (use your own address!) List problems? Notify [EMAIL PROTECTED] --------------------------------------------------------------------
