Настройка biztalk sendport для пакета EBS

Хорошо, я просматривал это последние пару дней, но не могу заставить его принять сообщение. Вот моя основная структура схемы сообщений. Сообщение создается по этой схеме через конвейер (работает, проверено).

<?xml version="1.0" encoding="utf-16"?>
<xs:schema targetNamespace="http://Microsoft.LobServices.OracleDB/2007/03/XXSCHEMA/Package/XXPAC_AQ_PKG" 
           xmlns="http://XXCOMPANY.Schemas.adEnqueueRequest" 
           xmlns:b="http://schemas.microsoft.com/BizTalk/2003" 
           xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="ENQUEUE">
    <xs:complexType>
      <xs:sequence minOccurs="1" maxOccurs="1">
        <xs:element name="p_queue_name" type="xs:string" maxOccurs="1" minOccurs="1" nillable="false" />
        <xs:element name="p_payload" type="xs:string" maxOccurs="1" minOccurs="1" nillable="false" />
        <xs:element name="p_message_type" type="xs:string" maxOccurs="1" minOccurs="1" nillable="false" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Порт отправки настроен так, чтобы использовать WCF-OracleEBSAdapter, и я подтвердил, что все данные моей среды настроены правильно (т. Е. Имя пользователя, пароль, информация TNS).

Текущее действие bts, которое я установил:

<BtsActionMapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Operation Name="ENQUEUE" Action="http://Microsoft.LobServices.OracleDB/2007/03/XXSCHEMA/Package/XXPAC_AQ_PKG/ENQUEUE" />
</BtsActionMapping>

Но я попробовал все сопоставления действий на http://msdn.microsoft.com/en-us/library/dd788171.aspx чтобы заставить его работать. Каждый раз, когда мое сообщение приостанавливается и журнал событий показывает:

Сообщение, отправленное адаптеру "WCF-OracleEBSAdapter" на порт отправки "SENDPORTNAME" с URI "SENDPORTURI", приостановлено.

 Error details: Microsoft.ServiceModel.Channels.Common.UnsupportedOperationException: Action "http://Microsoft.LobServices.OracleDB/2007/03/XXSCHEMA/Package/XXPAC_AQ_PKG/ENQUEUE" is invalid.

Server stack trace: 
   at System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result)
   at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult result)
   at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
   at System.ServiceModel.Channels.ServiceChannel.EndRequest(IAsyncResult result)

Exception rethrown at [0]: 
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at System.ServiceModel.Channels.IRequestChannel.EndRequest(IAsyncResult result)
   at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.RequestCallback(IAsyncResult result) 
 MessageId:  {26BF83FF-742E-4649-8FCC-45729767FF8E}
 InstanceID: {CA97B656-FC1A-4884-8A6A-F95D156298ED}

Целью этого порта отправки является вызов подпрограммы на сервере оракула, который поместит сообщение в указанную очередь. Кто-нибудь успешно делал это раньше? Может кто-нибудь увидеть что-то, что может быть не так с моей конфигурацией. Любые советы также будут оценены.

1 ответ

Решение

Ваша операция сформирована неправильно. Похоже, у вас есть две части (XXPAC_AQ_PKG/ENQUEUE) после пакета вместо одной.

Правильный формат согласно схемам сообщений для функций и процедур и указанному вами URL

http://Microsoft.LobServices.OracleDB/2007/03/[SCHEMA]/Package/[PACKAGE_NAME]

Другие вопросы по тегам