2011-01-05 7 views
1

ich ein BizTalk-Schema haben, die etwa wie folgt aussieht:BizTalk Nachricht nicht Schemavalidierung aber Prozesse ganz gut

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

Keines der Elemente haben ihren Max Tritt oder Min Tritt ein Wert gesetzt.

Die Nachricht wird in einer Orchestrierung erstellt, indem ihr ein XmlDocument zugewiesen wird. Die Nachricht wird dann an mehreren anderen Orten in der Orchestrierung verwendet, und ich habe sie zur Untersuchung auf die Festplatte geschrieben.

Das Problem ist, dass wenn die Nachricht geschrieben wird, wenn ich versuche, einige dieser xml-Dateien als eine Eingabe-Instanz zu verwenden, sie die Validierung fehlschlagen. Zum Beispiel können einige mehr als ein <Detail> Element haben, während einige möglicherweise fehlen <MoreData2>.

Alles scheint zu laufen, also nehme ich an, es ist im Moment keine große Sorge, aber ich frage mich, wie eine Nachricht, die Schema-Validierung fehlschlägt, keinen Fehler wirft, wenn die Anwendung ausgeführt wird?

Antwort

5

In BizTalk werden XML-Nachrichten nur in Pipelines validiert. Sobald die Nachricht die Orchestrierung erreicht hat, gibt es (aus Effizienzgründen) eine Annahme, dass die Nachrichten nicht anhand ihres Schemas validiert werden müssen. Wenn Nachrichten mit Transformationen erstellt werden, findet die Schemaüberprüfung nicht statt.

In Ihrem Fall sollte die eingehende Nachricht eine XML-Empfangspipeline mit aktivierter Validierung enthalten. Dadurch wird verhindert, dass die Nachricht eingeht. Ebenso können Sie die Validierung in der XML-Sende-Pipeline aktivieren. Dies wird verhindern, dass schlechte Nachrichten herauskommen.

Es gibt jedoch Optionen, Schema-Validierung in einer Orchestrierung durchzuführen. Zuerst wird here beschrieben. Es gibt auch viel mehr ähnliche Techniken, wenn Sie Google/Bing es.

Hier finden Sie auch einen interessanten Artikel, in dem Sie die XSD-Validierung in Orchestration here aktivieren können. Das klingt gut, aber es ist eine serverweite Einstellung. Es wird also für alle Anwendungen gelten ... auch für diejenigen, die funktionieren.

Verwandte Themen