SUBSTRING Function is being evaluated differently

If you think that something doesn't work in Aware IM post your message here
Post Reply
BobK
Posts: 544
Joined: Thu Jan 31, 2008 2:14 pm
Location: Cincinnati, Ohio, USA

SUBSTRING Function is being evaluated differently

Post by BobK »

I have a rule with the SUBSTRING Function in the Rule's Condition.
In Version 8.4 Build 2722, the rule processed successfully but in Version 8.5 Build 2822, I get an Internal error.

The rule is attached to to the Buseness Object and is:

Code: Select all

If TestSub.SerialNumber IS DEFINED AND SUBSTRING(TestSub.SerialNumber,0,3)='ABC' Then 
 TestSub.Account=123
I also have a process with the only rule:

Code: Select all

ENTER NEW TestSub
In Version 8.4 Build 2722, executing the process brings up the TestSub form.

In Version 8.5 Build 2822, executing the process brings up the following error message:
Internal error. String index out of range:3

Here are the logs from version 8.5 Build 2822


Server Output

com.bas.basserver.executionengine.ExecutionException: Internal error. String index out of range: 3
at com.bas.basserver.executionengine.rliproc.H.A(Unknown Source)
at com.bas.basserver.executionengine.rliproc.H.execute(Unknown Source)
at com.bas.basserver.executionengine.ExecutionEngine.A(Unknown Source)
at com.bas.basserver.executionengine.ExecutionEngine.startChildProcess(Unknown Source)
at com.bas.basserver.executionengine.ExecutionEngine.A(Unknown Source)
at com.bas.basserver.executionengine.ExecutionEngine.doRecalculateObject(Unknown Source)
at com.bas.basserver.executionengine.ExecutionEngine.calculateInitialValues(Unknown Source)
at com.bas.basserver.executionengine.rliproc.I.C(Unknown Source)
at com.bas.basserver.executionengine.rliproc.I.B(Unknown Source)
at com.bas.basserver.executionengine.rliproc.I.A(Unknown Source)
at com.bas.basserver.executionengine.rliproc.F.M(Unknown Source)
at com.bas.basserver.executionengine.rliproc.F.S(Unknown Source)
at com.bas.basserver.executionengine.rliproc.F.P(Unknown Source)
at com.bas.basserver.executionengine.rliproc.H.A(Unknown Source)
at com.bas.basserver.executionengine.rliproc.H.C(Unknown Source)
at com.bas.basserver.executionengine.rliproc.H.U(Unknown Source)
at com.bas.basserver.executionengine.rliproc.H.B(Unknown Source)
at com.bas.basserver.executionengine.rliproc.H.A(Unknown Source)
at com.bas.basserver.executionengine.rliproc.H.execute(Unknown Source)
at com.bas.basserver.executionengine.ExecutionEngine.A(Unknown Source)
at com.bas.basserver.executionengine.ExecutionEngine.A(Unknown Source)
at com.bas.basserver.executionengine.ExecutionEngine.A(Unknown Source)
at com.bas.basserver.executionengine.ExecutionEngine.executeProcess(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.bas.basserver.bsmanager.E.B(Unknown Source)
at com.bas.basserver.bsmanager.E.A(Unknown Source)
at com.bas.basserver.bsmanager.E.A(Unknown Source)
at com.bas.basserver.iopipes.ComponentSink.processMessage(Unknown Source)
at org.openadaptor.adaptor.STPipelineController.processMessage(STPipelineController.java:68)
at com.bas.openadaptor.NonTransactionalController.processMessage(NonTransactionalController.java:136)
at org.openadaptor.adaptor.AbstractSimplePipe.processMessage(AbstractSimplePipe.java:222)
at org.openadaptor.adaptor.STPipelineController.processMessage(STPipelineController.java:68)
at com.bas.openadaptor.NonTransactionalController.processMessage(NonTransactionalController.java:136)
at org.openadaptor.adaptor.AbstractSimpleSource.processMessage(AbstractSimpleSource.java:403)
at org.openadaptor.adaptor.AbstractSimpleSource.sourceProcess(AbstractSimpleSource.java:1049)
at org.openadaptor.adaptor.AbstractSimpleSource.sourceProcess(AbstractSimpleSource.java:1012)
at com.bas.openadaptor.MTJMSListener$JMSMessageHandler.run(MTJMSListener.java:275)
at java.lang.Thread.run(Thread.java:745)
com.bas.basserver.executionengine.ExecutionException: Internal error. String index out of range: 3
at com.bas.basserver.executionengine.rliproc.H.A(Unknown Source)
at com.bas.basserver.executionengine.rliproc.H.execute(Unknown Source)
at com.bas.basserver.executionengine.ExecutionEngine.A(Unknown Source)
at com.bas.basserver.executionengine.ExecutionEngine.startChildProcess(Unknown Source)
at com.bas.basserver.executionengine.ExecutionEngine.A(Unknown Source)
at com.bas.basserver.executionengine.ExecutionEngine.doRecalculateObject(Unknown Source)
at com.bas.basserver.executionengine.ExecutionEngine.calculateInitialValues(Unknown Source)
at com.bas.basserver.executionengine.rliproc.I.C(Unknown Source)
at com.bas.basserver.executionengine.rliproc.I.B(Unknown Source)
at com.bas.basserver.executionengine.rliproc.I.A(Unknown Source)
at com.bas.basserver.executionengine.rliproc.F.M(Unknown Source)
at com.bas.basserver.executionengine.rliproc.F.S(Unknown Source)
at com.bas.basserver.executionengine.rliproc.F.P(Unknown Source)
at com.bas.basserver.executionengine.rliproc.H.A(Unknown Source)
at com.bas.basserver.executionengine.rliproc.H.C(Unknown Source)
at com.bas.basserver.executionengine.rliproc.H.U(Unknown Source)
at com.bas.basserver.executionengine.rliproc.H.B(Unknown Source)
at com.bas.basserver.executionengine.rliproc.H.A(Unknown Source)
at com.bas.basserver.executionengine.rliproc.H.execute(Unknown Source)
at com.bas.basserver.executionengine.ExecutionEngine.A(Unknown Source)
at com.bas.basserver.executionengine.ExecutionEngine.A(Unknown Source)
at com.bas.basserver.executionengine.ExecutionEngine.A(Unknown Source)
at com.bas.basserver.executionengine.ExecutionEngine.executeProcess(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.bas.basserver.bsmanager.E.B(Unknown Source)
at com.bas.basserver.bsmanager.E.A(Unknown Source)
at com.bas.basserver.bsmanager.E.A(Unknown Source)
at com.bas.basserver.iopipes.ComponentSink.processMessage(Unknown Source)
at org.openadaptor.adaptor.STPipelineController.processMessage(STPipelineController.java:68)
at com.bas.openadaptor.NonTransactionalController.processMessage(NonTransactionalController.java:136)
at org.openadaptor.adaptor.AbstractSimplePipe.processMessage(AbstractSimplePipe.java:222)
at org.openadaptor.adaptor.STPipelineController.processMessage(STPipelineController.java:68)
at com.bas.openadaptor.NonTransactionalController.processMessage(NonTransactionalController.java:136)
at org.openadaptor.adaptor.AbstractSimpleSource.processMessage(AbstractSimpleSource.java:403)
at org.openadaptor.adaptor.AbstractSimpleSource.sourceProcess(AbstractSimpleSource.java:1049)
at org.openadaptor.adaptor.AbstractSimpleSource.sourceProcess(AbstractSimpleSource.java:1012)
at com.bas.openadaptor.MTJMSListener$JMSMessageHandler.run(MTJMSListener.java:275)
at java.lang.Thread.run(Thread.java:745)
com.bas.basserver.executionengine.ExecutionException: Internal error. String index out of range: 3
at com.bas.basserver.executionengine.rliproc.H.A(Unknown Source)
at com.bas.basserver.executionengine.rliproc.H.execute(Unknown Source)
at com.bas.basserver.executionengine.ExecutionEngine.A(Unknown Source)
at com.bas.basserver.executionengine.ExecutionEngine.startChildProcess(Unknown Source)
at com.bas.basserver.executionengine.ExecutionEngine.A(Unknown Source)
at com.bas.basserver.executionengine.ExecutionEngine.doRecalculateObject(Unknown Source)
at com.bas.basserver.executionengine.ExecutionEngine.calculateInitialValues(Unknown Source)
at com.bas.basserver.executionengine.rliproc.I.C(Unknown Source)
at com.bas.basserver.executionengine.rliproc.I.B(Unknown Source)
at com.bas.basserver.executionengine.rliproc.I.A(Unknown Source)
at com.bas.basserver.executionengine.rliproc.F.M(Unknown Source)
at com.bas.basserver.executionengine.rliproc.F.S(Unknown Source)
at com.bas.basserver.executionengine.rliproc.F.P(Unknown Source)
at com.bas.basserver.executionengine.rliproc.H.A(Unknown Source)
at com.bas.basserver.executionengine.rliproc.H.C(Unknown Source)
at com.bas.basserver.executionengine.rliproc.H.U(Unknown Source)
at com.bas.basserver.executionengine.rliproc.H.B(Unknown Source)
at com.bas.basserver.executionengine.rliproc.H.A(Unknown Source)
at com.bas.basserver.executionengine.rliproc.H.execute(Unknown Source)
at com.bas.basserver.executionengine.ExecutionEngine.A(Unknown Source)
at com.bas.basserver.executionengine.ExecutionEngine.A(Unknown Source)
at com.bas.basserver.executionengine.ExecutionEngine.A(Unknown Source)
at com.bas.basserver.executionengine.ExecutionEngine.executeProcess(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.bas.basserver.bsmanager.E.B(Unknown Source)
at com.bas.basserver.bsmanager.E.A(Unknown Source)
at com.bas.basserver.bsmanager.E.A(Unknown Source)
at com.bas.basserver.iopipes.ComponentSink.processMessage(Unknown Source)
at org.openadaptor.adaptor.STPipelineController.processMessage(STPipelineController.java:68)
at com.bas.openadaptor.NonTransactionalController.processMessage(NonTransactionalController.java:136)
at org.openadaptor.adaptor.AbstractSimplePipe.processMessage(AbstractSimplePipe.java:222)
at org.openadaptor.adaptor.STPipelineController.processMessage(STPipelineController.java:68)
at com.bas.openadaptor.NonTransactionalController.processMessage(NonTransactionalController.java:136)
at org.openadaptor.adaptor.AbstractSimpleSource.processMessage(AbstractSimpleSource.java:403)
at org.openadaptor.adaptor.AbstractSimpleSource.sourceProcess(AbstractSimpleSource.java:1049)
at org.openadaptor.adaptor.AbstractSimpleSource.sourceProcess(AbstractSimpleSource.java:1012)
at com.bas.openadaptor.MTJMSListener$JMSMessageHandler.run(MTJMSListener.java:275)
at java.lang.Thread.run(Thread.java:745)
2020-10-05 09:50:41,003 ERROR Test#admin -Execution Exception after starting process TestIt message Internal error. String index out of range: 3


Production Log

2020-10-05 09:50:40,990 RULE_EVALUATION Test#admin -20 Executing process TestIt
2020-10-05 09:50:40,990 RULE_EVALUATION Test#admin -29 Started evaluation of rules
2020-10-05 09:50:40,990 RULE_EVALUATION Test#admin -22 Evaluating rule 'EnterIt' ENTER NEW TestSub
2020-10-05 09:50:40,990 RULE_EVALUATION Test#admin -2 Adding action ENTER NEW TestSub to the agenda
2020-10-05 09:50:40,990 RULE_EVALUATION Test#admin -16 Finished rule evaluation
2020-10-05 09:50:40,991 RULE_EVALUATION Test#admin -16 Finished evaluation of rules
2020-10-05 09:50:40,991 RULE_EVALUATION Test#admin -15 Executing action ENTER NEW TestSub
2020-10-05 09:50:40,995 RULE_EVALUATION Test#admin -31 Started calculating initial values for business object TestSub
2020-10-05 09:50:40,997 RULE_EVALUATION Test#admin -29 Started evaluation of rules
2020-10-05 09:50:40,997 RULE_EVALUATION Test#admin -22 Evaluating rule 'PopNbr' If TestSub.SerialNumber IS DEFINED AND SUBSTRING(TestSub.SerialNumber,0,3)='ABC' Then
TestSub.Account=123
2020-10-05 09:50:40,997 RULE_EVALUATION Test#admin -6 Evaluating condition TestSub.SerialNumber IS DEFINED
2020-10-05 09:50:40,997 RULE_EVALUATION Test#admin -7 Condition evaluated to false: <UNDEFINED>
2020-10-05 09:50:40,998 RULE_EVALUATION Test#admin -6 Evaluating condition SUBSTRING(TestSub.SerialNumber,0,3)='ABC'
2020-10-05 09:50:40,998 RULE_EVALUATION Test#admin -16 Finished rule evaluation

2020-10-05 09:50:40,998 RULE_EVALUATION Test#admin -16 Finished evaluation of rules
2020-10-05 09:50:41,000 RULE_EVALUATION Test#admin -16 Finished calculating initial values for business object TestSub
2020-10-05 09:50:41,000 ERROR Test#admin -Exception while executing method ENTER NEW Exception class=com.bas.basserver.executionengine.ExecutionException message Internal error. String index out of range: 3
2020-10-05 09:50:41,000 RULE_EVALUATION Test#admin -16 Finished executing action ENTER NEW TestSub
2020-10-05 09:50:41,000 RULE_EVALUATION Test#admin -25 Started evaluation of rules after data has been changed by the actions
2020-10-05 09:50:41,000 RULE_EVALUATION Test#admin -6 Checking rule EnterIt
2020-10-05 09:50:41,000 RULE_EVALUATION Test#admin -16 Finished evaluation of rules after data has been changed by the actions
2020-10-05 09:50:41,003 RULE_EVALUATION Test#admin -18 Process TestIt has failed


In contrast, the Production Log from Version 8.4 Build 2722


Production Log

2020-10-05 10:19:39,771 RULE_EVALUATION Test#admin -20 Executing process TestIt
2020-10-05 10:19:39,775 RULE_EVALUATION Test#admin -29 Started evaluation of rules
2020-10-05 10:19:39,775 RULE_EVALUATION Test#admin -22 Evaluating rule 'EnterIt' ENTER NEW TestSub
2020-10-05 10:19:39,776 RULE_EVALUATION Test#admin -2 Adding action ENTER NEW TestSub to the agenda
2020-10-05 10:19:39,777 RULE_EVALUATION Test#admin -16 Finished rule evaluation
2020-10-05 10:19:39,777 RULE_EVALUATION Test#admin -16 Finished evaluation of rules
2020-10-05 10:19:39,777 RULE_EVALUATION Test#admin -15 Executing action ENTER NEW TestSub
2020-10-05 10:19:39,790 RULE_EVALUATION Test#admin -31 Started calculating initial values for business object TestSub
2020-10-05 10:19:39,795 RULE_EVALUATION Test#admin -29 Started evaluation of rules
2020-10-05 10:19:39,795 RULE_EVALUATION Test#admin -22 Evaluating rule 'PopNbr' If TestSub.SerialNumber IS DEFINED AND SUBSTRING(TestSub.SerialNumber,0,3)='ABC' Then
TestSub.Account=123
2020-10-05 10:19:39,797 RULE_EVALUATION Test#admin -6 Evaluating condition TestSub.SerialNumber IS DEFINED
2020-10-05 10:19:39,797 RULE_EVALUATION Test#admin -7 Condition evaluated to false: <UNDEFINED>
2020-10-05 10:19:39,804 RULE_EVALUATION Test#admin -6 Evaluating condition SUBSTRING(TestSub.SerialNumber,0,3)='ABC'
2020-10-05 10:19:39,805 RULE_EVALUATION Test#admin -7 Condition evaluated to false: (<UNDEFINED>,0,3):<UNDEFINED>=ABC
2020-10-05 10:19:39,805 RULE_EVALUATION Test#admin -16 Finished rule evaluation
2020-10-05 10:19:39,805 RULE_EVALUATION Test#admin -16 Finished evaluation of rules
2020-10-05 10:19:39,805 RULE_EVALUATION Test#admin -16 Finished calculating initial values for business object TestSub
2020-10-05 10:19:39,807 RULE_EVALUATION Test#admin -16 Finished executing action ENTER NEW TestSub
2020-10-05 10:19:39,808 RULE_EVALUATION Test#admin -25 Started evaluation of rules after data has been changed by the actions
2020-10-05 10:19:39,808 RULE_EVALUATION Test#admin -6 Checking rule EnterIt
2020-10-05 10:19:39,808 RULE_EVALUATION Test#admin -16 Finished evaluation of rules after data has been changed by the actions
2020-10-05 10:19:39,850 RULE_EVALUATION Test#admin -21 Process TestIt is suspended. Its id is 1
Bob
aware_support
Posts: 7523
Joined: Sun Apr 24, 2005 12:36 am
Contact:

Re: SUBSTRING Function is being evaluated differently

Post by aware_support »

This should be fixed in build 2823
Aware IM Support Team
Post Reply