2017-10-10 22 views
0

我有一個簡單的Envelope XML,我試圖在HTTP發送/接收端口的接收端使用自定義管道進行解析。 BizTalk將通過信封中的第一組,但我們得到錯誤0xC0C01B4C(殭屍)的所有後續。出於測試目的,我將接收的結果以文件格式發送到文件夾。我希望以前有人看到過這個,因爲我一直在嘗試多種不同的方式來解決這個問題。錯誤0xC0C01B4C在簡化編排中的解封信號

這是信封郵件

<?xml version="1.0" encoding="utf-16" ?> 
<xs:schema xmlns="http://CC.Schemas.ADDR.ADDR_IDs_Envelope" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" xmlns:ids="http://CC.Schemas.ADDR.ADDR_IDs" targetNamespace="http://CC.Schemas.ADDR.ADDR_IDs_Envelope" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:import schemaLocation=".\ADDR_IDs.xsd" namespace="http://CC.Schemas.ADDR.ADDR_IDs" /> 
    <xs:annotation> 
     <xs:appinfo> 
      <b:schemaInfo is_envelope="yes" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" /> 
      <b:references> 
       <b:reference targetNamespace="http://CC.Schemas.ADDR.ADDR_IDs" /> 
      </b:references> 
     </xs:appinfo> 
    </xs:annotation> 
    <xs:element name="ADDR_IDs_Envelope"> 
     <xs:annotation> 
      <xs:appinfo> 
       <b:recordInfo body_xpath="/*[local-name()='ADDR_IDs_Envelope' and namespace-uri()='http://CC.Schemas.ADDR.ADDR_IDs_Envelope']/*[local-name()='Messages' and namespace-uri()='']" /> 
      </xs:appinfo> 
     </xs:annotation> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="Messages"> 
        <xs:complexType> 
         <xs:sequence> 
          <xs:element maxOccurs="unbounded" ref="ids:ADDR_IDs" /> 
         </xs:sequence> 
        </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 

詳細ID的模式

<?xml version="1.0" encoding="utf-16" ?> 
<xs:schema xmlns="http://CC.Schemas.ADDR.ADDR_IDs" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" targetNamespace="http://CC.Schemas.ADDR.ADDR_IDs" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="ADDR_IDs"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="TransactionID" type="xs:string" /> 
       <xs:element name="JWID" type="xs:positiveInteger" /> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 

Orchestration

回答

0

很簡單的編排缺少一個循環,它偵聽爲同一相關的下一條消息。所以在處理完第一條消息之後,它只會退出而不處理其他消息。

你需要的概念被稱爲連續車隊。您需要在循環中有另一個接收形狀(其具有在第一個接收形狀上初始化爲「初始化相關集」的以下相關性集),以及退出循環的方式,例如,下面是等待退出循環的時間限制。你需要得到這個退出條件正確,否則仍然有殭屍的機會。

enter image description here

+0

我想我錯誤地認爲,討論接收到的信封會自動做到沒有循環。我會按照你的指示設置感謝 –

+0

@JWall這個爭論可能發生在接收位置。如果要在Orchestration中消息消息,則需要在Orchestration中執行管道或使用XSLT,但仍需要循環才能獲取下一條消息。 – Dijkgraaf

+0

謝謝我認爲我看到了在編排中使用管道的一些示例,所以我可能會首先查看該選項。非常感謝 –

0

只是想在這個問題上我,因爲我決定使用業務流程管道的方法和模式有問題發佈更新。要解決這個問題,我必須

1 - 將我的接收消息和端口更改爲System.Xml.XmlDocument消息類型,而不是將其設置爲我的模式。您還必須將接收管道設置爲PassTrhuReceive而不是XML傳輸。由於XML傳輸管道將自動跳轉。這允許我的循環根據需要處理Orchestration中的爭議。我正在使用發送/接收http端口,並能夠得到這個工作

一個關於這個問題是你必須使用一個範圍與編排管道方法,所以它不會發送消息,因爲我打算在一個時間有序。

在我的一個業務流程中,我不得不使用序列車隊,以便我可以按順序處理信封消息,但並不是所有人都需要這樣做,所以第一種方法在修復殭屍消息問題方面效果很好。了。由於我已經將這個操作拆分爲兩部分,我最終將信封保存到一個文件夾中,然後拾取它並通過順序車隊處理它。

一切都按預期工作