Hello,
During the migration process from BOXI3 to BI4, I need to migrate
around100,000 documents, from a .unv universe to a .unx universe.
I wrote a java program that uses the Restful.
I applied the methods described in http://scn.sap.com/docs/DOC-45986
andin the document "sbo41sp5_webi_restws_dg_en.pdf"
My program works correctly with a changing of data provider from ".unx"
universe to ".unx" universe. In this configuration, I have no problems.
But if I use this program with a .unv like source, it does'nt work.
I note that the source change of a .unv to a .unx is a success, if
doesn't have prompts with lists of values.
If exists a prompt with required list of value (or optional), the
sourcechange systematically fails with an error type:
(Note : I have translated the error message because the original is in
french)
<error>
<error_code>WSR 00101</error_code>
<message>The modification operation of the source failed. Please check
the relevance of mappings and try again </ message>
<stack_trace> com.sap.webi.raylight.RaylightException. The 'change
operation of the source failed. Please check the relevance of mappings
and try again.
at
com.sap.webi.raylight.context.Messenger.createException(Messenger.java:59)
at
com.sap.webi.raylight.actions.datasources.changesource.UpdateMappingsAction.tryChangesourceOrGetNeededParameters(UpdateMappingsAction.java:321)
at
com.sap.webi.raylight.actions.datasources.changesource.UpdateMappingsAction.execute(UpdateMappingsAction.java:157)
at sun.reflect.GeneratedMethodAccessor366.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
com.sap.webi.raylight.actions.ActionInvoker.invokeWith(ActionInvoker.java:123)
at
com.sap.webi.raylight.actions.ActionDispatcher.invoke(ActionDispatcher.java:105)
at
com.sap.webi.raylight.RaylightServiceChangesource.updateMappings(RaylightServiceChangesource.java:132)
at sun.reflect.GeneratedMethodAccessor365.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:173)
at
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:89)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:164)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:242)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:242)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:242)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:242)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:91)
at
org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at
org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
at
org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106)
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
at
org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:102)
at
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:464)
at
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)
at
com.sap.bip.rs.server.servlet.BIPServletController.invoke(BIPServletController.java:93)
at
org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148)
at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at
com.businessobjects.sdk.actionfilter.WorkflowFilter.doFilter(WorkflowFilter.java:45)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:763)
</stack_trace>
</error>
I used this restfull call sequence
1/ Reading dataproviders a document
For each document, we search its data provider via a GET on url
<webiUrl>
/ documents / ID_document / dataproviders
Sample :
URL - documents/56884/dataproviders
Restful response :
<?xml version="1.0" encoding="UTF-8"
standalone="yes"?>
<dataproviders>
<dataprovider>
<id>DP0</id>
<name>Bandeau</name>
<dataSourceId>53815</dataSourceId>
<dataSourceType>unv</dataSourceType>
<updated>2015-11-25T11:34:05.000+01:00</updated>
</dataprovider>
</dataproviders>
2/ Get the default mappings for changing to a different universe
"GET" on URL :
<webiUrl>/documents/ID_Document/dataproviders/mappings?originDataproviderIds=Id_DataProvider&targetDatasourceId=ID_univers_source
Sample :
<webiUrl>/documents/56884/dataproviders/mappings?originDataproviderIds=DP0&targetDatasourceId=54469
The data source 54469 is a .unx universe.
Restful response :
<?xml version="1.0" encoding="UTF-8"
standalone="yes"?>
<<mappings>
<content>
<mapping status="Ok">
<source>
<id>DS0.DO1278</id>
</source>
<target>
<id>OBJ_4728</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO127d</id>
</source>
<target>
<id>OBJ_4733</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO1280</id>
</source>
<target>
<id>OBJ_4736</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO128e</id>
</source>
<target>
<id>OBJ_4750</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO128f</id>
</source>
<target>
<id>OBJ_4751</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO1711</id>
</source>
<target>
<id>OBJ_5905</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO1712</id>
</source>
<target>
<id>OBJ_5906</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO1713</id>
</source>
<target>
<id>OBJ_5907</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO24f</id>
</source>
<target>
<id>OBJ_591</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO250</id>
</source>
<target>
<id>OBJ_592</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO256</id>
</source>
<target>
<id>OBJ_598</id>
</target>
</mapping>
<mapping status="Ambiguous">
<source>
<id>DS0.DO25eb</id>
</source>
<target>
<id>OBJ_9709</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO267f</id>
</source>
<target>
<id>OBJ_9855</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO27f</id>
</source>
<target>
<id>OBJ_639</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO286</id>
</source>
<target>
<id>OBJ_646</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO28a</id>
</source>
<target>
<id>OBJ_650</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO28c</id>
</source>
<target>
<id>OBJ_652</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO2a48</id>
</source>
<target>
<id>OBJ_10824</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO2a4b</id>
</source>
<target>
<id>OBJ_10827</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO3598</id>
</source>
<target>
<id>OBJ_13720</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO374b</id>
</source>
<target>
<id>OBJ_14155</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO681</id>
</source>
<target>
<id>OBJ_1665</id>
</target>
</mapping>
</content>
</mappings>
3/ Commit Changes
If I submit the default mappping with "POST" on the url :
<webiurl>/documents/56884/dataproviders/mappings?originDataproviderIds=DP0&targetDatasourceId=54469
and the previous restful response in the payload, I obtains the
following
error :
<error>
<error_code>WSR 00101</error_code>
<message>The modification operation of the source failed. Please check
the relevance of mappings and try again </ message>
<stack_trace> com.sap.webi.raylight.RaylightException. The 'change
operation of the source failed. Please check the relevance of mappings
and try again.
at
com.sap.webi.raylight.context.Messenger.createException(Messenger.java:59)
at
com.sap.webi.raylight.actions.datasources.changesource.UpdateMappingsAction.tryChangesourceOrGetNeededParameters(UpdateMappingsAction.java:321)
at
com.sap.webi.raylight.actions.datasources.changesource.UpdateMappingsAction.execute(UpdateMappingsAction.java:157)
at sun.reflect.GeneratedMethodAccessor366.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
com.sap.webi.raylight.actions.ActionInvoker.invokeWith(ActionInvoker.java:123)
at
com.sap.webi.raylight.actions.ActionDispatcher.invoke(ActionDispatcher.java:105)
at
com.sap.webi.raylight.RaylightServiceChangesource.updateMappings(RaylightServiceChangesource.java:132)
at sun.reflect.GeneratedMethodAccessor365.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:173)
at
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:89)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:164)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:242)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:242)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:242)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:242)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:91)
at
org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at
org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
at
org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106)
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
at
org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:102)
at
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:464)
at
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)
at
com.sap.bip.rs.server.servlet.BIPServletController.invoke(BIPServletController.java:93)
at
org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148)
at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at
com.businessobjects.sdk.actionfilter.WorkflowFilter.doFilter(WorkflowFilter.java:45)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:763)
</stack_trace>
</error>
Test update
-----------
The document contains three prompts based on lists of values, this
prompts are not mandatory.
If I change for a constrained list of value, I may have a different
error
code :
<error>
<error_code>WSR 00102</error_code>
<message>Le paramètre doté de l'identifiant "3" est obligatoire et
n'accepte donc aucune valeur de réponse vide.</message>
<stack_trace>com.sap.webi.raylight.RaylightException: Le paramètre
doté de l'identifiant "3" est obligatoire et n'accepte donc aucune
valeur
de réponse vide.
at
com.sap.webi.raylight.context.Messenger.createException(Messenger.java:59)
at
com.sap.webi.raylight.business.ParameterHelper.fillAnswer(ParameterHelper.java:966)
at
com.sap.webi.raylight.actions.datasources.changesource.UpdateMappingsAction.insertAnswer(UpdateMappingsAction.java:296)
at
com.sap.webi.raylight.actions.datasources.changesource.UpdateMappingsAction.getAnswers(UpdateMappingsAction.java:267)
at
com.sap.webi.raylight.actions.datasources.changesource.UpdateMappingsAction.execute(UpdateMappingsAction.java:156)
at sun.reflect.GeneratedMethodAccessor366.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
com.sap.webi.raylight.actions.ActionInvoker.invokeWith(ActionInvoker.java:123)
at
com.sap.webi.raylight.actions.ActionDispatcher.invoke(ActionDispatcher.java:105)
at
com.sap.webi.raylight.RaylightServiceChangesource.updateMappings(RaylightServiceChangesource.java:132)
at sun.reflect.GeneratedMethodAccessor365.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:173)
at
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:89)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:164)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:242)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:242)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:242)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:242)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:91)
at
org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at
org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
at
org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106)
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
at
org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:102)
at
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:464)
at
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)
at
com.sap.bip.rs.server.servlet.BIPServletController.invoke(BIPServletController.java:93)
at
org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148)
at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at
com.businessobjects.sdk.actionfilter.WorkflowFilter.doFilter(WorkflowFilter.java:45)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:763)
</stack_trace>
</error>
I send the payload [POST]
<?xml version="1.0" encoding="UTF-8"?>
<mappings>
<content>
<mapping status="Ok">
<source>
<id>DS0.DO1278</id>
</source>
<target>
<id>OBJ_4728</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO127d</id>
</source>
<target>
<id>OBJ_4733</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO1280</id>
</source>
<target>
<id>OBJ_4736</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO128e</id>
</source>
<target>
<id>OBJ_4750</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO128f</id>
</source>
<target>
<id>OBJ_4751</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO1711</id>
</source>
<target>
<id>OBJ_5905</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO1712</id>
</source>
<target>
<id>OBJ_5906</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO1713</id>
</source>
<target>
<id>OBJ_5907</id>
</target>
</mapping>
<mapping status="Ambiguous">
<source>
<id>DS0.DO25eb</id>
</source>
<target>
<id>OBJ_9707</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO267f</id>
</source>
<target>
<id>OBJ_9855</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO681</id>
</source>
<target>
<id>OBJ_1665</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO856</id>
</source>
<target>
<id>OBJ_2134</id>
</target>
</mapping>
<mapping status="Ambiguous">
<source>
<id>DS0.DO857</id>
</source>
<target>
<id>OBJ_2135</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO858</id>
</source>
<target>
<id>OBJ_2136</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO859</id>
</source>
<target>
<id>OBJ_2137</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO85a</id>
</source>
<target>
<id>OBJ_2138</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO863</id>
</source>
<target>
<id>OBJ_2147</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO865</id>
</source>
<target>
<id>OBJ_2149</id>
</target>
</mapping>
</content>
<parameters>
<parameter dpId="DP2" type="context" optional="false">
<id>3</id>
<technicalName>cBandeau</technicalName>
<name>Select a context</name>
<answer type="Text" constrained="true">
<info cardinality="Single">
<lov searchable="true" refreshable="true"
partial="false" hierarchical="false">
<values>
<value id="CTX_221">1 Analyse sur les
situations de paie</value>
<value id="CTX_217">2 Analyse sur les
situations historiques à date de sortie</value>
<value id="CTX_218">3 Analyse sur toutes
lessituations historiques</value>
<value id="CTX_219">4 Analyse sur toutes
lespériodes d'emploi</value>
</values>
</lov>
</info>
<values><value>1 Analyse sur les situations de
paie</value></values></answer>
</parameter>
</parameters>
</mappings>
In this case, I send a default value for parameter "3" ->
<values><value>1 Analyse sur les situations de paie</value></values>,
but
the source change process fails.
I think there is a problem with the method of restfull Service to
changesource with documents based on .unv universe. More specifically
with
lists of values.
Code that i used to reproduce :
public class TestProcessor {
public static void main(String[] args) {
try {
WebserviceRequest webservice = new WebserviceRequest();
webservice.setUserWebservice("administrator");
webservice.setPasswordWebservice("xxxx");
webservice.setHostWebservice("hostbo");
webservice.setPortWebservice("6405");
webservice.logon();
//Document Id
String idDoc = "422151";
//target source, .unx universe
String idSource = "406759";
String urlDataProvider = "documents/" + idDoc + "/dataproviders";
Response responseDataProvider =
webservice.raylightRequest(urlDataProvider, HttpMethod.GET,
MediaType.APPLICATION_XML);
System.out.println("---- Get data provider ----");
System.out.println(responseDataProvider.getContent());
if (responseDataProvider.getCode() == 200) {
SAXBuilder sxb = new SAXBuilder();
Document domDataProvider = null;
InputStream stream = new
ByteArrayInputStream(responseDataProvider.getContent().getBytes("UTF8"));
domDataProvider = sxb.build(stream);
Element rootDataProviders = domDataProvider.getRootElement();
List<Element> dataProviderList =
rootDataProviders.getChildren("dataprovider");
String dpName = dataProviderList.get(0).getChild("id").getText();
// I tried 2 urls, in all cases, the call f restfull fails
String urlChangeSource = "documents/" + idDoc +
"/dataproviders/mappings?targetDatasourceId=" + idSource;
// String urlChangeSource =
"documents/421184/dataproviders/mappings?originDataproviderIds=" +
dpName
+ "&targetDatasourceId=406759";
Response responseGetMapping =
webservice.raylightRequest(urlChangeSource, HttpMethod.GET,
MediaType.APPLICATION_XML);
System.out.println("---- Get default mapping ----");
System.out.println(responseGetMapping.getCode());
System.out.println(responseGetMapping.getContent());
Response responseCommitMapping =
webservice.raylightRequest(urlChangeSource, HttpMethod.POST,
MediaType.APPLICATION_XML, MediaType.APPLICATION_XML,
responseGetMapping.getContent());
System.out.println("---- Commit Changes ----");
System.out.println(responseCommitMapping.getCode());
System.out.println(responseCommitMapping.getContent());
webservice.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
Screen Result :
---- Get data provider ----
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<dataproviders>
<dataprovider>
<id>DP0</id>
<name>Bandeau</name>
<dataSourceId>387259</dataSourceId>
<dataSourceType>unv</dataSourceType>
<updated>2015-11-30T12:20:38.000+01:00</updated>
</dataprovider>
</dataproviders>
---- Get default mapping ----
200
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<mappings>
<content>
<mapping status="Ok">
<source>
<id>DS0.DO1278</id>
</source>
<target>
<id>OBJ_4728</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO127d</id>
</source>
<target>
<id>OBJ_4733</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO1280</id>
</source>
<target>
<id>OBJ_4736</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO128e</id>
</source>
<target>
<id>OBJ_4750</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO128f</id>
</source>
<target>
<id>OBJ_4751</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO1711</id>
</source>
<target>
<id>OBJ_5905</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO1712</id>
</source>
<target>
<id>OBJ_5906</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO1713</id>
</source>
<target>
<id>OBJ_5907</id>
</target>
</mapping>
<mapping status="Ambiguous">
<source>
<id>DS0.DO25eb</id>
</source>
<target>
<id>OBJ_9707</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO267f</id>
</source>
<target>
<id>OBJ_9855</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO2a48</id>
</source>
<target>
<id>OBJ_10824</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO2a4b</id>
</source>
<target>
<id>OBJ_10827</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO374b</id>
</source>
<target>
<id>OBJ_14155</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO681</id>
</source>
<target>
<id>OBJ_1665</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO856</id>
</source>
<target>
<id>OBJ_2134</id>
</target>
</mapping>
<mapping status="Ambiguous">
<source>
<id>DS0.DO857</id>
</source>
<target>
<id>OBJ_2135</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO858</id>
</source>
<target>
<id>OBJ_2136</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO859</id>
</source>
<target>
<id>OBJ_2137</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO85a</id>
</source>
<target>
<id>OBJ_2138</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO863</id>
</source>
<target>
<id>OBJ_2147</id>
</target>
</mapping>
<mapping status="Ok">
<source>
<id>DS0.DO865</id>
</source>
<target>
<id>OBJ_2149</id>
</target>
</mapping>
</content>
</mappings>
---- Commit Changes ----
400
<error>
<error_code>WSR 00101</error_code>
<message>L''opération de modification de la source a échoué.
Veuillez
vérifier la pertinence des mappages puis réessayez.</message>
<stack_trace>com.sap.webi.raylight.RaylightException: L''opération
de
modification de la source a échoué. Veuillez vérifier la pertinence des
mappages puis réessayez.
at
com.sap.webi.raylight.context.Messenger.createException(Messenger.java:59)
at
com.sap.webi.raylight.actions.datasources.changesource.UpdateMappingsAction.tryChangesourceOrGetNeededParameters(UpdateMappingsAction.java:321)
at
com.sap.webi.raylight.actions.datasources.changesource.UpdateMappingsAction.execute(UpdateMappingsAction.java:157)
at sun.reflect.GeneratedMethodAccessor366.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
com.sap.webi.raylight.actions.ActionInvoker.invokeWith(ActionInvoker.java:123)
at
com.sap.webi.raylight.actions.ActionDispatcher.invoke(ActionDispatcher.java:105)
at
com.sap.webi.raylight.RaylightServiceChangesource.updateMappings(RaylightServiceChangesource.java:132)
at sun.reflect.GeneratedMethodAccessor365.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:173)
at
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:89)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:164)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:242)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:242)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:242)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:242)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:91)
at
org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at
org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
at
org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106)
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
at
org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:102)
at
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:464)
at
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)
at
com.sap.bip.rs.server.servlet.BIPServletController.invoke(BIPServletController.java:93)
at
org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148)
at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at
com.businessobjects.sdk.actionfilter.WorkflowFilter.doFilter(WorkflowFilter.java:45)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:763)
</stack_trace>
</error>
Thank you for your help,
Asma