Accessing oracle.sql.ARRAY values (filled from a mysql query)

1
+1
-1

Hi,

I am using BOS 6.2.1 and I am trying to access the ResultSet data from a query on my mySQL database. I configure the connector using de wizard and set the tableResult (on the last form of the configuration process, the grafics mode) to my pool variable rset (of type java.sql.ARRAY). When I test the connector, it's just work properly, and I can see the data on the form test result.

I need to show the data on a table widget on the next task form and I tried to setup the widget on a script with the code below (that I found here: http://community.bonitasoft.com/answers/fill-table-widget-values-db), but it does'nt work for me.

<em>final List<List<Object>> resultTable = new ArrayList<List<Object>>();<br />
        int maxColumn = rset.getMetaData().getColumnCount()+1;<br />
            while(rset.next()){<br />
                final List<Object> row = new ArrayList<Object>();<br />
                    for(int colIndex = 1; colIndex < maxColumn ; colIndex++){<br />
                        row.add(rset.getObject(colIndex));<br />
                    }<br />
                    resultTable.add(Collections.unmodifiableList(row));<br />
            }<br />
        return resultTable;</em>

Here is the engine log result:

<em>Jan 22, 2014 10:32:07 AM org.bonitasoft.console.server.listener.StudioWatchdogListener$1 run<br />
        Advertência: Bonita Studio watchdog process has started on 6969 with a delay of 20000ms<br />
        Jan 22, 2014 10:34:29 AM org.bonitasoft.forms.server.provider.impl.FormServiceProviderImpl resolveExpressions<br />
        Grave: Error while communicating with the engine.<br />
        org.bonitasoft.forms.server.exception.BPMEngineException: Error when evaluating expressions on activity instance 4<br />
            at org.bonitasoft.forms.server.accessor.api.ExpressionEvaluatorEngineClient.evaluateExpressionsOnActivityInstance(ExpressionEvaluatorEngineClient.java:44)<br />
            at org.bonitasoft.forms.server.api.impl.FormExpressionsAPIImpl.evaluateActivityExpressions(FormExpressionsAPIImpl.java:876)<br />
            at org.bonitasoft.forms.server.api.impl.FormWorkflowAPIImpl.getActivityFieldsValues(FormWorkflowAPIImpl.java:807)<br />
            at org.bonitasoft.forms.server.provider.impl.FormServiceProviderImpl.resolveExpressions(FormServiceProviderImpl.java:887)<br />
            at org.bonitasoft.forms.server.api.impl.util.FormFieldValuesUtil.setFormWidgetsValues(FormFieldValuesUtil.java:877)<br />
            at org.bonitasoft.forms.server.FormsServlet.getFormFirstPage(FormsServlet.java:218)<br />
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)<br />
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)<br />
            at java.lang.reflect.Method.invoke(Unknown Source)<br />
            at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:561)<br />
            at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208)<br />
            at org.bonitasoft.forms.server.FormsServlet.processCall(FormsServlet.java:130)<br />
            at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)<br />
            at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)<br />
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:643)<br />
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)<br />
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)<br />
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)<br />
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)<br />
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)<br />
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)<br />
            at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)<br />
            at org.bonitasoft.console.security.SessionFixationValve.invoke(SessionFixationValve.java:77)<br />
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)<br />
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)<br />
            at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)<br />
            at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)<br />
            at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)<br />
            at java.lang.Thread.run(Unknown Source)<br />
        Caused by: org.bonitasoft.engine.expression.ExpressionEvaluationException: org.bonitasoft.engine.expression.exception.SInvalidExpressionException: Declared return type unknown: oracle.sql.ARRAY for expression rset<br />
            at org.bonitasoft.engine.api.impl.ProcessAPIImpl.evaluateExpressionsOnActivityInstance(ProcessAPIImpl.java:5418)<br />
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)<br />
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)<br />
            at java.lang.reflect.Method.invoke(Unknown Source)<br />
            at org.bonitasoft.engine.api.impl.ServerAPIImpl.invokeAPI(ServerAPIImpl.java:292)<br />
            at org.bonitasoft.engine.api.impl.ServerAPIImpl.access$000(ServerAPIImpl.java:63)<br />
            at org.bonitasoft.engine.api.impl.ServerAPIImpl$1.call(ServerAPIImpl.java:261)<br />
            at org.bonitasoft.engine.transaction.JTATransactionServiceImpl.executeInTransaction(JTATransactionServiceImpl.java:207)<br />
            at org.bonitasoft.engine.api.impl.ServerAPIImpl.invokeAPIInTransaction(ServerAPIImpl.java:268)<br />
            at org.bonitasoft.engine.api.impl.ServerAPIImpl.invokeAPI(ServerAPIImpl.java:219)<br />
            at org.bonitasoft.engine.api.impl.ServerAPIImpl.invokeMethod(ServerAPIImpl.java:105)<br />
            at org.bonitasoft.engine.api.impl.ClientInterceptor.invoke(ClientInterceptor.java:88)<br />
            at com.sun.proxy.$Proxy13.evaluateExpressionsOnActivityInstance(Unknown Source)<br />
            at org.bonitasoft.forms.server.accessor.api.ExpressionEvaluatorEngineClient.evaluateExpressionsOnActivityInstance(ExpressionEvaluatorEngineClient.java:42)<br />
            ... 29 more<br />
        Caused by: org.bonitasoft.engine.expression.exception.SInvalidExpressionException: Declared return type unknown: oracle.sql.ARRAY for expression rset<br />
            at org.bonitasoft.engine.expression.impl.ExpressionServiceImpl.checkReturnType(ExpressionServiceImpl.java:161)<br />
            at org.bonitasoft.engine.expression.impl.ExpressionServiceImpl.evaluate(ExpressionServiceImpl.java:132)<br />
            at org.bonitasoft.engine.core.expression.control.api.impl.ExpressionResolverServiceImpl.evaluateExpressionsOfKind(ExpressionResolverServiceImpl.java:161)<br />
            at org.bonitasoft.engine.core.expression.control.api.impl.ExpressionResolverServiceImpl.evaluateExpressionsFlatten(ExpressionResolverServiceImpl.java:104)<br />
            at org.bonitasoft.engine.core.expression.control.api.impl.ExpressionResolverServiceImpl.evaluate(ExpressionResolverServiceImpl.java:72)<br />
            at org.bonitasoft.engine.api.impl.transaction.expression.EvaluateExpressionsInstanceLevel.execute(EvaluateExpressionsInstanceLevel.java:69)<br />
            at org.bonitasoft.engine.api.impl.ProcessAPIImpl.evaluateExpressionsInstanceLevel(ProcessAPIImpl.java:5457)<br />
            at org.bonitasoft.engine.api.impl.ProcessAPIImpl.evaluateExpressionsOnActivityInstance(ProcessAPIImpl.java:5414)<br />
            ... 43 more<br />
        Caused by: java.lang.ClassNotFoundException: oracle.sql.ARRAY<br />
            at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)<br />
            at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)<br />
            at org.bonitasoft.engine.classloader.BonitaClassLoader.loadClass(BonitaClassLoader.java:136)<br />
            at org.bonitasoft.engine.classloader.VirtualClassLoader.loadClass(VirtualClassLoader.java:57)<br />
            at org.bonitasoft.engine.classloader.ParentRedirectClassLoader.loadClass(ParentRedirectClassLoader.java:23)<br />
            at org.bonitasoft.engine.classloader.BonitaClassLoader.loadClass(BonitaClassLoader.java:136)<br />
            at org.bonitasoft.engine.classloader.VirtualClassLoader.loadClass(VirtualClassLoader.java:57)<br />
            at org.bonitasoft.engine.classloader.ParentRedirectClassLoader.loadClass(ParentRedirectClassLoader.java:23)<br />
            at org.bonitasoft.engine.classloader.BonitaClassLoader.loadClass(BonitaClassLoader.java:136)<br />
            at org.bonitasoft.engine.classloader.VirtualClassLoader.loadClass(VirtualClassLoader.java:57)<br />
            at org.bonitasoft.engine.expression.impl.ExpressionServiceImpl.checkReturnType(ExpressionServiceImpl.java:154)<br />
            ... 50 more</em>

<em>Jan 22, 2014 10:34:29 AM org.bonitasoft.forms.server.FormsServlet getFormFirstPage<br />
        Grave: Error while getting the first page for application Pool4--1.0--Passo2$entry<br />
        org.bonitasoft.forms.server.exception.FormNotFoundException: Error while communicating with the engine.<br />
            at org.bonitasoft.forms.server.provider.impl.FormServiceProviderImpl.resolveExpressions(FormServiceProviderImpl.java:941)<br />
            at org.bonitasoft.forms.server.api.impl.util.FormFieldValuesUtil.setFormWidgetsValues(FormFieldValuesUtil.java:877)<br />
            at org.bonitasoft.forms.server.FormsServlet.getFormFirstPage(FormsServlet.java:218)<br />
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)<br />
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)<br />
            at java.lang.reflect.Method.invoke(Unknown Source)<br />
            at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:561)<br />
            at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208)<br />
            at org.bonitasoft.forms.server.FormsServlet.processCall(FormsServlet.java:130)<br />
            at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)<br />
            at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)<br />
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:643)<br />
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)<br />
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)<br />
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)<br />
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)<br />
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)<br />
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)<br />
            at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)<br />
            at org.bonitasoft.console.security.SessionFixationValve.invoke(SessionFixationValve.java:77)<br />
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)<br />
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)<br />
            at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)<br />
            at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)<br />
            at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)<br />
            at java.lang.Thread.run(Unknown Source)</em>

Thanks for any help!!!

Bene.

1 answer

1
+1
-1

Hello bjnobre,

The problem comes from the call of : rset.getObject(colIndex) in your script.

The getObject method returns a oracle.sql.ARRAY object that is not in the classpath of the process.

To avoid this use a more typed method from the ResultSet.

The fact that this object is returned also implied that your not querying a MySQL database but an Oracle database.

Regards.

Comments

Submitted by bjnobre on Thu, 01/23/2014 - 13:15

Thank U, rb.

I used the help from Christopherf and Haris at http://community.bonitasoft.com/answers/fill-table-widget-values-db and it just worked for me.

But your information will be usefull in the future.

Notifications