Parameters error in BIRT report (Maximo 7.6)

Options
onthegomiller
edited February 11, 2022 in Analytics #1
<p>Trying again because I didn't get any responses to my first attempt.</p>
<p> </p>
<p>Getting a "parameters" error when running a handful of BIRT reports in a 7.6 Maximo instance.  The exact reports run fine in Maximo 7.5.</p>
<p> </p>
<p>Does anyone have any suggestions?</p>
<p> </p>
<p>The error received is:  "There was an exception on the server.  Check your report parameter values, or contact your system administrator, who can find additional details in the server log"</p>
<p> </p>
<p>The logs almost look like they're not processing the sql statement properly.  Here's a snippit of the log.  I have also attached report itself:</p>
<p> </p>
<div>A BIRT exception occurred. See next exception for more information.</div>
<div>Wrapped com.ibm.tivoli.maximo.report.script.MXReportRuntimeException: java.lang.NullPointerException (/report/data-sets/script-data-set[@id=&amp;quot;5&quot;]/method[@name=&amp;quot;open&quot;]#3).</div>
<div>at org.eclipse.birt.report.engine.script.internal.DtEScriptExecutor.handleJS(DtEScriptExecutor.java:99)</div>
<div>at org.eclipse.birt.report.engine.script.internal.DataSetScriptExecutor.handleJS(DataSetScriptExecutor.java:256)</div>
<div>at org.eclipse.birt.report.engine.script.internal.ScriptDataSetScriptExecutor.handleOpen(ScriptDataSetScriptExecutor.java:98)</div>
<div>at org.eclipse.birt.data.engine.impl.ScriptDataSetRuntime.open(ScriptDataSetRuntime.java:80)</div>
<div>at org.eclipse.birt.data.engine.impl.PreparedScriptDSQuery$ScriptDSQueryExecutor$CustomDataSet.open(PreparedScriptDSQuery.java:247)</div>
<div>at org.eclipse.birt.data.engine.impl.PreparedScriptDSQuery$ScriptDSQueryExecutor.executeOdiQuery(PreparedScriptDSQuery.java:223)</div>
<div>at org.eclipse.birt.data.engine.impl.QueryExecutor.execute(QueryExecutor.java:1208)</div>
<div>at org.eclipse.birt.data.engine.impl.ServiceForQueryResults.executeQuery(ServiceForQueryResults.java:233)</div>
<div>at org.eclipse.birt.data.engine.impl.QueryResults.getResultIterator(QueryResults.java:178)</div>
<div>at org.eclipse.birt.report.engine.data.dte.QueryResultSet.&lt;init&gt;(QueryResultSet.java:98)</div>
<div>at org.eclipse.birt.report.engine.data.dte.DteDataEngine.doExecuteQuery(DteDataEngine.java:168)</div>
<div>at org.eclipse.birt.report.engine.data.dte.DataGenerationEngine.doExecuteQuery(DataGenerationEngine.java:83)</div>
<div>at org.eclipse.birt.report.engine.data.dte.AbstractDataEngine.execute(AbstractDataEngine.java:275)</div>
<div>at org.eclipse.birt.report.engine.executor.ExecutionContext.executeQuery(ExecutionContext.java:1947)</div>
<div>at org.eclipse.birt.report.engine.executor.QueryItemExecutor.executeQuery(QueryItemExecutor.java:80)</div>
<div>at org.eclipse.birt.report.engine.executor.TableItemExecutor.execute(TableItemExecutor.java:62)</div>
<div>at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportItemExecutor.execute(WrappedReportItemExecutor.java:46)</div>
<div>at org.eclipse.birt.report.engine.internal.executor.emitter.ReportItemEmitterExecutor.execute(ReportItemEmitterExecutor.java:46)</div>
<div>at org.eclipse.birt.report.engine.internal.executor.dup.SuppressDuplicateItemExecutor.execute(SuppressDuplicateItemExecutor.java:43)</div>
<div>at org.eclipse.birt.report.engine.layout.html.HTMLBlockStackingLM.layoutNodes(HTMLBlockStackingLM.java:65)</div>
<div>at org.eclipse.birt.report.engine.layout.html.HTMLPageLM.layout(HTMLPageLM.java:92)</div>
<div>at org.eclipse.birt.report.engine.layout.html.HTMLReportLayoutEngine.layout(HTMLReportLayoutEngine.java:100)</div>
<div>at org.eclipse.birt.report.engine.presentation.ReportDocumentBuilder.build(ReportDocumentBuilder.java:258)</div>
<div>at org.eclipse.birt.report.engine.api.impl.RunTask.doRun(RunTask.java:269)</div>
<div>at org.eclipse.birt.report.engine.api.impl.RunTask.run(RunTask.java:86)</div>
<div>at org.eclipse.birt.report.service.ReportEngineService.runReport(ReportEngineService.java:1344)</div>
<div>at org.eclipse.birt.report.service.BirtViewerReportService.runReport(BirtViewerReportService.java:158)</div>
<div>at org.eclipse.birt.report.service.actionhandler.BirtRunReportActionHandler.__execute(BirtRunReportActionHandler.java:81)</div>
<div>at org.eclipse.birt.report.service.actionhandler.BirtGetPageActionHandler.__checkDocumentExists(BirtGetPageActionHandler.java:58)</div>
<div>at org.eclipse.birt.report.service.actionhandler.AbstractGetPageActionHandler.prepareParameters(AbstractGetPageActionHandler.java:118)</div>
<div>at org.eclipse.birt.report.service.actionhandler.AbstractGetPageActionHandler.__execute(AbstractGetPageActionHandler.java:103)</div>
<div>at org.eclipse.birt.report.service.actionhandler.AbstractBaseActionHandler.execute(AbstractBaseActionHandler.java:90)</div>
<div>at org.eclipse.birt.report.soapengine.processor.AbstractBaseDocumentProcessor.__executeAction(AbstractBaseDocumentProcessor.java:47)</div>
<div>at org.eclipse.birt.report.soapengine.processor.AbstractBaseComponentProcessor.executeAction(AbstractBaseComponentProcessor.java:143)</div>
<div>at org.eclipse.birt.report.soapengine.processor.BirtDocumentProcessor.handleGetPage(BirtDocumentProcessor.java:87)</div>
<div>at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)</div>
<div>at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95)</div>
<div>at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56)</div>
<div>at java.lang.reflect.Method.invoke(Method.java:620)</div>
<div>at org.eclipse.birt.report.soapengine.processor.AbstractBaseComponentProcessor.process(AbstractBaseComponentProcessor.java:112)</div>
<div>at org.eclipse.birt.report.soapengine.endpoint.BirtSoapBindingImpl.getUpdatedObjects(BirtSoapBindingImpl.java:66)</div>
<div>at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)</div>
<div>at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95)</div>
<div>at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56)</div>
<div>at java.lang.reflect.Method.invoke(Method.java:620)</div>
<div>at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)</div>
<div>at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)</div>
<div>at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)</div>
<div>at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)</div>
<div>at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)</div>
<div>at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)</div>
<div>at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:453)</div>
<div>at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)</div>
<div>at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)</div>
<div>at org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.doPost(BirtSoapMessageDispatcherServlet.java:265)</div>
<div>at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)</div>
<div>at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)</div>
<div>at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)</div>
<div>at org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.service(BirtSoapMessageDispatcherServlet.java:122)</div>
<div>at org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61)</div>
<div>at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128)</div>
<div>at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:60)</div>
<div>at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)</div>
<div>at com.ibm.tivoli.maximo.report.birt.bridge.launcher.BridgeServlet.service(BridgeServlet.java:126)</div>
<div>at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)</div>
<div>at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1232)</div>
<div>at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:781)</div>
<div>at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:480)</div>
<div>at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)</div>
<div>at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:136)</div>
<div>at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:79)</div>
<div>at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:967)</div>
<div>at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1107)</div>
<div>at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:1385)</div>
<div>at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:194)</div>
<div>at com.ibm.tivoli.maximo.report.birt.servlet.ReportRequestProcessServlet.processReportRequest(ReportRequestProcessServlet.java:1012)</div>
<div>at com.ibm.tivoli.maximo.report.birt.servlet.ReportRequestProcessServlet.doPost(ReportRequestProcessServlet.java:151)</div>
<div>at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)</div>
<div>at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)</div>
<div>at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1232)</div>
<div>at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:781)</div>
<div>at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:480)</div>
<div>at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)</div>
<div>at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:136)</div>
<div>at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:97)</div>
<div>at com.ibm.tivoli.maximo.report.birt.servlet.ReportRequestFilter.doFilter(ReportRequestFilter.java:82)</div>
<div>at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195)</div>
<div>at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)</div>
<div>at psdi.webclient.system.filter.HttpCrossSiteScriptingSecurity.doFilter(HttpCrossSiteScriptingSecurity.java:66)</div>
<div>at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195)</div>
<div>at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)</div>
<div>at psdi.webclient.system.filter.HttpXFrameOptionsFilter.doFilter(HttpXFrameOptionsFilter.java:38)</div>
<div>at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195)</div>
<div>at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)</div>
<div>at psdi.webclient.system.filter.MTContextFilter.doFilter(MTContextFilter.java:53)</div>
<div>at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195)</div>
<div>at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)</div>
<div>at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:967)</div>
<div>at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1107)</div>
<div>at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87)</div>
<div>at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:940)</div>
<div>at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1817)</div>
<div>at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200)</div>
<div>at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:463)</div>
<div>at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:530)</div>
<div>at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:316)</div>
<div>at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:88)</div>
<div>at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)</div>
<div>at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)</div>
<div>at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)</div>
<div>at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)</div>
<div>at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)</div>
<div>at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)</div>
<div>at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)</div>
<div>at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1881)</div>
<div>Caused by: org.eclipse.birt.data.engine.core.DataException: Fail to execute script in function __bm_OPEN(). Source:</div>
<div>
</div>
<div>&quot; + </div>
<div>maximoDataSet = MXReportDataSetProvider.create(this.getDataSource().getName(), this.getName());</div>
<div>maximoDataSet.open();</div>
<div> </div>
<div>reportContext.setPersistentGlobalVariable(&quot;siteDescription&quot;, getSiteDescription(this.getDataSource().getName()));</div>
<div>reportContext.setPersistentGlobalVariable(&quot;reportName&quot;, getReportName(this.getDataSource().getName()));</div>
<div> </div>
<div>var sqlText = new String();</div>
<div>//params[&quot;where&quot;] = &quot;1=1&quot;;</div>
<div> </div>
<div>// Add query to sqlText variable.</div>
<div>sqlText = &quot;select distinct &quot; +</div>
<div>&quot;warrantyview.description, warrantyview.vendor, companies.name, warrantyview.contractnum, &quot; + </div>
<div>&quot;decode(warrantyview.isexpired, 0, 'N', 'Y') isexpired, &quot; +</div>
<div>&quot;asset.assetnum, asset.description as adescription, asset.plustyear, asset.manufacturer, &quot; +</div>
<div>&quot;asset.plustmodel, asset.assettype , asset.status &quot; +</div>
<div>&quot;from maximo.warrantyasset, maximo.warrantyview, MAXIMO.companies, maximo.asset &quot; +</div>
<div>&quot;where warrantyasset.contractnum = warrantyview.contractnum &quot; +</div>
<div>&quot;and asset.assetid = warrantyasset.assetid &quot; +</div>
<div>&quot;and warrantyview.vendor = companies.company (+) &quot; +</div>
<div>&quot;ORDER BY warrantyview.contractnum &quot; ;</div>
<div> </div>
<div>/*&quot;select asset.assetnum, asset.description, asset.plustyear, asset.manufacturer, &quot; +</div>
<div>&quot;asset.plustmodel, asset.plusteqtype, asset.plustopstatus, &quot; +</div>
<div> //--warrantyasset.warrantyassetid, &quot; + </div>
<div>&quot;asset.description, asset.vendor, companies.name &quot; +</div>
<div>//--, asset.vendorwarrantyid</div>
<div>//--asset.inactive </div>
<div>&quot;from  MAXIMO.asset,  MAXIMO.companies, maximo.warrantyview &quot; + //--, maximo.plustwarrtrans &quot; +</div>
<div>//--and WARRANTYASSET.siteid = asset.siteid &quot; +</div>
<div>&quot;where asset.vendor = companies.company (+) &quot; + </div>
<div>&quot;AND asset.vendor = warrantyview.vendor(+) &quot; +</div>
<div>&quot;AND &quot; + params[&quot;where&quot;]</div>
<div>//--and warrantyasset.assetid = asset.assetid &quot; +</div>
<div>//--and plustwarrtrans.assetnum = asset.assetnum &quot; +</div>
<div>*/</div>
<div>;</div>
<div> </div>
<div>maximoDataSet.setQuery(sqlText);</div>
<div> + &quot;</div>
<div>
</div>

Comments

  • <p>First thing I see in the scripted SQL is the use of non-ANSI standard SQL for joins. Look in the Report Developer's Guide for Maximo 7.6.</p>
    <p>Notes on the sql:<br>
     <br>
    1. It is recommended that ANSI SQL join syntax (left outer, right outer) should be used.  ANSI functions such as CASE and COALESCE should be used instead of proprietary functions such as DECODE and ISNULL.   <br>
     <br>
    2. Owner qualification (MAXIMO.workorder) should NOT be used<br>
     <br>
    3. Reference all database objects in lower-case.<br>
     <br>
    4. Each report must contain the base table name of the application it will be accessed from in its sql statement.   <br>
     </p>
  • <p>can you include your navfac library?</p>
    <p>Have you tried remarking out your code in the initialize method (you have a lot going on there) and then through the process of elimination see if something there is causing the error?</p>