Etiket: BTS 2009
Haziran 2nd, 2010
Biztalk Server schemaları root node name + namespace mantığıyla ayırt eder. Eğer İlk node un ismi ve namespace in birleşimi aynı olan birden fazla şemanız mevcutsa bu hatayı alırsınız. Yani Biztalk bu yapıya sahip bir mesaj aldığında hangi şemayı kullanacağını bilemez/karar veremez.
üç tane çözümü mevcuttur (benim bildiğim
)
- Aynı yapıya sahip iki şema zaten olmamalıysa, yani yanlışlıkla olmuşsa, gereksiz şemayı silip yeniden deploy edersiniz.
- Yanlışlık yoksa ve şemanın ikisini de kullanmanız gerekli ise;
- Source mesajın şemasını değiştirebiliyorsanız, yani xml dosyasını üreten programda değişiklik yapabilirseniz, programdan xmlns yi veya root node un ismini değiştirmeniz yeterli olacaktır.c# ile XMLDocument içindeki namespace i (xmlns) aşağıdaki gibi değiştirebilirsiniz;
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(“dosyaadi veya var olan XmlDocument kullanılabilir”);
XmlAttribute attributeNode = xmlDocument.CreateAttribute(“xmlns”, ”", “http://blablabla”);
xmlDocument.DocumentElement.SetAttributeNode(attri buteNode);
- Yukarıdaki çözüm işinize yaramazsa ki kaynak üreten program elinizde değil ise yaramaz. O zaman Biztalk tarafında aşağıdaki özelliklere sahip bir Pipeline üretiyoruz. Daha sonra Receive Location’ınımız pipelinını, yeni yaptığımız pipeline ile değiştiriyoruz. Böylece Biztalk Server, yaratılan pipeline sayesinde hangi schemanın kullanılacağına karar verebilir.Yeni yaptığımız pipeline a bir adet XML Disassembler eklenir.
XML Disassembler ın Allow unrecognized messages özelliği true yapılır. Document schemas dan kullanılmak istenilen schema seçilir.

Daha sonra proje deploy edilir ve kullanılacak olan receive locationdan Receive Pipeline olarak yeni yarattığımız pipeline seçilir.

Test ettiğinizde problemin çözülmüş olduğunu görürsünüz.
Tags: BizTalk, Biztalk Error, Biztalk Pipeline, BizTalk Server, Biztalk Server 2009, BTS, BTS 2009, Disassemble, Document Schema, Error, Mutluluk, NameSpace, Pipeline, Receive Pipeline, Schema, xml, XML Disassembler, XmlDocument, xmlns
Posted in BizTalk | No Comments »
Ş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 | 2 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 »
Temmuz 12th, 2009
This article shows; How to create a flat file schema in Biztalk Server 2009,
My txt file’s content is like that;
07.07.2009—11:06:56— TURKIYE — KOCAELI— GEBZE— 123123 — 100 — KG
For now, one line will be enough,
- First of all, Open Visual Studio, and Create a BTS Project
- Right Click -> Add -> New Item

- Select Flat File Schema Wizard and click Add

- Click on Next

- Click on Browse,

- Select Directory, Select File and Click on Open

- Type Record Name, Type Target namespace, select Code page (if you haven’t got any idea, let them as default) and click on Next

- Select the line and Click on Next,

- For this flat file types click By delimiter symbol, if file has relative positions (means; position of node never changes) check relative positions. Then click on Next

- Type Child delimiter. in this file example, i use “—” as delimiter. Click on Next

- Type element names, select Data Types and Click on Next

- Now, on Biztalk Flat File Schema Wizard screen, you can see Schema View. Click on finish.

- Your schema is ready
Tags: BizTalk, BTS 2009, Flat File, Schema, Schema Generator
Posted in BizTalk | No Comments »