0

BizTalk2010で別の問題が発生しました。XML形式のレコードのコレクションを受け取ることになっています。私が受け取るXMLは、内部に複数のレコードがあるエンベロープです。私の簡単な作業は、XML内のレコードをデバッチし、オーケストレーションを使用せずに別のフォルダーに配置することでした。レコードの構造を保持するxsdを作成し、次に、インポートした前のxsdを含むエンベロープである別のxsdを作成しました。xsdエンベロープを指すxpath-bodyがありました。エンベロープを使用してxsdからXMLを生成し、xmldasm.exeを使用してテストしたため、これまではすべて正常に機能しているように見えました。予想どおり、XMLがXML形式の複数のレコードにデバッチされたため、結果は満足のいくものでした。

次に、XML逆アセンブラのみを使用してカスタム受信パイプラインを作成し、適切なドキュメントを設定して、プロジェクトを正常にデプロイしました。管理コンソールから、アプリケーションを構成し、ファイルタイプの受信ポートと送信ポートを作成しました。送信ポートから、フィルターをに設定しましたBTS.MessageType == MyTestProject.MyXsdRoot

最後に、アプリケーションを正常に開始しました。

ただし、複数のレコード(上記のxmlDasm.exeを使用してテストしたもの)を含むテストエンベロープXMLをInputFolderにドロップすると、フォルダー内のXMLは消費されましたが、OutputFolderには何も生成されませんでした。コンソールから、ルーティングエラー(再開可能)が表示されました。明らかに、BizTalkの経験が不足しているため、何かを見落としています。

より多くの知識を持っている人が、何が間違っているのか、何が間違っているのかを見つけるために私が何をすべきかを指摘できますか?

アップデート:

- - - - 封筒 - - - - - - - - - - - - - - - - -

<?xml version="1.0" encoding="utf-16" ?> 
- <xs:schema xmlns="http://UsingOrchestration.SetOfProcedures" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" xmlns:ns0="http://UsingOrchestration.Procedures" targetNamespace="http://UsingOrchestration.SetOfProcedures" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:import schemaLocation="UsingOrchestration.Procedure" namespace="http://UsingOrchestration.Procedures" /> 
- <xs:annotation>
- <xs:appinfo>
  <b:schemaInfo is_envelope="yes" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" /> 
- <b:references>
  <b:reference targetNamespace="http://UsingOrchestration.Procedures" /> 
  </b:references>
  </xs:appinfo>
  </xs:annotation>
- <xs:element name="SetOfProcedures">
- <xs:annotation>
- <xs:appinfo>
  <b:recordInfo body_xpath="/*[local-name()='SetOfProcedures' and namespace-uri()='http://UsingOrchestration.SetOfProcedures']" /> 
  </xs:appinfo>
  </xs:annotation>
- <xs:complexType>
- <xs:sequence>
  <xs:element minOccurs="1" maxOccurs="unbounded" ref="ns0:ProcedureCompleted" /> 
  </xs:sequence>
  </xs:complexType>
  </xs:element>
  </xs:schema>

---------------------実際のメッセージ-------------------

  <?xml version="1.0" encoding="utf-16" ?> 
- <xs:schema xmlns="http://UsingOrchestration.Procedures" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" targetNamespace="http://UsingOrchestration.Procedures" xmlns:xs="http://www.w3.org/2001/XMLSchema">
- <xs:element name="ProcedureCompleted">
- <xs:complexType>
- <xs:sequence>
  <xs:element name="AltID" type="xs:string" /> 
  <xs:element name="RotationName" type="xs:string" /> 
  <xs:element name="ProcedureID" type="xs:string" /> 
  <xs:element name="ProcedureFee" type="xs:string" /> 
  <xs:element name="Comment" type="xs:string" /> 
  </xs:sequence>
  </xs:complexType>
  </xs:element>
  </xs:schema>
--------- Test xml------------------------------------------
<ns0:SetOfProcedures xmlns:ns0="http://UsingOrchestration.SetOfProcedures">
  <ns1:ProcedureCompleted xmlns:ns1="http://UsingOrchestration.Procedures">
    <AltID>AltID_0</AltID>
    <RotationName>RotationName_0</RotationName>
    <ProcedureID>ProcedureID_0</ProcedureID>
    <ProcedureFee>ProcedureFee_0</ProcedureFee>
    <Comment>Comment_0</Comment>
  </ns1:ProcedureCompleted>
  <ns1:ProcedureCompleted xmlns:ns1="http://UsingOrchestration.Procedures">
    <AltID>AltID_1</AltID>
    <RotationName>RotationName_1</RotationName>
    <ProcedureID>ProcedureID_1</ProcedureID>
    <ProcedureFee>ProcedureFee_1</ProcedureFee>
    <Comment>Comment_1</Comment>
  </ns1:ProcedureCompleted>
  <ns1:ProcedureCompleted xmlns:ns1="http://UsingOrchestration.Procedures">
    <AltID>AltID_2</AltID>
    <RotationName>RotationName_2</RotationName>
    <ProcedureID>ProcedureID_2</ProcedureID>
    <ProcedureFee>ProcedureFee_2</ProcedureFee>
    <Comment>Comment_2</Comment>
  </ns1:ProcedureCompleted>
</ns0:SetOfProcedures>

まったく同じXMLを使用してBTS.ReceivePortName、でフィルタリングできます。セットは正しくデバッチされましたが、でフィルタリングしてもまったく処理されませんBTS.MessageType。私は何かを逃したに違いない、ただ何がわからない。

4

1 に答える 1

0

次のリンクの手順をすべて実行したかどうかを確認してください。おそらく、スキーマにEnvelopeプロパティを設定するのを忘れているかもしれません。さらに、デフォルトの XMLReceive パイプラインがそれを実行できるため、XML デバッチ用のカスタム パイプラインは必要ありません。

于 2013-01-08T09:06:09.327 に答える