Etiket: Biztalk 2009

BizTalk Server Tracking Database’i Kod İle Sorgulamak

Ş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: , , , , , , , , , , , ,
Posted in .NeT 2008, Bilgisayar, BizTalk | No Comments »

BizTalk Error : “Project Creation Failed”

Ş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 :

  1. Başlat -> Çalıştır -> Regedit yolunu izleyerek Kayıt Defterini (Regediti) açın,
  2. 32 bit VS için : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\Projects\{FAE04EC0-301F-11d3-BF4B-00C04F79EFBC}\PossibleProjectExtensions
  3. 64 bit VS için : HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\9.0\Projects\{FAE04EC0-301F-11d3-BF4B-00C04F79EFBC}\PossibleProjectExtensions

    Yollarını izleyin,

  4. 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: , , , , , , ,
Posted in BizTalk, Yazılım | No Comments »

Biztalk Server için Oracle Client Yüklemesi

Kasım 22nd, 2009

Oracle Client Kurulumu ;

  1. Oracle Client kurulumu için setup çalıştırılır ve Next butonuna tıklanır.
  2. oracle_installation_1

  3. 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,
  4. Oracle_Installation_2

  5. Installa Location olarak C:\Oracle dizinini veya istediğiniz herhangi bir yol verebilirsiniz,
  6. Oracle_Installation_3

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

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

  11. Port Number ı 2030 a setleyip Next butonuna tıklıyoruz,
  12. Oracle_Installation_6

  13. Summary ekranından son kontrollerimizi yapıyoruz ve Install butonuna tıklıyoruz,
  14. Oracle_Installation_7

  15. Exit ile yükleme işlemini bitiriyoruz.
  16. Oracle_Installation_8

Tags: , , , , , , ,
Posted in BizTalk | No Comments »

BizTalk SSO Error

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: , ,
Posted in BizTalk | No Comments »

Biztalk 2009 : SQLBinding – 4 – Orchestration

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 :)

  1. İ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.
  2. orc1

  3. Daha sonra aşağıdaki resimdeki gibi Orchestration a ilgili shape leri ekliyoruz
  4. orc2

  5. Ş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.
    1. Orchestration View dan Messages a sağ click ve New Message seçilir.
    2. Bu mesajın Identifier özelliğini msg_File yapalım. Message Type özelliğini ise Schemas ın altından sqlbinding.data olarak seçelim.
    3. Orchestration View dan Messages a sağ click ve New Message seçilir.
    4. 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.
    5. Orchestration View dan Messages a sağ click ve New Message seçilir.
    6. 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.
  6. Herşey tamam gibiyse ekran aşağıdaki resimdeki gibi görülecektir;
  7. orc3

  8. Şimdi orchestrationa eklediğimiz shapelerin ayarlarını yapalım:
    1. İ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.
    2. Message özelliği ise msg_File olarak seçilir. Name özelliği ise Rcv_File yapılır.
    3. orc4

    4. 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.
    5. orc7

    6. İlk Send sharepi seçilir. Message özelliği msg_SQLRequest olarak seçilir. Name özelliği ise Snd_SQLRequest yapılır.
    7. İkinci Receive sharepi seçilir. Message özelliği msg_SQLResponse olarak seçilir. Name özelliği ise Rcv_SQLResponse yapılır.
    8. İ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.
  9. 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.
  10. Şimdi ilk portumuzu dosya okumak ve ikinci portumuzu da dosya yazmak için tanımlayalım.
    1. New Configured Port a tıkladıktan sonra karşımıza gelen ekrandan Next butonuna tıklıyoruz.
    2. İsim verme ekranında dilerseniz portunuza isim verebilirsiniz. Daha sonra Next ile bir sonraki ekrana geçiyoruz.
    3. Select a Port Type ekranında hiçbir şey yapmamıza gerek yok. Next deyip geçiyoruz.
    4. İ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.
    5. orc9

    6. İkinci tanımlayacağımız portun ayarları da bu şekilde olucak. Fakat bu portdan dosya gönderme işlemi yapacağız.
    7. New Configured Port a tıkladıktan sonra karşımıza gelen ekrandan Next butonuna tıklıyoruz.
    8. İsim verme ekranında dilerseniz portunuza isim verebilirsiniz. Daha sonra Next ile bir sonraki ekrana geçiyoruz.
    9. Select a Port Type ekranında hiçbir şey yapmamıza gerek yok. Next deyip geçiyoruz.
    10. 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.
    11. orch1

  11. 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.
    1. New Configured Port a tıkladıktan sonra karşımıza gelen ekrandan Next butonuna tıklıyoruz.
    2. İsim verme ekranında dilerseniz portunuza isim verebilirsiniz. Daha sonra Next ile bir sonraki ekrana geçiyoruz.
    3. Burada Communication Pattern olarak Request-Response seçilir ve Next ile devam edilir.
    4. Port direction dan I’ll be sending a request and receiving a response seçilir.
    5. Port Binding den Specify Later seçilir.
  12. 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.
  13. orch2

  14. 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: , , , , , , ,
Posted in BizTalk | No Comments »

Biztalk 2009 : SQLBinding – 3 – Mapping

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 :)

  1. 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.
  2. orc11

  3. Açılan btm dosyasında, Open Source Schema ya tıklayarak Schemas -> sqlbinding.data yı yani kaynak olan dosya şemamızı seçiyoruz.
  4. 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.
  5. Ş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.
  6. orc13

Bir sonraki makale; Orchestration :)

Tags: , , , , , , ,
Posted in BizTalk | No Comments »

Biztalk 2009 : SQLBinding – 1

Eylül 3rd, 2009

Aşağıdaki hazırladığım, WCF-Custom SqlAdapter Bindingi ile ilgili ufak bir örnek bulabilirsiniz;

  1. Bu örnek de xml dosyasında bulunan datalarımızı, bu datalara uygun olarak hazırlanmış olan bir sql server da bir tabloya kaydını gerçekleştireceğiz. Bunun için ilk önce aşağıdaki şekildeki gibi bir sqlbinding isminde bir database oluşturuyorum.
  2. 1

  3. Oluşturduğum tabloya yeni bir tablo ekliyoruz.
  4. 2

  5. Tablo elemanlarını aşağıdaki şekildeki gibi oluşturuyoruz. Buradaki ID alan primary key ve inremental olarak artıyor. Diğer alanlar varchar(50).
  6. 3

  7. Daha sonra visual studio da yeni bir biztalk server 2009 projesi oluşturuyoruz. Ben burada da proje ismine sqlbinding dedim :) Oluşan proje üzerine sağ tıklayıp, Add, Add Generated Items… yolunu izliyoruz.
  8. 4

  9. Generated Schema Files alanından ConsumeAdapterService ı seçip Add butonuna tıklıyoruz.
  10. 6

  11. Select a binding: kısmından sqlBinding seçip Configure… butonuna tıklıyoruz.
  12. 7

  13. Configure Adapter penceresinde, security ayarları tabında, Client credential type Windows seçilir. Eğer sql connection bilgileriniz sql authentication gerektiriyorsa, bu ekranda username, SSO kullanıyorsanız SSO seçebilirsiniz.
  14. 8

  15. URI Properties ekranında bağlantı ayarları yapılır;
    Burada bulunan,

    InitialCatalog : bağlanacağımız db nin ismi (ben ilk olarak db oluştururken ismini sqlbinding vermiştim)
    InstanceName : bağlanacağımız sql serverın istance ismi (bu örnekde benim bir instanceım yok o yüzden boş geçiyorum. Eğer SQLExpress kullanıyorsanız, bu kısma SQLEXPRESS diye instance ismini belirtmeniz gerekir.)
    Server : sql serverın bulunduğu server veya pc. IP veya DNS olabilir. Ben local kullandığım için (.) deyip geçtim.

  16. 9

  17. Ayarları yaptıktan sonra Connect butonuna tıklıyoruz. Bir sorun yok ise aşağıdaki reismdeki gibi Procedures, Tables, vs.. şeklinde sql kategorilerinin gelmesi gerekir.
    Eğer işlemimiz bir procedür üzerinden ilerliyecekse buradan Procedures seçilebilir. Fakat biz sadece ekleme işlemi yapacağımız için Tables tabı seçilir. Operations kısmından ise Ekleme yapacağımız için Insert seçilir ve Add butonuna tıklanır.

    Filename Prefix kısmından oluşacak olan schemalar için (karışıklığı önlemek için) bir ön isim verebilirsiniz. Bu işlem de yapıldıktan sonra Ok butonuna tıklanır ve Biztalk bizim için schemaları otomatik olarak üretir :)

  18. 10

  19. SQL şemamızı oluşturduktan sonra sıra XML dosyamızı ve şemasını oluşturmaya geldi. Bunun için aşağıdaki resimdeki gibi, database deki alanlarıma uygun(ki uygun olmasına gerek yok:)) bir XML dosyası oluşturdum. Burada dikkat etmeniz gereken en tepede mutlaka bir root node olması gerekir. Yani ana seviyede çoklu kayıt olamıyor.
  20. 11

  21. Şimdi sıra hazırladığımı XML dosyasının şemasını oluşturmaya geldi. Bunun için yine sağ click -> Add Generated Items a gelinir. Generate Schemas seçilir ve Add butonuna tıklanır.
  22. 12

  23. Document Type kısmından Well-Formed XML, Input file olarak da oluşturduğumuz xml dosyası seçilir ve OK butonuna tıklanır.
  24. 13

bir sonraki postumdan yazı devam edicek…

Tags: , , , , , , , , ,
Posted in Bilgisayar | No Comments »

Biztalk : WCF-Custom SQLBinding Address Format

Haziran 22nd, 2009

yeah if you couldnt find the address format of sqlbinding like me, search and find me :)

the binding format :

mssql://ServerName/InstanceName/DatabaseName

if you are working with no instance, use like that;

mssql://ServerName//DatebaseName

if you are working with local and got no instance, use like below;

mssql://localhost//DatabaseName

Although, when you enter wrong uri, you ll get

The Path specified in the URI was incorrect. Please refer to the documentation for additional information.

error. Then check the address again.

Tags: , , ,
Posted in BizTalk | No Comments »

BizTalk Server 2009 Sonunda Release Oldu!!

Mayıs 3rd, 2009

Şurdan da detaylarını alacağınız üzere Biztalk Server 2009 bugün itibariyle release olmuş oldu.

Aşağıda en mühim yeni feature ları bulabilirsiniz ya da buradan yazının orjinaline ulaşabilirsiniz :)

Top New Features

BizTalk Server 2009 introduces enhancements and new featured in four main areas:

* Updated Platform Support

* Support for Visual Studio 2008 SP1

* Support for .NET Framework 3.5 SP1

* Support for Windows Server 2008

* Virtualization support with Hyper-V

* Support for SQL Server 2008

* Developer & Team Productivity

* New Application Lifecycle Management (ALM) experience – with Support for TFS – integrated source control, bug tracking, unit testing, MSBuild automation

* Enhanced Developer Productivity with Visual Studio project system updates & Map Debugging

* SOA and Web Services

* ESB Guidance 2.0

* New UDDI v3 Web Services Registry

* New and enhanced LOB adapters (Oracle eBusiness Suite, SQL Server)

* Enhanced host systems integration (WebSphere MQ, CICS, IMS)

* Enhanced BAM support

* Business to Business Integration

* New Mobile RFID Platform

* New RFID device management and industry standards support

* Enhanced Support for EDI and AS2 Protocols and Drummond certification

* Updated SWIFT Support and SWIFTReady Financial EAI Gold certification

Tags: ,
Posted in BizTalk | No Comments »