1. SELECT :
Örneğe başlamadan önce işleyişi kısaca özetlemek istiyorum. Klasöre bir xml dosyası geldiği anda ki bu dosya sorgu dosyamız olacak ve sorgu mesaj tipiyle aynı olacak, process başlayacak. Bu mesaj SndSelectOracle ile sorguya yollanacak, RcvSelectOracle ile sorgu sonucunu alacağız. PortSnd ile de farklı bi klasöre sorgu sonucunu yazacağız.
- Schema oluşturma adımları
- 1. Proje ismine sağ tıklıyoruz Add> Add Generated Items> Add Adapter Metadata seçip add diyoruz.
- 2. WCF-OracleDB'yi seçip Next diyoruz.
- 3. Consume Adapter Service gelicek karşımıza resimdeki gibi. Configure butonuna basıyoruz.
- 3.1. Security tab'ında Client crendential type: Username seçiyoruz, User name ve Password'u giriyoruz. ( benim için ACTPRD - ACTPRD)
- 3.2. URI Properties tab'ında Service Type : DataSourceName kısmına database adını adını yazıyoruz. (benim için DBPRD)
- 3.3. Binding Properties tab'ında EnablebizTalkCompatibilityMode kısmını True ve UseAmbientTransaction kısmını False Yapıyoruz.
- 3.4. OK butonuna basıyoruz ve daha sonra Connect butonuna basıyoruz.
Eğer connection bilgilerini doğru girdiysek karşımıza resimde görüldüğü gibi Schema üzerindeki tablolar gelecektir. İstediğimiz tabloyu seçiyoruz ve yapacağımız operasyonları Add butonu ile alttaki kutuya ekliyoruz. Filename Prefix alanına TBL yazıyorum kısa bir adla başlasın diye. OK butonuna bastıktan sonra şemalar projeye eklenecektir. Yanına bir orchestration daha oluşacaktır, onu silebiliriz. Benim tablomun adı PERSON idi ve schema adı olarak TBL_PERSON olarak yaratıldı. Çift tıklarsak içindeki xml yapısını görebiliriz. Select işleminde Select ve SelectResponse mesaj tiplerini kullanacağız.
Şimdi Orchestration View kısmındaki Messages kısmından SndSelectOracle ve RcvSelectOracle'ye atamak üzere mesaj yaratmamız gerek. Tiplerini de oluşturduğumuz Schema'daki tipleri kullanarak belirteceğiz.
1. Oracle Select için mesaj yaratma : Messages'e sağ tıklıyoruz ve New Message diyoruz. İdentifier'den ismini MsgSelecetReq yapalım ve MessageType olarak Schemas'tan ben BizTalkTest1.TBL_PERSON.Select'i seçiyorum, sizin projenizde sonunda Select olanı seçin.
2. Oracle Select Response için mesaj yaratma : Messages'e sağ tıklıyoruz ve New Message diyoruz. İdentifier'den ismini MsgSelecetRes yapalım ve MessageType olarak Schemas'tan ben BizTalkTest1.TBL_PERSON.SelectResponse'i seçiyorum, sizin projenizde sonunda SelectResponse olanı seçin.
Şimdi, BizTalk Server Administration'da projemizi buluyoruz ve daha önce "Specifiy later" dediğimiz port tanımlamalarını yapmaya başlıyoruz. Bilgisayarın C dizininde BiztalkTest diye bi klasör oluşturalım, onun içine de IN ve OUT adında klasörler daha yaratalım. Port tanımlamalarını Orchestrations üzerinden yapacağız. Orchestrations'a tıklıyoruz ve sağda çıkan ekrandaki orchestration'a sağ tıklıyoruz, Properties'i seçiyoruz, ordan Bindings'i seçiyoruz.
- 1. PortRcv ve PortSnd kısımlarını tanımlıyoruz. Konunun uzamaması için anlatmıyorum.
- 2. PortOracleSelect kısmı bizim için önemli : New port diyoruz ve makalenin başında bahsettiğim Type kısmında OracleDB'yi seçiyoruz. Configuration'a tıklıyoruz.
- 2.1. General kısmında configure'ya tıklıyoruz, DataSourceName = DBPRD yazıyoruz.
- 2.2. Binging kısmında EnablebizTalkCompatibilityMode kısmını True ve UseAmbientTransaction kısmını False Yapıyoruz.
- 2.3. Credentials kısmında Do not user Single Sing-On kısmına User name ve Password'u giriyoruz. ( benim için ACTPRD - ACTPRD)
- 2.4. OK dedikten sonra SOAP Action header kısmını tanımlayacağız. Bu kısımda projedeki oluşturduğumuz schema'dan yararlanmamız gerek. Hangi operasyonun hangi işlemi yapacağını tanımlayacağız porta.
Aslında SOAP Action Header'i tanımlarken IN klasörüne gelecek olan xml formatını da burdan öğreneceğiz. Projeye gelelim. Benim projemde TBL_PERSON.xsd olarak gözüken schema'ya sağ tıklayıp Generate Instance diyoruz. bu bize o tipe uygun bir xml dosyası yaratacaktır. Output kısmındaki linke tıklarsanız xml'i göreceğiz. Benim xml formatı bu şekilde:
- <ns0:Select xmlns:ns0="http://Microsoft.LobServices.OracleDB/2007/03/ACTPRD/Table/PERSON">
- <ns0:COLUMN_NAMES>COLUMN_NAMES_0</ns0:COLUMN_NAMES>
- <ns0:FILTER>FILTER_0</ns0:FILTER>
- </ns0:Select>
- <BtsActionMapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Operation Name="OpSelect" Action="http://Microsoft.LobServices.OracleDB/2007/03/ACTPRD/Table/PERSON/Select" />
- </BtsActionMapping>
Test'e başlayalım.
içeriği aşağıda olan test.xml dosyasını IN klasörüne atıyorum ve OUT klasörüne onun da altındaki xml dosyası oluşuyor.
IN :
- <ns0:Select xmlns:ns0="http://Microsoft.LobServices.OracleDB/2007/03/ACTPRD/Table/PERSON">
- <ns0:COLUMN_NAMES>NAME,TYPE</ns0:COLUMN_NAMES>
- <ns0:FILTER>recid=2</ns0:FILTER>
- </ns0:Select>
OUT:
- <SelectResponse xmlns="http://Microsoft.LobServices.OracleDB/2007/03/ACTPRD/Table/PERSON">
- <SelectResult>
- <PERSONRECORDSELECT>
- <NAME>OMER</NAME>
- <TYPE>C</TYPE>
- </PERSONRECORDSELECT>
- </SelectResult>
- </SelectResponse>
2. INSERT : yakında
3. UPDATE : yakında
Hiç yorum yok:
Yorum Gönder