Etiket: BTS

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 SAP Yüklemesi

Kasım 22nd, 2009

Biztalk Server için SAP RFC Libraries Yüklemesi;

  1. SAP Front End Installer ekranında Next butonuna tıklanır,
  2. SAP_GUI_Installation_1

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

  5. Yol ve Kurulum için isim veriyoruz ve Next butonuna tıklıyoruz,
  6. SAP_GUI_Installation_4

  7. Finish butonu ile işlemimizi bitiriyoruz.
  8. SAP_GUI_Installation_5

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

Biztalk Server için Oracle Client Patch Yüklemesi

Kasım 22nd, 2009

Biztalk Server için Oracle Client üzerine Patch geçilmesi;

  1. Welcome ekranından Next butonuna tıklıyoruz,
  2. Oracle_Patch_Installation_1

  3. 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.
  4. Oracle_Patch_Installation_3

  5. Next butonuna tıklıyoruz,
  6. Oracle_Patch_Installation_4

  7. 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.
  8. Oracle_Patch_Installation_5

  9. OracleMTSRecoveryService ini servisler ekranından stop edip, Retry butonuna tıklıyoruz,
  10. Oracle_Patch_Installation_6

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

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