Etiket: BizTalk
Şubat 25th, 2010
Biztalk Administration Console olmadan, DB ye bakmak suretiyle Biztalk dan gelip geçen mesajları görmeniz pek mümkün olmamaktadır.
DB’yi ne kadar kurcalarsanız kurcalayın, Table lardaki bilgilerin (TrackingDB deki) anlamsız (okunamaz) durumda olduğunu göreceksiniz.
Peki Örneğin Bir Web Service veya Bir Web Sayfasında, Biztalk Server üzerinden gelip geçen mesajları ve mesajların içeriklerini nasıl gösterebiliriz?
Kullanabileceğiniz Metodlar Şöyle :
usings;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using Operations = Microsoft.BizTalk.Operations;
using Microsoft.BizTalk.Message.Interop;
using System.IO;
using System.Globalization;
using System.Collections.ObjectModel;
Altı çizili olan dll leri Biztalk un kurulduğu dizin içerisinde bulabilirsiniz;
Definitions;
private string TrackingServer = "Biztalk SQL Server";
private string TrackingDB = "DTA DB";
Biztalk SQL Server : Biztalk Server ın DB sinin bulunduğu server (local vs olabilir).
DTA DB : Tracking DB nizin adı, değiştirmediyseniz BiztalkDTAdb olmalı.
GetServiceMessages Metodu;
public Collection<BTMsgInstance> GetServiceMessages(string ServiceInstanceId)
{
Collection<BTMsgInstance> collection = new Collection<BTMsgInstance>();
Operations.BizTalkOperations ops = new Microsoft.BizTalk.Operations.BizTalkOperations();
Operations.TrackingDatabase tdb = new Microsoft.BizTalk.Operations.TrackingDatabase(TrackingDB, TrackingServer);
Operations.MessageFlow flow = ops.GetMessageFlow(new Guid(ServiceInstanceId), tdb);
foreach (Operations.MessageEvent message in flow.MessageEvents)
{
BTMsgInstance instance = new BTMsgInstance
{
EndTime = message.RoutingDetails.Source.EndTime,
StartTime = message.RoutingDetails.Source.StartTime,
InstanceID= message.RoutingDetails.Source.InstanceID,
ErrorInfo = message.RoutingDetails.Source.ErrorInfo,
ExitCode = message.RoutingDetails.Source.ExitCode,
ServiceName = message.RoutingDetails.Source.ServiceName
};
collection.Add(instance);
}
return collection;
}
GetTrackedMessageData Metodu;
public string GetTrackedMessageData(string MessageInstanceId)
{
Operations.BizTalkOperations ops = new Microsoft.BizTalk.Operations.BizTalkOperations();
Operations.TrackingDatabase tdb = new Microsoft.BizTalk.Operations.TrackingDatabase(TrackingDB, TrackingServer);
Guid guid = new Guid(MessageInstanceId);
IBaseMessage trackedMessage = ops.GetTrackedMessage(guid);
IBaseMessagePart part = trackedMessage.BodyPart;
Stream stream = part.Data;
StreamReader reader = new StreamReader(stream);
return string.Format(CultureInfo.CurrentCulture, "0", new object[] { reader.ReadToEnd() });
}
Unutmadan yukarıdaki kodun çalışması için Biztalk Server üzerinde bir IIS’ e kurmanızı öneririm, zira kodlar yetki ile ilgili problemlerden dolayı çalışmayabilirler. Bu yüzden bu metodları bir web service olarak hazırlamanız en iyisi olacaktır. Daha sonra yapacağınız ayrı bir web uygulaması ile de bu metodları çağırıp gerekli bilgileri alabilirsiniz.
GetServiceMessages metodu, Bir servisin Instance ID sini input olarak alır ve BTMsgInstance sınıfında bir değişken döndürür. Bunun içinde EndTime, StartTime, InstaceID, ErrorInfo, ExitCode, ServiceName gibi bilgiler bulunmaktadır.
GetTracketMessageData metodu ise Message Instance ID si verilen bir mesajın içeriğini XML olarak bize döndürür.
Bu kadar bilgiden sonra lan olm iyi güzelde ServiceName ve ServiceInstanceID lerini nereden bulacam da bu metodlara gönderip sonuçları alacam diyebilirsiniz. Demelisiniz de
Onu da düşündüm, onu da anlatıcam size
ServiceName leri bulabilmek için aşağıdaki SQL i çalıştırıyoruz,
SELECT DISTINCT sf.[Service/Name] AS [Service Name]
FROM [dtav_ServiceFacts] sf
WHERE sf.[Service/Name] IS NOT NULL;
ServiceInstanceID leri bulabilmek için de aşağıdaki SQL e, ServiceName gönderiyoruz
SELECT sf.[Service/Name] AS [Service Name], sf.[ServiceInstance/InstanceId] AS [Service Instance Id]
FROM [dtav_ServiceFacts] sf
WHERE sf.[Service/Name] = '" + serviceName + "'
ORDER BY sf.[ServiceInstance/StartTime] DESC
Daha da detaylı bilgi gerekirse dtav_ServiceFacts tablosundaki verileri inceleyebilirsiniz.
Son 10 mesajın Bilgilerini getiren SQL;
SELECT TOP 10
sf.[ServiceInstance/InstanceId] AS [Service Instance Id],
sf.[Service/Name] AS [Service Name], sf.[ServiceInstance/State] AS [State] ,
dateadd(minute, 180, sf.[ServiceInstance/StartTime]) AS [Start Time],
dateadd(minute, 180, sf.[ServiceInstance/EndTime]) AS [End Time],
sf.[ServiceInstance/Duration] AS [Duration],
sf.[ServiceInstance/ExitCode] AS [Error Code],
FROM [dtav_ServiceFacts] sf
WHERE sf.[Service/Name] IS NOT NULL
AND sf.[Service/Type]='Orchestration'
ORDER BY [Start Time] DESC
Tags: BizTalk, Biztalk 2009, BizTalk Administration, Biztalk Administration Console, BTMsgInstance, BTS, BTS 2009, DTADB, Service Messages, ServiceInstanceID, ServiceName, Tracked Message, web service
Posted in .NeT 2008, Bilgisayar, BizTalk | No Comments »
Şubat 22nd, 2010
Aşağıdan indirebilirsiniz (x86 veya x64);
x86 için;
x64 için ;
Tags: BizTalk, BizTalk Server, Biztalk Server 2009, BTSRedist, CAB
Posted in BizTalk | No Comments »
Şubat 1st, 2010
Hatayı, Visual Studio da yeni bir Biztalk Projesi yaratmaya çalışırken alırsınız. Muhtemelen sadece sln dosyasını oluşturacak ve diğer gerekli dosyaları ve referansları eklemeden hata verecektir, bu durumda yapmanı gerekenler;
Hata : Creating project Biztalk Proje İsmi project creation failed.
Çözüm :
- Başlat -> Çalıştır -> Regedit yolunu izleyerek Kayıt Defterini (Regediti) açın,
- 32 bit VS için : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\Projects\{FAE04EC0-301F-11d3-BF4B-00C04F79EFBC}\PossibleProjectExtensions
64 bit VS için : HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\9.0\Projects\{FAE04EC0-301F-11d3-BF4B-00C04F79EFBC}\PossibleProjectExtensions
Yollarını izleyin,
- Buradaki değere btproj kaydını ekleyin,
Önceden bir kayıt varsa iki değeri ; (noktalı virgül) ile ayırın
Örn : csproj;btproj
Tags: BizTalk, Biztalk 2009, BizTalk Server, Biztalk Server 2009, BTS, Regedit, Visual Studio, VS 2008
Posted in BizTalk, Yazılım | No Comments »
Kasım 22nd, 2009
Biztalk Server için SAP RFC Libraries Yüklemesi;
- SAP Front End Installer ekranında Next butonuna tıklanır,

- SAP Product Selection ekranında sadece Unicode RFC Libraries ın seçilmesi yeterli olucaktır. Zira Biztalk sadece buradaki RFC kütüphanelerini kullanıyor,

- Yol ve Kurulum için isim veriyoruz ve Next butonuna tıklıyoruz,

- Finish butonu ile işlemimizi bitiriyoruz.

Tags: BizTalk, BizTalk Server, Biztalk Server 2009, BTS, BTS 2009, Installation, RFC, RFC Libraries, SAP, SAP Front End, SAP GUI, Unicode RFC Libraries
Posted in BizTalk | No Comments »
Kasım 22nd, 2009
Biztalk Server için Oracle Client üzerine Patch geçilmesi;
- Welcome ekranından Next butonuna tıklıyoruz,

- Aşağıda ekranda görüldüğü gibi Name ‘ i Oracle Client kurulumu yaptığınızı dizin ve ismi seçmeniz gerekmekte. Eğer varsayılanı seçerseniz geçilen patchin bir işlevi ve anlamı olmaz. Mutlaka Path ve Name ‘ in Oracle Client kurulumu sırasında verdiğiniz değerler olup olmadığını kontrol edin.

- Next butonuna tıklıyoruz,

- Muhtemelen aşağıdaki gibi bir hata ile karşılaşacaksınız. Karşılaşmazsanız sorun yok
Hata OracleMTSRecoveryService ini stop etmeniz gerektiğini söylüyor.

- OracleMTSRecoveryService ini servisler ekranından stop edip, Retry butonuna tıklıyoruz,

- Summary ekranında son kontrollerimizi yapıyoruz ve Install butonuna tıklayarak yükleme işlemini başlatıyoruz.

Tags: BizTalk, BizTalk Server, Biztalk Server 2009, BTS, BTS 2009, Installation, Oracle, Oracle Client, Oracle Client Patch, Patch
Posted in BizTalk | No Comments »
Kasım 22nd, 2009
Oracle Client Kurulumu ;
- Oracle Client kurulumu için setup çalıştırılır ve Next butonuna tıklanır.

- Select Installation Type ekranından Custom seçilir ve Next butonuna tıklanır. Product Languages butonundan istenilen yükleme dili seçilir. Türkçe ve İngilizce seçili olması iyi olur,

- Installa Location olarak C:\Oracle dizinini veya istediğiniz herhangi bir yol verebilirsiniz,

- Product-Specific Prerequisite Checks ekranında hata almadığımızı görüp Next butonuna tıklıyoruz,

- Biztalk için aşağıdaki resimdeki komponentleri yüklememiz gerekiyor. Bunları check liyoruz, ek olarak istediklerimizi işaretleyebiliriz,

- Port Number ı 2030 a setleyip Next butonuna tıklıyoruz,

- Summary ekranından son kontrollerimizi yapıyoruz ve Install butonuna tıklıyoruz,

- Exit ile yükleme işlemini bitiriyoruz.

Tags: BizTalk, Biztalk 2009, BizTalk Server, Biztalk Server 2009, BTS 2009, Oracle, Oracle Client, Oracle Client Installation
Posted in BizTalk | No Comments »
Ekim 22nd, 2009
Here is a good article…
Link…
Tags: BizTalk, Elements, Loop, Message
Posted in BizTalk | No Comments »
Ekim 20th, 2009
For these errors;
The SSO service is starting.
Computer Name: NB-01BSM20
SQL Server Name: NB-01BSM20
SSO Database Name: SSODB
Not using SSL. See documentation for details on how to secure the SQL Server connection.
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
Could not create SSOSQL. To fix the problem, reinstall SSO or try ‘regasm SSOSQL.dll’ from a Visual Studio command prompt.
Error Code: 0×80131700
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
The SSO service failed to start.
Error Code: 0×80131700
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
This error occurs after installation of Visual Studio 2010
To solve This :
1. Navigate Here with Visual Studio Commmand : “C:\Program Files\Common Files\Enterprise Single Sign-On”
2. Run : “regasm SSOSQL.dll”
Tags: BizTalk, Biztalk 2009, Error
Posted in BizTalk | No Comments »
Eylül 14th, 2009
Bir önceki makaleyi yazarken anlatmaya çalıştım fakat gözüm korktuğu için vazgeçmiştim, Bu makalede tekrar basit bir orchestration tasarlamayı anlatmayı deniyeceğim.
En son çok basit bir mapping göstermiştim (cidden basit). Ondan önce de schema ları hazırlamıştık. Aslında çoğu işi tamamlamışız
- İlk olarak Solution Explorer -> proje ismi sağ click -> Add -> New Item yolunu izleyerek listeden Biztalk Orchestration u seçiyoruz. Buna bir isim verip (ben Common dedim) Add butonuna tıklıyoruz.

- Daha sonra aşağıdaki resimdeki gibi Orchestration a ilgili shape leri ekliyoruz

- Şimdi bu shapelerde kullanılmak üzere mesaj tanımlamarı yapmamız gerekmekte. Bize dosya, sql send, sql receive olmak üzere 3 adet mesaj tipi yeterli olucaktır.
- Orchestration View dan Messages a sağ click ve New Message seçilir.
- Bu mesajın Identifier özelliğini msg_File yapalım. Message Type özelliğini ise Schemas ın altından sqlbinding.data olarak seçelim.
- Orchestration View dan Messages a sağ click ve New Message seçilir.
- Bu mesajın Identifier özelliğini msg_SQLRequest yapalım. Message Type özelliğini ise Schemas ın altından sqlbinding.SQLBinding_InsertTableOperation_dbo_sqlbinding.Insert olarak seçelim.
- Orchestration View dan Messages a sağ click ve New Message seçilir.
- Bu mesajın Identifier özelliğini msg_SQLResponse yapalım. Message Type özelliğini ise Schemas ın altından sqlbinding.SQLBinding_InsertTableOperation_dbo_sqlbinding.InsertResponse olarak seçelim.
- Herşey tamam gibiyse ekran aşağıdaki resimdeki gibi görülecektir;

- Şimdi orchestrationa eklediğimiz shapelerin ayarlarını yapalım:
- İlk Receive shape i seçilir ve bunun Activate özelliği True yapılır. Bunu yapmazsanız projeyi deploy ederken sıkıntılarla karşılaşabilirsiniz.
- Message özelliği ise msg_File olarak seçilir. Name özelliği ise Rcv_File yapılır.

- Transform shape inin üzerine çift tıklanır. Aşağıdaki resimdeki gibi ayarları yapılır. Bir önceki makalemizde mapi hazırladığımız için tüm ayarlar rahatlıkla yapılabilir.

- İlk Send sharepi seçilir. Message özelliği msg_SQLRequest olarak seçilir. Name özelliği ise Snd_SQLRequest yapılır.
- İkinci Receive sharepi seçilir. Message özelliği msg_SQLResponse olarak seçilir. Name özelliği ise Rcv_SQLResponse yapılır.
- İkinci Send sharepi seçilir. Message özelliği msg_SQLResponse olarak seçilir. Name özelliği ise Snd_SQLResponse yapılır. Bunu kullanarak işlem sonucunu herhangi bir dosyaya yazdıracağız ileride.
- Bununla birlikte port ayarları dışındaki tüm shapelerin ayarlarını tamamlamış olduk. Portları ise Port Surface kısımlarına sağ click -> New Configured Port a tıklayarak tanımlamaktayız.
- Şimdi ilk portumuzu dosya okumak ve ikinci portumuzu da dosya yazmak için tanımlayalım.
- New Configured Port a tıkladıktan sonra karşımıza gelen ekrandan Next butonuna tıklıyoruz.
- İsim verme ekranında dilerseniz portunuza isim verebilirsiniz. Daha sonra Next ile bir sonraki ekrana geçiyoruz.
- Select a Port Type ekranında hiçbir şey yapmamıza gerek yok. Next deyip geçiyoruz.
- İlk tanımlayacağımız portdan dosyayı okuyacağımız için Port direction of communication dan I’ll always be receiving messages on this port u seçiyoruz. Port binding den Specify now seçilir, URI olarak c:\BiztalkMessages\sqlbinding\IN\*.xml tanımını veriyoruz. Siz farklı bir yol verebilirsiniz. Transport olarak da File seçiyoruz.

- İkinci tanımlayacağımız portun ayarları da bu şekilde olucak. Fakat bu portdan dosya gönderme işlemi yapacağız.
- New Configured Port a tıkladıktan sonra karşımıza gelen ekrandan Next butonuna tıklıyoruz.
- İsim verme ekranında dilerseniz portunuza isim verebilirsiniz. Daha sonra Next ile bir sonraki ekrana geçiyoruz.
- Select a Port Type ekranında hiçbir şey yapmamıza gerek yok. Next deyip geçiyoruz.
- Bu porttan dosya göndereceğimiz için; Port direction of communication dan I’ll always be sending messages on this port. seçilir. Port binding den Specify now seçilir, URI olarak c:\BiztalkMessages\sqlbinding\OUT\%messageid%.xml tanımını veriyoruz. Buradaki %messageid% ifadesi mesajın unique olan id sidir. Bu ifadeyle dosyaların üst üste yazılması engellenir ve her mesaj ayrı birer dosya olarak kaydedilir. Transport olarak File , Pipeline olarak PassThruTransmit seçiyoruz.

- Bu tanımladığımız iki port tek yönlü portlardı. Şimdi tanımlayacağımız port ise iki yönlü. Yani bir requeste karşılık olarak karşı taraftan bir de response mesajı beklenir. Bu port sql e kayıt aktarıp, cevabı ileten port olarak kullanılacak.
- New Configured Port a tıkladıktan sonra karşımıza gelen ekrandan Next butonuna tıklıyoruz.
- İsim verme ekranında dilerseniz portunuza isim verebilirsiniz. Daha sonra Next ile bir sonraki ekrana geçiyoruz.
- Burada Communication Pattern olarak Request-Response seçilir ve Next ile devam edilir.
- Port direction dan I’ll be sending a request and receiving a response seçilir.
- Port Binding den Specify Later seçilir.
- Port tanımlamalarımız yaptıktan sonra geriye kalan sadece Receive ve Send shape lerini ilgili porta, aşağıdaki resimdeki gibi, bağlamak.

- Son olarak da projeyi derleyip hata olmadığından emin olun.
Bir sonraki makalede hazırladığımız bu projeyi deploy etmeyi anlatmaya çalışacağım.
Tags: BizTalk, Biztalk 2009, Orchestration, Port, Receive Shape, Send Shape, Shape, Transform Shape
Posted in BizTalk | No Comments »
Eylül 14th, 2009
Merhabalar,
Bir önceki makalemizde projemizin schemalarını oluşturmuştuk, Bu makelede ise bu schemaları kullanarak basit bir map yaratacağız. Bu map iki farklı şema arasında verilerin ne şekilde taşınacağını belirlememizi sağlar. Bu sayede normal kodlamada kullanılan XSLT ve XML gibi ciddi yoğun ve gereksiz işlerden, sürükle bırak yaparak kurtulmuş oluyoruz. Oluşturacağımız bu map dosyasını not defteriyle açarsanız neden bahsettiğimi daha iyi anlayabilirsiniz
- Sağ Click -> Add -> New Item yolunu izleyerek aşağıdaki gibi bir map oluşturuyoruz. Ben bu dosyanın ismine Transform_File2SQLRequest dedim. Dilerseniz değiştirebilirsiniz.

- Açılan btm dosyasında, Open Source Schema ya tıklayarak Schemas -> sqlbinding.data yı yani kaynak olan dosya şemamızı seçiyoruz.
- Open Destination Schema linkinden ise Schemas -> SQLBinding_InsertTableOperation_dbo_sqlbinding seçilir. Karşımıza bu işlemin türünü soran bir ekran gelecektir. Buradan biz sql e kayıt aktarımı yapacağımız için(gidiş yönlü bir transfer olucak) Insert işlemi seçilir.
- Şemalara belirlendikten sonra temel olarak sürükle bırak ile node ları birbirine bağlıyoruz. Bir tek ID bilgili otomatik üretileceği için boş bırakılacak. Mapin olması gereken son halini aşağıdaki resimden görebilirsiniz.

Bir sonraki makale; Orchestration
Tags: BizTalk, Biztalk 2009, Biztalk Map, Map, sqlbinding, Transform, xml, XSLT
Posted in BizTalk | No Comments »