2011-01-05 9 views
1

スキーマ検証が、プロセスの失敗:のBizTalkメッセージは、私は次のようになりますのBizTalkスキーマを持っているだけで罰金

<Root> 
    <Header> 
     <SomeData></SomeData> 
     <Detail> 
     <MoreData1></MoreData1> 
     <MoreData2></MoreData2> 
     <MoreData3></MoreData3> 
     </Detail> 
    </Header> 
</Root> 

要素のどれもが彼らの最大が発生したり、Minは値のセットを発生していません。

メッセージは、XmlDocumentを割り当てることによってオーケストレーション内で作成されます。このメッセージは、オーケストレーションの他のいくつかの場所で使用され、私はそれを検査のためにディスクに書き込んでいます。

問題は、メッセージが書き出されると、入力インスタンスとして同じxmlファイルの一部を使用しようとすると、検証に失敗することです。たとえば、いくつかは<Detail>要素を複数持つことがあり、一部は欠損している可能性があります。<MoreData2>

すべてが実行されているようですので、現時点では大きな懸念はないと思いますが、アプリケーションが実行されているときにスキーマ検証に失敗するメッセージがどのようにエラーをスローしないのでしょうか?

答えて

5

BizTalkでは、XMLメッセージはパイプラインでのみ検証されます。メッセージがオーケストレーションに到達すると、メッセージはスキーマに対して検証される必要がないという前提があります(効率的に)。変換を使用してメッセージを作成すると、スキーマの検証は後に行われません。

あなたのケースでは、入力されるメッセージに検証を有効にしたXML受信パイプラインが必要です。同様に、XML送信パイプラインで検証を有効にすることができます。これは、悪いメッセージが出るのを止めるでしょう。

ただし、オーケストレーションでスキーマの検証を行うことはできます。まず、hereと記載されています。あなたがGoogle/Bingしている場合、さらに多くの同様のテクニックがあります。

Orchestration hereでXSD検証を有効にすることができる興味深い記事もあります。これは良いとは言えますが、サーバー全体の設定です。したがって、それは働いているものを含むすべてのアプリケーションに適用されます。

関連する問題