6 Mart 2011 Pazar

Biztalk Orchestration Loop Shape


İlk önce aşağıdaki resimi inceleyelim. Burada yapılan işlem şudur. loopCount Shape'ine gelen mesajında kaç node olduğu bulunuyor, TempInteger Shape'de o mesajdaki ilk node'dan başlayarak istenilen alandaki değer alınıyor ve counter bir artırılıyor, Decide Shape ile de xml node'undaki değere göre bazı işlemler yapılıyor. Döngü son node'a kadar devam ediyor.



resimdeki Shape'lerdeki kodlamaları veriyorum. Buradaki /* ile başlayan değerler xml node'undaki Instance XPath deki değerdir. Node'daki o değere ulaşmamızı sağlar. Eğer Node çoklu kayıttan oluşuyorsa index yardımı ile TempInteger Shape'inde gözüktüğü gibi alınır.

loopCount Shape:

loopCount = System.Convert.ToInt32(xpath(MsgSelectProcesRes,@"count(/*[local-name()='SelectResponse' and namespace-uri()='http://Microsoft.LobServices.OracleDB/2007/03/ACTPRD/Table/TRANS_AUTO_PROCESS']/*[local-name()='SelectResult' and namespace-uri()='http://Microsoft.LobServices.OracleDB/2007/03/ACTPRD/Table/TRANS_AUTO_PROCESS']/*[local-name()='TRANS_AUTO_PROCESSRECORDSELECT' and namespace-uri()='http://Microsoft.LobServices.OracleDB/2007/03/ACTPRD/Table/TRANS_AUTO_PROCESS'])"));
TempInteger = 1;

TempInteger Shape :

TempString = System.String.Format("string(/*[local-name()='SelectResponse' and namespace-uri()='http://Microsoft.LobServices.OracleDB/2007/03/ACTPRD/Table/TRANS_AUTO_PROCESS']/*[local-name()='SelectResult' and namespace-uri()='http://Microsoft.LobServices.OracleDB/2007/03/ACTPRD/Table/TRANS_AUTO_PROCESS']/*[local-name()='TRANS_AUTO_PROCESSRECORDSELECT' and namespace-uri()='http://Microsoft.LobServices.OracleDB/2007/03/ACTPRD/Table/TRANS_AUTO_PROCESS'][{0}]/*[local-name()='TYPE' and namespace-uri()='http://Microsoft.LobServices.OracleDB/2007/03/ACTPRD/Table/TRANS_AUTO_PROCESS'])", TempInteger);
TempString = xpath(MsgSelectProcesRes, TempString);
//System.Diagnostics.EventLog.WriteEntry("Deger-"+TempInteger.ToString() , "Deger : " + TempString );
TempInteger = TempInteger + 1;

Decide Spahe:

Önemli olmamakla birlikte bu shape'de ve diğerinde buna benzer bi kodlama var.
TempString =="O"

Hiç yorum yok:

Yorum Gönder