2012-04-23 47 views
0

我有一個要求,我在哪裏接收以txt格式的位置數據。如何在運行期間動態地在管道中選擇XSD?

該記錄的前2個字符可幫助我識別消息類型。

人無我有40多個消息類型,以便根據消息類型我需要拿起接收管道的XSD。

什麼會拿起一個xsd在運行過程中動態的管道的最佳方式?

回答

1

簡答

你是什麼之後,創建自定義flat file disassembler組件,承載內置平面文件組件的一個實例,但也實現了IProbeMessage接口。

該接口允許在BizTalk運行時在接收管道的拆卸階段幾個組件之間進行選擇。

你可以擺脫使用這種定製的管道,每一個可用的平面文件.XSD架構的多個版本,

不幸的是,這種解決方案將很快成爲一個維護的噩夢和性能問題。因此,我建議再往前走一步,然後構建一個這樣的組件來動態選擇要使用的平面文件模式。

對於這一點,你需要建立一個插件系統來驅動IProbeMessage實施。插件的每個實例都將被配置爲返回正確的平面文件.XSD架構,並檢查接收到的消息的輸入流中格式是否匹配(可能基於前幾個起始字節)。然後,您的自定義管道組件將依次將其IProbeMessage實現委託給各種插件,直到消息被識別並返回平面文件.XSD架構。

長的答案

我可以在這裏重現長的答案,但請看看以下系列文章中,我對my blog寫道。這些文章將引導您完成自定義平面文件反彙編程序組件的實現,該組件可動態地解析在運行時使用哪種平面文件.XSD架構,並使用我剛纔描述的確切技術。

請從這裏開始:

0

根據您的問題,我會建立自己的模式在某種程度上利用標籤標識每個記錄,因此記錄模式是基於前兩個字符,你注意使用。您的主架構可能包含所有記錄類型架構變體。看看herehere

0

有一種叫做標籤標識符的屬性,但我懷疑它適用於你的場景。我要做的是在流水線組件(反彙編階段)的某個地方(數據庫或BRE)保留一個消息類型映射表,戳記記錄的前兩個字符,確定記錄類型,然後動態調用FF反彙編器以反彙編信息。

0

你可以做很多事情。

在平面文件模式嚮導中使用標籤標識符。定義一個雙字符字段,設置類型,並定義所有40種類型的消息結構。標籤標識符將爲您排序。

你可以做到這一點作爲一個多部分/籠罩消息。第一部分是雙字符標識符(消息類型),另一部分是消息的其餘部分。使用平面文件管道將輸入轉換爲消息。確保您宣傳標籤字段。然後,您可以使用帶標記的第一個消息部分爲每種類型選擇正確的地圖。如果您希望消息類型能夠被更改,那將會更好。