15 Ağustos 2011 Pazartesi

Samsung Galaxy S2

Bir seneyi aşkın süredir kullandığım HTC Desire'imi satıp Samsung Galaxy S2 aldım. Ve hiç pişman olmadım. HTC Sence harikaydı fakat TouchWizard4.0'i daha çok beğendim. Hızı harika diyebilirim. Bana göre tek eksiklik HTC'deki Led Notification'un olmaması. Onu da kernel'i değiştirerek touchkey'leri kullanarak yapabiliyorlarmış. Galaxy S'de bu şekilde başarmışlar yani, S2 için beklemekteyim.

Extra bir bilgi olarak aşağıdaki link'te anlatılanlar ile sadece kernel değiştirilerek root ve recoveryMod ClockworkMod yapılabilir.
http://forum.xda-developers.com/showthread.php?t=1103399

1 Temmuz 2011 Cuma

Listem

28.06.2011
Juan Sebastian Garcia - Art Of Contrabass Guitar - Akbank Sanat

Show Owl (Kar Baykuşu) olarak da tanınan dünyaca ünlü bas gitar sanatçısını tanıma fırsatım oldu, gayet hoş ve eğlenceliydi, ekibi de süperdi. http://vimeo.com/25085755

16 Mayıs 2011 Pazartesi

HTC Desire / ROOT / Clockwork MOD Recovery / CyanogenMOD 7

-HTC Desire CyanogenMOD 7.0.3 yükleme-

Telimi 1 yıldır kullanıyorum ve sadece OTA güncellemeleri yaptım. İlk aldığımda 2.1'di OTA ile 2.2'ye yükselttim. Şu sırada 2.3 çıkacak fakat android için en stabil olan cyanogen mod 7.0.3 'u yüklemek istedim. Bu yükleme için tel ne root'lu ne de recovery programı mod yüklemeye uygun.

ilk önce tel root edilmeli ve rocovery'si değiştirilmeli. daha sonra da sd karta yüklediğimiz mod dosyası gösterilerek kurulmalı.

root'lama ve recovery güncellemeyi çok kolay hale getirmişler. bunu unrevoked3 programı ile yaptım.

1. İşlem öncesi ayarlama :
unrevoked3 programını indiriyoruz ( download for windows )
buradan bazı detaylar okudum, windows işletim sistemleri için evvelden HBOOT drivers'larını yüklenmesi gerekiyormuş. Yazıda açık bi şekilde anlatılan burada bahsedilen işlemleri uyguladım. Kısaca bahsedersem :
power ve aşağı tuşuna basarak HBOOT ekranına geliyoruz ardından usb kalboyu pcye takıyoruz, donatılarda android 1.0 ibaresi geliyor ve driver güncelleme yapıyoruz.

2. rootlama ve recovery yükleme :
teli usb ile pcye bağlıyoruz, Settings > Applications > Development kısmından “USB Debugging” modunu seçili hale getirin. ve şarj etme konumunda iken, unrevoked3 programını açıyoruz ve o işlemlere başlıyor, bi kaç kez açılıp kapandıktan sonra ClockworkMOD recovery yüklendi ve tel root edildi.

3. mod yükleme :
cyanogenmod mod en güncel versiyonu indiriyoruz, bu bir zip dosyası, bunu telin sd kartına olduğu gibi kopyalıyoruz. Teli kapatın ve power+aşağı tuşuna basılı tuttuğumuzda HBOOT ekranı gelecektir. Burdan recovery'e geliyoruz, yeni recovery programı olan ClockworkMOD geldi ekrana. Burdan ilk önce mount&storage bölümünde yer alan format system ve format data seçeneklerini uygulayın. sonra da recovery ana menüsünden "install from sdcard" seçeneğini seçip indirdiğiniz dosyayı bulun ve yükleyin. çok kısa bir sürede kurulacaktır.

4. Google Apps :
kurulum ardından marketin gelmemesi en büyük problem gibi gözüktü. Bunu Google Apps yükleyerek hallediyoruz, işlem mod yükleme gibi. Aşağıdaki linkte en uygun paketi indiriyoruz. bunu sd karta kopyalıyoruz ve 3.maddede bahsettiğim gibi dosyayı gösterip yükleme yapıyoruz.

http://goo-inside.me/gapps/

5 Mayıs 2011 Perşembe

Tiyatrolarım


Yine kendim için tiyatrolarımın listesini yapmak istedim.

10.05.2011 - Cevahir
Ölüleri Gömün

Musa Uzunlar (Namıdeğer kurtlar vadisi büyük iskender) - amerika savaştadır, o sırada ölen 6 genç, gömülürken topraya girmeyi reddeder ve ayağa kalkarlar, ve bir hiç uğruna ölmelerinin haksızlığını sorgulamaktadırlar. İzlediğim en iyi tiyatro diyebilirim.

05.05.2011 - Cevahir
Nazım Hikmet'in Memleketimden İnsan Manzaraları'ndan Onbir Tablo

Rüştü Asyalı (Namıdeğer keloğlan keleşoğlan) - diksiyonu düzgün vurguları yerinde yapan bir insanın size kitap okuduğunu düşünü, aynen öle bişe

01.03.2011 - Cevahir
Karanlık İşler

Levent Özdilek - mafya babası onun sevgilisi, arkadaşı, sevgilisinin arkadaşı, onun sevgilileri... gibi gibi gibi, karman çorman bişe. Eğlenceli ama, sonu da güzel.

05.01.2011 - Cevahir
Beğendiğiniz Gibi

William Shakespeare'in kitabından uyarlama bi tiyatro, genel olarak eğlenceli, ama çok beğendiğim söylenemez.

09.11.2010
Tehlikeli İlişliker - Harbiye Muhsin Ertuğrul Sahnesi

Levent Üzümcü (Avrupa Yakası'da Namıdeğer Cem)
Kadın erkek ilişkisini iyi anlatan bi oyun, harika, izlenmeli

12 Nisan 2011 Salı

30. istanbul film festivali deneyimlerim

30. istanbul film festivalinin son haftasındaki film'lerle ilgili yorumlarımı kendimle paylaşmak istiyorum, ilerde döner okurum diye.

11.04.2011
Işığa Özlem (nostalgia de la luz / 2010 imdb:7.6):
Konu, Şili'de atacama çölünde geçiyor. Atacama çölü 3000m yüksekliğinde dünyanın en kurak yerdir ve berrak havası yüzünden samanyolu galaksisinin izleneceği en güzel yerlerden biridir. Bu yüzden dünyanın heryerinden astronomlar gelip araştırma yapmaktadır. Astonomlara göre mutlak şimdi yoktur, aslında herşey olmuştur, biz belli bir süre sonra farkına varmaktayız, şimdiye en yakın şeyi ise düşündüğüz şeyler olarak ifade etmektedir. Dünyaya gelen ışık aslında güneşten 8dk önce çıkmıştır, aydan gelen ışık ise yaklaşık 1sn sonra bize gelmektedir. Bu düşüncelerle astonomlar gökyüzünde aslında geçmişi aramaktadır. Aynı zamanda bu çölde kadınlar 70'lerde Pinochet rejimi sırasında ölen ve buraya gömülen yakınlarını aramaktadır. Astronomlar da geçmişi aramaktadır, ölen yakınlarını arayan kadınlar da. Yönetmen alakasız gözüken durumları birbiriyle ilginç bir şekilde bağlamış. Konu ilginç ve izlenesi gibi geliyor fakat ben açıkcası çok sıkıldım, yine de kaç şeyi öğrenmiş olmam güzel.

Petrol Kentin Sırrı (oil city confidential / 2009 imdb:7.7) :
70’lerin başında ingilteredeki Canvey Adası'nda mahalle arkadaşı dört genc sık sık bir araya gelip müzik yapmaktadır, fakat gelecekle ilgili bi planları yoktur. Olaylar onları hiç beklemedikleri bi şekilde 1975 yıllarında ingilterenin en büyük punk rock gurubu haline getirmektedir ve bu grubun adı Dr. Feelgood'dur. Punk Rock'un patlamasına neden olan grup olarak gösterilmektedir, performansları harikadır. Gurubun doğuşunu ve nasıl söndüğünü anlatan bir belgeseldir. Sonradan öğrendim ki Dr.Feelgood sokak argosunda uyuşturucu satıcısıymış. Benim açımdan başlarda olayın ne olduğunu bilmediğimden kaynaklanan bi sıkıcılık olsa da, gurubu tanıdıkça ve müziklerini duydukça Dr.Feelgood'u geç te olsa tanıdığım için çok şanslıyım. Müzikleri harika, eğlenceli ve karizmatikler.

12.04.2011
Serseriler (Neds / 2010 imdb:7.1):
John McGill çok başarılı bir öğrencidir, abisi ise tam tersine serseri ve okuldan atılmıştır. john başarılı olmaktan mutludur fakat işlerin bölye gitmediğini anlar, serseriliğe merak salar ve bu şekilde daha mutlu olduğunu hisseder. Abisinin çetesine katılır ve film bu şekilde ilerler. Sonlara doğru konu dramatikleşse de başlar çok eğlenceli idi, kesinlikle izlenmeli. İlgimi çeken sahne ise john, kızlı erkekli arkadaşlarıyla muhabbet ederken arkadaşlarına küçükken sataşan çocuğu dövmek istediğini söylemesi ve ardından kızlardan birinin john ile yürüyüşe çıkmak istemesi, yürüyüş sonunda ne olcağı malum. Yani kızlar serseriler sever diye bi sonuç çıkardım.

Siyah Venüs ( Vénus noire / 2010 imdb:6.8):
Normalde 8 1/2'yi izlemeyi planlamıştım fakat yer kalmadığı için buna gittim. Gerçek bir hayat hikayesidir. Güney Afrika'nın Eastern Cape bölgesinde yaşayan Saartjie Baartman, 1810 yılında farklı fiziksel görünüşü nedeyile ingilteyere getirilir ve sahibi tarafından gösterilerde sunulur. Gösterilerde büyük kalçasını ön plana çıkararak vahşi bir hayvan gibi hareket etmesi istenir. Buraya kadar durum Saartjie için zor olsa da katlanılabilirdir, fakat dokunulmasından çok rahatsız olmaktadır. Zamanla ingilterede Hottentot Venüsü olarak ikon haline gelmiştir. Daha sonra İngiltere ve Fransa saraylarında gösterilere çıkar ve işler gittikçe istemediği bi hal alır. Bilim adamları tarafından incelenmek istenir. Tabiki sonunu anlatmak olmaz fakat benim bu filmde ilgimi çeken Saartjie'nin mahremiyet çizgisini aşmamaktaki ısrarı, film akışında ne olcak ki istediklerini yapsa diyosunuz fakat o öyle düşünmemektedir. Film çok uzundu, feci cüretkar sahneler vardı, akış güzel ama hadi bitsin artık diyorsunuz. Farklı bir hayat hikayesi ve bunun seyirciye güzel aktarılması sebebiyle izlenmesi gerekir diye düşünüyorum.

13.04.2011
Mikrofon (Microphone / 2010 imdb:6.9):
Kötü Kan (Mauvais Sang)'ı izlemeyi planlamıştım fakat yer kalmadığı için buna gittim. Amerikada uydu mühendisliği yapan Khaled, doğup büyüdüğü Mısırın İskenderiye kentine gelir ki sanırım gelme amacı sevgilisine kavuşma istediği. Tesetadüfen birileriye tanışır. Bu kişiler iskenderiyede underground müzik yapmaktadır, kimileri de güzel sanatlar fakültesinde okumakta ve bitirme tezi olarak bu müzik yapanları araştırmaktadır. Klahad da bir dergi için bu grupları anlatır ve makale hazırlamak istediğini söyler. Dergi ile anlaşınca bu kişilerle arkadaşlığı git gide kuvvetlenir. Filmde iskenderiyede bulunan bir çok underground müzik yapan (hip-hop, rock, punk ...) grupların müziklerine yer verilmiş, kimi zamanda Klahad'ın sevgilisiyle aşk dialogları geçmektedir. Filmi pek beğenmesem de aklıma kazınan bir söz var "adını biyere yazmama gerek yok, adın kalbimde yazılı"

Özgürlük Yolu ( The way back / 2010 imdb:7.4):
Sovyet esir kapından bir grubun kaçarak sibiryadan hindistana olan 6000kmlik yolculuğunu anlatır. Film gerçek bir hikayedir ve bu kişilere atfedilmiştir. Yolculuk sırasında doğa koşulları yüzünden biyandan hayatta kalmaya çalışmaları diğer yandan da kimseye görünmemeleri gerek. Hayatta kalma çabaları tabiki çok daha büyük bir marifet. Söyleyebileceğim tek şey muhteşem bi film. Çok gerçekçi. 3. günün sonunda izlediğim en güzel film.

14.04.2011
Fabrikadaki Piyano (The Piano in a factory / 2010 imdb:8.3):
Evet imdb puanı yüksek, ve gişeye vardığımda biletler bitti, sıraya girin yavaş yavaş rezervasyonlar iptal oldukça bilet alırsınız dediler, iyi bekleyelim dedik. Şansıma o sırada fabrikadaki piyano sırası mı diyen amca, evet dedikten sonra elime bir bilet tutuşturdu arkadasına bakmadan gitti, ben de şaşkınlıkla bişey diyemedim. Neyse iyi film izlicez edasıyla oturduk, gel görelim ki büyük beklenti içinde olduğum içindir sanırım pek beğenmedim. Film 1990lı yıllarda çinin serbest ekonomiye geçmesinin ardından fabrikası kapanan bir adamın boşanmasıyla birlikte kızının kendisinde kalmasını istemesi ve ona bir piyano yapmak istemesi üzerine işlenmiş. Kızı kim piyano alırsa onda kalmak istiyor. Babası akordeon çalmaktadır ve kızının kendisinden daha büyük bi sanatçı olmasını istemektedir. Filmin sonunda oyunculardan biri ile röportajda anlatılmak istenen şu imiş. Biz çin'in durumunda uzak olduğumuz için anatema röportajda daha iyi anlaşıldı. 1990dan önce kominizm olan ülkede insanlar birlikte iş yapabiliyordu, birbirlerine destek oluyordu, materyaliz'e geçtikten sonra bunlar kayboldu, insanlar daha fazla lükse yöneldi ve yardımlaşma yok oldu, biz bu filmde bu konuyu vurgulamak istedik dedi. Ve çinin son 5 yılda ekonomisinin patlamış olduğu, çok ücra köşeler haricinde fakirliğin bittiğini de ekledi. On üzerinden 6 veriyorum ben.

Düzelti (Erratum / 2010 imdb:6.7):
Fabrikadaki piyano düş kırıklığının ardından bu filmden umutluydum, bunun konusu daha güzeldi çünkü ve birçok ödülü vardı. Michal iş gereği doğduğu kasabaya gidip patronun arabasını alıp geri dönmelidir. Fakat babasıyla geçmişinde olan problemleri yüzünden kesinlikle uzun süre kalmak istememektedir. Arabayı alır dönerken evsiz birine çarpar, adam ölür ve araba da hasar alır. Arabayı yaptırim öle gidim derken aksilikler yüzünden 2 gün kasabada kalır ve bu sırada geçmişiyle yüzleşir. Konu güzel gibi fakat film başından bitimine kadar aynı tempo ve sıradanlıkla ilerlemektedir. Tamamen vasat. Ödülleri heralde çekimlerdeki sanatsal güzellikle aldı. Çünkü ışık açıları kareler çok güzel ona bişey diyemem. Film bitti, kimse sesini çıkarmadan kalktı gitti. Dün izledğim Özgürlük Yolu filminin sonunda kime alkışladıklarını bilmediğim halde seyirci alkış tutmuştu. Hani tiyatro filan değildi, oyunculardan kimse veya yönetmen de yoktu, neyse öle yani.

5.gün sonunda hasta oldum

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"

4 Mart 2011 Cuma

BizTalk 2009 Dynamic Send Port


Bu port sayesinde send porta yollanacak dosyanın ismini, klasör yolunu değiştirebiliriz.

Portu tanımlarken Port Binding aşamasında;
   Port direction of communication : I'll always be sending messages on this port
   Port Bingding : Dynamic
seçiyoruz.

ConstructMessage'da MessageAssignment Shape'inde aşağıdakine uygun kodlarımızı yazıyoruz.

SndXML = RcvXML;
ruleSndPort(Microsoft.XLANGs.BaseTypes.Address)= "C:\\biztalk\\OUT\\D1_%MessageID%.xml";
ruleSndPort(Microsoft.XLANGs.BaseTypes.TransportType)="FILE";
SndXML(FILE.CopyMode)=1;


BizTalk orchestration'da custom dll function çağırma


Kimi zaman Biztalk orchestration'da işimizi kolaylaştıracak custom dll fonksiyonları çağırmamız gerekir.

Yapılacak işlem şu;
1. projenin referances kısmında dll'i eklemeliyiz.
2. deploy'dan sonra
    BizTalk Server Administration > Applications > ilgili proje > Resources'da sağ tıklayıp
    Add > BizTalk Assemblies'e tıklayıp aşağıdaki resimdeki gibi dll'i GAC(Global Assembly Cache)'a eklemeliyiz.






dll'de değişiklik yaparsak her defasında bu işlemi baştan yapmalı ve
    BizTalk Server Administration > Platform Settings > Host Instances'de BizTalkServerApplication'u restart etmeliyiz.

3 Mart 2011 Perşembe

Biztalk Delay Shape - GMT Problem


Delay Shape bilindiği üzere işleme devam etmek için belirtilen tarih ve saate kadar beklemeyi sağlar. Bu saat formatı UTC (Coordinated Universal Time) formatında olmalıdır.

Mesela

StrRunTime = System.DateTime.Now.ToString("yyyy-MM-ddT") + "15:30:00.00";
RUN_TIME = System.Convert.ToDateTime(StrRunTime);


görüldüğü üzere RUN_TIME date tipinde bir değişken ve o günün 15:30 saatini gösteriyor. Bu değişkeni aşağıdaki gibi Delay Shape'e koyarsak,

new System.DateTime(RUN_TIME);

her gün saat 15:30'dan önce işlem start etmiş olsa bile bu saate kadar bekleyecek ve 15:30'da işleme devam edeceğini düşünürüz. Düşünürüz diyorum çünkü GMT saat farkı yüzünden gerçek saate göre 17:30 da işlem kaldığı yerden devam eder. Bu problemi halletmek için RUN_TIME'i türkiyenin içinde bulunduğu GMT'e göre 2 saat geri almamız gerek.

RUN_TIME aşağıdaki gibi Set edilmesi gerek.

StrRunTime = System.DateTime.Now.ToString("yyyy-MM-ddT") + "15:30:00.00";
RUN_TIME = System.Convert.ToDateTime(StrRunTime);
RUN_TIME = RUN_TIME.AddHours(-2);

Biztalk 2009 WCF Oracle Adapter - Part 4 / 5

Update ve delete'i fırsat bulursam anlatırım fakat zaten mantık aynı. Projeyi Update ve Delete xml tipine uygun mesaj tipleri ile düzenleyeceğiz, OraclePort'ta da SOAP action'a OpUpdate ve OpDelete adında iki operasyon daha tanımlayacağız. Bu kadar.

Biztalk 2009 WCF Oracle Adapter - Part 3


2. INSERT :

Insert işlemi select ile aynı mantıktadır. TBL_PERSON.xsd 'deki insert fotmatlı bir xml yollucaz, ve geri dönüş değeri olarak başarılı veya başarısız olduğunu belli eden bir xml dönücek.

İlk önce yollayacağımız xml'yi hazırlayalım, bunu da daha önce select işlemi sırasında yaptığımız gibi TBL_PERSON.xsd schema'sına sağ tıklayıp Generate Instance yapıcaz. Fakat bu şekilde bize en üstteki tipi olan select xml örneğini üretir. insert'i elde etmek için projenin klasör halinde bir kopyasını oluşturun, bu kopyada insert ve insertResponse haricindeki schema'daki tüm xml yapılarını silin. Şimdi Generate Instance dediğimizde insert xml örneğini output kısmında gösterecektir. Benim insert xml aşağıdaki gibidir. Bu xml'yi bi yere kaydedelim. Ve eski projeye geri dönelim. Burda hiç bişey silinmemişti.

<ns0:Insert xmlns:ns0="http://Microsoft.LobServices.OracleDB/2007/03/ACTPRD/Table/PERSON">
 <ns0:RECORDSET>
  <ns0:PERSONRECORDINSERT>
   <ns0:RECID InlineValue="InlineValue_0">RECID_0</ns0:RECID>
   <ns0:NAME InlineValue="InlineValue_0">NAME_0</ns0:NAME>
   <ns0:CREATEDATE InlineValue="InlineValue_0">1999-05-31T13:20:00.000-05:00</ns0:CREATEDATE>
   <ns0:TYPE InlineValue="InlineValue_0">TYPE_0</ns0:TYPE>
  </ns0:PERSONRECORDINSERT>
 <ns0:COLUMN_NAMES>COLUMN_NAMES_0</ns0:COLUMN_NAMES>
 <ns0:QUERY>QUERY_0</ns0:QUERY>
</ns0:Insert>
Şimdi bu aşamada projemizi biraz geliştiriyoruz. Select işleminde dışarıdan select formatlı bir xml gelmişti ve işleme sokulmuştu, fakat insert formatlı bir xml yollarsak hata verecektir, çünkü PortRcv'a Select xml' tipi mesaj alacağını söylemiştik. Yapacağımız işem şu. Dışarıdan System.Xml.XmlDocument formatlı herhangi bir

xml gelsin, bunun tipine bakalım. Select ise select işlemine, Insert ise Insert işlemine değilse işlem terminate etsin. Bu aşamada Decide Shape'ini kullanacağız, tip kontrolü burada olacak. Tip kontrolüne göre uygun yola devam eden PortRcv'den gelen System.Xml.XmlDocument tipli mesaj ConstructMessage Shape'de uygun mesaja çevrilecek, oracle'a yollanacak ve oracle'dan dönen mesaj da System.Xml.XmlDocument tipli MsgSnd'e atanacak. Bu şekilde System.Xml.XmlDocument tipli mesaj gelmiş ve System.Xml.XmlDocument tipli mesaj çıkmış olacak.

Aşağıdaki resime uygun orchestration'u düzenleyelim. Orchestration View bölümünde mesajların altıya çıktığını görebiliriz, MsgRcv ve MsgSnd mesajları System.Xml.XmlDocument tiplerinde, MsgInsertReq ve MsgInsertRes mesajları sırasıyla BizTalkTest1.TBL_PERSON.Insert ve BizTalkTest1.TBL_PERSON.InsertResponse tiplerinde. Siz projenizde uygun isimdekileri almalısınız.






Projede kullanılan kodlamaları gösterelim.

OraSelect Decide:
MsgRcv(BTS.MessageType) == "http://Microsoft.LobServices.OracleDB/2007/03/ACTPRD/Table/PERSON#Select"

OraInsert Decide :
MsgRcv(BTS.MessageType) == "http://Microsoft.LobServices.OracleDB/2007/03/ACTPRD/Table/PERSON#Insert"

OraUpdate Decide :
MsgRcv(BTS.MessageType) == "http://Microsoft.LobServices.OracleDB/2007/03/ACTPRD/Table/PERSON#Update"

ConstructMessage_1
MsgSelecetReq = MsgRcv;

ConstructMessage_2
MsgInsertReq = MsgRcv;

ConstructMessage_3
MsgSnd = MsgSelecetRes;

ConstructMessage_4
MsgSnd = MsgInsertRes;

ConstructMessage_5
MsgSnd = MsgRcv;

Expression_1
System.Diagnostics.EventLog.WriteEntry("BizTalktest1", "unknown xml");

Terminate_1
"terminated";

BizTalk Server Administration'da projemizi full stop ediyor ve Visual Studio'da projeyi deploy ediyoruz. BizTalk Server Administration'da projemizde sadece 1 yerde değişiklik yapıcaz. Select işleminde oluşturduğumuz Send Ports'daki PortOracleSelect portunun ismini PortOracle yapalım. Çünkü bu porttan oracle'daki tüm işlemlerimizi halledebiliriz, isminin global olması daha okunur olur. ve bu prottan insert işleminin de yapılmasını sağlayacağız.

Yeni SOAP Action bu şekilde olacak


<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" />
  <Operation Name="OpInsert" Action="http://Microsoft.LobServices.OracleDB/2007/03/ACTPRD/Table/PERSON/Insert" />
</BtsActionMapping>







Bu haliyle portları enable yapıyoruz ve projeyi start ediyoruz. Ardından Platform Setting altında olan Host Instances'de BiztalkServerApplication'u restart edelim.

Şimdi IN klasöre daha önce daha önceki makalede olduğu gibi select xml'sini atıyoruz. OUT klasörüne sonucu gelmesi gerek. Insert Xml'inin işlemi ise aşadağaki şekilde

IN :

<ns0:Insert xmlns:ns0="http://Microsoft.LobServices.OracleDB/2007/03/ACTPRD/Table/PERSON">
 <ns0:RECORDSET>
  <ns0:PERSONRECORDINSERT>
   <ns0:RECID>4</ns0:RECID>
   <ns0:NAME>GURHAN</ns0:NAME>
   <ns0:CREATEDATE InlineValue="SYSDATE"></ns0:CREATEDATE>
   <ns0:TYPE>C</ns0:TYPE>
  </ns0:PERSONRECORDINSERT>
 </ns0:RECORDSET>
</ns0:Insert>
OUT:

<?xml version="1.0" encoding="utf-8"?>
<InsertResponse xmlns="http://Microsoft.LobServices.OracleDB/2007/03/ACTPRD/Table/PERSON">
 <InsertResult>1</InsertResult>
</InsertResponse>

Biztalk 2009 WCF Oracle Adapter - Part 2


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.

Bir Biztalk projesi yaratıyoruz ve sağdaki resimde görültüğü gibi orkestrayı yaratıyoruz.

Bizim için önemli olan kısım PortOracleSelect portu. Bu port iki yönlü olacak, bir mesaj yollayacağız ve o bir mesaj geri dönecek. Bu portun tanımlamasını yaparken Request-Response seçilmeli, sonraki adımda "I'll be sending a request and receiving a response" ve "Specifiy later" seçilmelidir. SndSelectOracle ve RcvSelectOracle için mesajlarının tipini belirmek üzere oracle tablosunun schema'sını oluşturmamız gerek. Bu schema'daki xml tiplerini mesaj tiplerine atayacağı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.


Oluşturduğumuz mesajları SndSelectOracle ve RcvSelectOracle kutularına atmamız gerek. SndSelectOracle için Porperties'de Message değerini MsgSelectReq seçiyoruz. RcvSelectOracle için ise MsgSelectRes'i seçiyoruz. Bu şekilde kutulara sorgulamada kullanılacak mesaj tiplerini de göstermiş olduk. Daha sonra SndSelectOracle ve RcvSelectOracle kutularını PortOracleSelect portuna bağlıyoruz. Rcv'nin mesaj tipini MsgSelecetReq, Snd'nin mesaj tipini MsgSelecetRes yapıyoruz ve onu da portlar ile ki portların request tipleri de mesajlara uygun olmak zorunda, bağlıyoruz.


Proje kısmında yapacaklarımız bu kadar. Projeye sağ tıklayıp build dediğimizde sorunsuz build olması gerek. Şimdi projeyi deploy edeceğiz fakat ondan önce projeye sağ tıklayıp Properties kısmına gelelim. Deploy sırasında hata gelmemesi için signing kısmından bi key yaratıyoruz ve Deploymen kısmında Application Name'a proje ismini verelim ( benim proje adım BiztalkTest1), Server kısmına .(nokta=localhost) yazalım. Şimdi Projeye sağ tıklayıp Deploy diyoruz. BizTalk Server Administration'a projemiz gelmiş olacaktır.

Ş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>
Bu xml bizim sorgu yapacak SndSelectOracle portu ile yollayacağımız xml. bunu bir yere kaydedelim. SOAP Action ise aşağıdaki şekilde olacak. Name kısmı projedeki port operation name ismi olmak zorunda. Action bilgisi ise yukarıdaki xml'i inceleyerek nasıl yarattığıma bakın. ns0 bilgisinin sonuna /Select'i ekledim.

<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>
bu şekilde projeyi tamamlamış olduk, portları enable yapıyoruz ve projeyi start ediyoruz. Ardından Platform Setting altında olan Host Instances'de BiztalkServerApplication'u restart edelim. Bunu projede her değişiklik yaptıktan sonra yapmamız gerek, yoksa değişiklikler yansımaz.

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:

<?xml version="1.0" encoding="utf-8"?>
<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

2 Mart 2011 Çarşamba

Biztalk 2009 WCF Oracle Adapter - Part 1


Bu makale dizisi, biztalk 2009'dan oracle veritabanına bağlanarak oracle adapter kurulumu, select, insert, update, delete işlemlerini yapacağımız 5 kısımdan oluşmaktadır. Bu makalede Biztalk 2009 için Oracle düzenlemlerini yapacağız. Biztalk 2009 kurulumda oracle adapter ile gelmez.

Örneklere başlamadan önce aşağıdaki dört aşamadan olusam kurulumları ve tanımlamayı yapmamız gerek.

a. WCF LOB Adapter SDK SP2
note : the tools section must be checked on install

b. BizTalk Adapter Pack

c. Biztalk 2009 oracle'a bağlantı sırasında resimde de gözüktüğü gibi "Could not load file or assembly 'Oracle.DataAccess, Version=2.111.7.20, Culture=neutral, PublicKeyToken=89b483f429c47342' or one of its dependencies. The system cannot find the file specified" gibi bi hata çıkarabilir. Versiyon uyumsuzluğundan kaynaklanan bu sorunu Oracle.DataAccess versiyonunu güncelleyerek hallediyoruz. Bu kurulum normal oracle client kurulumudur ki bu sırada Oracle.DataAccess versiyonunu pc'ye yükleyecektir. Versiyon kontrolü için C:\WINDOWS \assembly klasörüne bakabilirsiniz.

ODAC1110720.zip 188 MB (197,638,641 bytes)
Download the Oracle Universal Installer version



d. Bu üç kurulumu yaptıktan sonra, projeyi deploy sırasında port tanımlamasında gerekli olacak oracle adapter'ini tanımlıyoruz. BizTalk Server Administration'da Adapters'e sağ tıklayıp New diyoruz, Name kısmına oracleDB diyebilirsiniz, Adapter kısmından WCF-OracleDB'i seçiyoruz ve OK diyoruz. Sağdaki resimdeki gibi port Adapters'e gelecektir.

Tanımlamaları yaptığımıza göre örneklerimize başlayabiliriz. Örneklere resimlerle ve üzerinde anlatımlar yaparak ilerleyeceğiz. Bu makaleleri ilk hazırlarken tüm adımları resimlerle anlatarak ilerliyordum fakat belli bir noktadan sonra işin içinden çıkılmaz hale geldiğini farkedince daha sade anlatmaya karar verdim. Onun için teferruatları sizin bildiğinizi farzedeceğim.



Örneklere başlamadan önce kullanıdığım tabloyu görmek istersiniz diye scriptini yazıyorum;

CREATE TABLE PERSON(
   RECID NUMBER,
   NAME VARCHAR2(100 BYTE),
   CREATEDATE DATE,
   TYPE CHAR(1 CHAR)
);