2017-06-16 55 views
0

我們的BizTalk 2010
描述的任務:
首先系統發送消息:
- ID中的第一個系統
- 在第二個系統ID
的BizTalk查找ID

第二系統接收消息併發送另一個消息:
- 確認接收到的消息編號
- 在第一系統ID
- 在第二系統
ID。
問題:
1.下次在第二個系統中找到ID的最佳方法是什麼?
例如
-------------------------------------
Mess1來自第一個系統
IntIdMess1 = 123456789
IdFirst = 1
IdSecond =空
-------------------------------------
Mess2從第二個系統
IntIdMess2 = 9876545432
確認= 123456789
IdFirst = 1
IdSecond = 367
------------------ -------------------
Mess2從第一個系統
IntIdMess1 = 534735648
IdFirst = 1
IdSecond = 367

我怎麼能找到367 Mess2在BizTalk中使用Orchestration?
或者我可以使用其他方式嗎?

回答

0

你需要使用什麼叫correlations

根據情況,您要麼需要一個或兩個相關集,具體取決於來自第二個系統的確認消息是同步還是異步。我會假設異步因爲這是比較複雜的

您需要定義兩個關聯集,一個用於IntIdMess1,讓我們把它叫做IntIdMess1Corr,另一個用於IdSecond,讓我們把它叫做IdSecondCorr

業務流程從系統1接收Mess1通過接收形狀並通過發送形狀發送給System2,則需要初始化相關集並將此發送形狀配置爲IntIdMess1Corr。

然後,您將有一個Receive Shape從System2獲取確認消息,此接收形狀將具有設置爲IntIdMess1Corr的下列關聯集和配置爲IdSecondCorr的初始化關聯集。

然後,您將擁有另一個接收形狀以接收最後形狀,其中以下相關集配置爲IdSecondCorr。

初始化關聯時,業務流程將發佈實例訂閱。也就是說,它正在查找帶有指定的Promoted Properties的消息。

+0

謝謝你的詳細答案。相關性很明顯,但不明白BizTalk如何提供IdSecond = 367的搜索過程?在sql中它將會像觸發代碼一樣:
從transmesstable中選擇IdSecond,其中idFirst = 1
BizTalk如何提供此搜索?例如超級。 – AlGraf

+0

@AlGraf我已經添加了它如何與BizTalk一起使用。 – Dijkgraaf