我有这个问题,我不确定它为什么会发生以及如何解决它。我创建了一个 OSB 项目。在代理服务管道中,我正在对另一个应用程序中的同步 SOAP 服务进行服务调出。其他服务需要如下请求正文:
<RequestSelectionValues xmlns="http://www.camstar.com/WebService/WSShopFloor">
<inputServiceData xmlns:q1="http://www.camstar.com/WebService/DataTypes" q1:type="OnlineQuery">
<OnlineQuerySetup>
<__CDOTypeName/>
<__name>xLot By FabLotNumber</__name>
</OnlineQuerySetup>
<Parameters>
<__listItem>
<Name>FabLotNumber</Name>
<DefaultValue>FAB_Lot_1</DefaultValue>
</__listItem>
<__listItem>
<Name>BLOCKOF200ROWS</Name>
<DefaultValue>1</DefaultValue>
</__listItem>
</Parameters>
</inputServiceData>
<queryOption xmlns:q2="http://www.camstar.com/WebService/DataTypes" q2:type="QueryOption">
<RowSetSize>1000</RowSetSize>
<StartRow>1</StartRow>
<QueryType>user</QueryType>
<ChangeCount>0</ChangeCount>
<RequestRecordCount>false</RequestRecordCount>
<RequestRecordSetAndCount>false</RequestRecordSetAndCount>
</queryOption>
<serviceInfo xmlns:q3="http://www.camstar.com/WebService/DataTypes" q3:type="OnlineQuery_Info">
<OnlineQuerySelection>
<RequestValue>false</RequestValue>
<RequestMetadata>false</RequestMetadata>
<RequestSubFieldValues>false</RequestSubFieldValues>
<RequestSelectionValues>true</RequestSelectionValues>
</OnlineQuerySelection>
</serviceInfo>
</RequestSelectionValues>
我正在使用 Assign 将上述表达式放入变量中。
注意这一行:
<serviceInfo xmlns:q3="http://www.camstar.com/WebService/DataTypes" q3:type="OnlineQuery_Info">
xmlns:q3="http://www.camstar.com/WebService/DataTypes" 需要在 q3:type="OnlineQuery_Info" 之前才能成功调用其他服务,否则服务调用将失败。
在开发中它看起来很好。我也可以测试表达式的分配。
当我去 OSB 控制台测试服务时,我注意到在 Assign 变量中,命名空间位置发生了切换,它变成了这样:
<serviceInfo q3:type="OnlineQuery_Info" xmlns:q3="http://www.camstar.com/WebService/DataTypes">
这会使服务调用失败。我尝试将正文有效负载放入 xslt。结果是一样的。我不确定为什么它会在命名空间之前切换类型。最终结果是服务没有按预期工作。
知道我能做些什么来解决这个问题。如何防止切换?
谢谢