Ich betreibe seit kurzem einen ReportServer 3.7.0-6044 (Enterprise Edition) und habe noch nicht viel Erfahrung mit der Applikation.
Es ist eine tolle Anwendung, die mir sehr gut gefällt und sehr viel Spaß macht. Jetzt bin ich aber auf ein Problem gestoßen.
Bei Reports mit Script Datasource funktioniert die Pivot-Ansicht nicht, wenn der Database Cache in der Datasource-Definition auf 0 steht.
Normale Ansicht (Liste) funktioniert.
Wie ich es verstanden habe, wird nur bei Database Cache 0 die Datasource aktualisiert.
Bei Database Cache -1 funktioniert die Pivot-Ansicht problemlos, wird aber nie aktualisiert. Bei Database Cache > 0 funkioniert sie nur in den Minuten, so lange die Datasource gecacht ist.
Die Fehlermeldung bei Database Cache 0 (Pivot-Ansicht) ist so:
Error
Could not generate mondrian schema: Error in Script Datasource. The script returned an object of type class
net.datenwerke.rs.base.service.reportengines.table.output.object.RSTableModel but no appropriate ScriptDatasourceResultTransformer was found.
Error Details:
java.lang.IllegalStateException: Could not generate mondrian schema: Error in Script Datasource. The script returned an object of type class net.datenwerke.rs.base.service.reportengines.table.output.object.RSTableModel but no appropriate ScriptDatasourceResultTransformer was found.
at net.datenwerke.rs.saikupivot.server.SaikuPivotRpcServiceImpl.stashReport(SaikuPivotRpcServiceImpl.java:89)
at net.datenwerke.rsenterprise.license.service.EnterpriseCheckInterceptor.invoke(EnterpriseCheckInterceptor.java:35)
at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:109)
at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:38)
at jdk.internal.reflect.GeneratedMethodAccessor467.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:587)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:333)
at net.datenwerke.rsenterprise.license.service.EnterpriseCheckInterceptor.invoke(EnterpriseCheckInterceptor.java:35)
at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:109)
at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:38)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:303)
at net.datenwerke.rsenterprise.license.service.EnterpriseCheckInterceptor.invoke(EnterpriseCheckInterceptor.java:35)
at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:109)
at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:38)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:373)
at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
at net.datenwerke.rsenterprise.license.service.EnterpriseCheckInterceptor.invoke(EnterpriseCheckInterceptor.java:35)
at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:109)
at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:38)
at com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:290)
at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:280)
at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:184)
at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:89)
at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:85)
at com.google.inject.persist.PersistFilter.doFilter(PersistFilter.java:94)
at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:121)
at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:133)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)
at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:433)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.IllegalArgumentException: Error in Script Datasource. The script returned an object of type class net.datenwerke.rs.base.service.reportengines.table.output.object.RSTableModel but no appropriate ScriptDatasourceResultTransformer was found.
at net.datenwerke.rs.base.service.datasources.transformers.script.ScriptDatasourceTransformer.transformResultAndCast(ScriptDatasourceTransformer.java:185)
at net.datenwerke.rs.base.service.datasources.transformers.script.ScriptDatasourceTransformer.transform(ScriptDatasourceTransformer.java:121)
at net.datenwerke.rs.base.service.datasources.transformers.DatasourceTransformationServiceImpl.transform(DatasourceTransformationServiceImpl.java:29)
at net.datenwerke.rs.saikupivot.service.SaikuPivotServiceImpl.extractMondrianSchema(SaikuPivotServiceImpl.java:365)
at net.datenwerke.rs.saikupivot.service.SaikuPivotServiceImpl.createSaikuFrom(SaikuPivotServiceImpl.java:133)
at net.datenwerke.rsenterprise.license.service.EnterpriseCheckInterceptor.invoke(EnterpriseCheckInterceptor.java:35)
at net.datenwerke.rs.saikupivot.server.SaikuPivotRpcServiceImpl.stashReport(SaikuPivotRpcServiceImpl.java:85)
… 50 more
Mein Script für die Script Datasource arbeitet mit einem user-abhängigen Parameter (der Personalnummer; sie wird bei Login ermittelt und als User-Variable gesetzt). Deshalb kommt ein dauerhaftes Caching (-1) natürlich nicht in Frage.
Das Script verarbeitet die Variable auch korrekt; der erste Aufruf (bei Caching -1) funktioniert. Danach funktioniert die Pivot-Ansicht mit der gecachten Version, aber dann sieht jeder User das gleiche.
Kann mir jemand helfen? Muss ich etwas anders definieren?
Wenn Infos gebraucht werden (Script, Definition der Datasource, etc.) bitte nachfragen.
Vielen Dank im voraus für Eure Hilfe.







