2012-11-12

动态设定SAP PI SOAP Receiver的目的地

一些主数据需要从SAP发到Salesforce,receiver channel使用SOAP adapter。因为Salesforce的loadbalancer,调用Salesforce web service的URL有可能变动,所以不能在receiver channel里静态设定目的地URL,而需要在dynamic configuration里动态设定key为TServerLocation的值。要使动态设定的值生效,需要两点:
  • 如果channel里给定的URL是一个有效的URL,那么这个静态的URL会被adapter使用,而不是dynamic configuration里的值
  • 如果dynamic configuration里的URL使用HTTP协议,那么channel里的相应设定必须为http://,如果动态设定的URL为HTTPS,那么channel里相应的设置为https://.
在message mapping中可以使用下面的UDF来设定。
public String setSoapURL(String url, Container container) throws StreamTransformationException{
        String namespace = "http://sap.com/xi/XI/System/SOAP";
        String parameterKey = "TServerLocation";
        DynamicConfiguration conf = (DynamicConfiguration) container.getTransformationParameters().get(    StreamTransformationConstants.DYNAMIC_CONFIGURATION);
        DynamicConfigurationKey key = DynamicConfigurationKey.create(namespace, parameterKey);
        if (conf != null) {
            conf.put(key, url);           
        }
        return ""; 
  }

没有评论:

发表评论