Blogs

SAP CPI’da XSLT Mapping ile Karmaşık Dönüşümleri Nasıl Çözersiniz?

SAP entegrasyon projelerinde veri dönüşümü, başarılı bir akışın belkemiğidir. Çoğu zaman Graphical Mapping veya Message Mapping ile işleri halletmek mümkün olsa da bazı senaryolar bu araçların sınırlarını zorlar. Karmaşık iç içe yapılar, koşullu mantık gerektiren çıktılar veya tek bir mesajdan birden fazla farklı format üretme ihtiyacı ortaya çıktığında devreye XSLT Mapping girer. Bu yazıda XSLT'nin SAP CPI'da hangi problemleri çözdüğünü, nasıl yapılandırıldığını ve gerçek hayat örnekleriyle nasıl uygulandığını inceleyeceğiz. Yazının sonunda hangi senaryoda hangi yaklaşımı seçeceğinizi netleştirmiş olacaksınız.

XSLT Nedir ve SAP CPI’da Neden Önemlidir?

XSLT (Extensible Stylesheet Language Transformations), W3C tarafından standartlaştırılmış bir XML dönüşüm dilidir. Temel görevi basittir: Bir XML belgesini alır, içindeki verileri farklı bir yapıya, farklı bir formata veya farklı bir hiyerarşiye dönüştürür. SAP CPI bünyesinde XSLT 1.0 ve 2.0 sürümleri desteklenir; bu da geliştiricilere XPath ifadeleri, koşullu yapılar ve döngüler aracılığıyla geniş bir manevra alanı sağlar.SAP CPI'da XSLT'yi diğer mapping seçeneklerinden ayıran en önemli özellik, kod tabanlı esnekliğidir. Graphical Mapping görsel olarak hızlı sonuç verirken karmaşık mantığı modellemekte zorlanır. Message Mapping daha güçlüdür ama yine de bazı senaryolarda kapasitesi yetmez. XSLT ise tüm dönüşüm kuralını tek bir dosyada toplar, sürüm kontrolüne kolayca eklenir ve farklı iFlow'lar arasında yeniden kullanılabilir. 
Şekil 1: XSLT, kaynak XML'i SAP CPI içinde işleyerek hedef sistemin beklediği formata dönüştürür.
Şekil 1: XSLT, kaynak XML'i SAP CPI içinde işleyerek hedef sistemin beklediği formata dönüştürür.

SAP CPI Mapping Türleri Arasında Doğru Seçim

Bir SAP entegrasyon projesinde "hangi mapping yöntemini kullanmalıyım?" sorusu sıklıkla karşımıza çıkar. Her birinin güçlü ve zayıf yönleri vardır; doğru tercih projenin uzun vadeli sürdürülebilirliğini doğrudan etkiler. SAP Integration Suite’de Content Modifier ile gerçekleştirilen mesaj dönüşümlerini daha önce ele aldık; şimdi XSLT’nin bu ekosistemde nerede konumlandığını anlayalım.
Kriter
Graphical Mapping
Message Mapping
XSLT Mapping
Kullanım Kolaylığı

Çok Kolay

Orta

Teknik Bilgi Gerektirir

Karmaşık Mantık

Sınırlı

Orta

Tam Esneklik

Koşullu Yapılar

Zayıf

Orta

xsl:choose ile Güçlü

Döngü & Gruplama

Zayıf

Orta

xsl:for-each & xsl:key

Yeniden Kullanılabilirlik

Düşük

Orta

xsl:template ile Yüksek

Sürüm Kontrolü

Zor

Zor

Tek .xsl Dosyası

Büyük Mesaj Performansı

Orta

Orta

10 MB+ Dikkat

 
Pratik bir kural koymak gerekirse: Eğer dönüşüm 5–10 alanın doğrudan eşlenmesinden ibaretse Graphical Mapping yeterlidir. Standart fonksiyonlarla halledebileceğiniz orta seviye dönüşümler için Message Mapping iyi bir tercihtir. Ama döngü içinde koşul, koşul içinde döngü, çok katmanlı çıktı yapısı veya yeniden kullanılabilir mantık varsa XSLT en doğru seçimdir.

XSLT ile SAP CPI XSLT Mapping’in Çözdüğü 6 Temel Senaryo

XSLT’nin gerçek değeri, tek tek özelliklerinde değil, bir araya geldiğinde sunduğu çözüm yelpazesinde gizlidir. Aşağıda SAP CPI projelerinde en sık karşılaşılan altı tipik senaryoyu ve XSLT’nin bunları nasıl çözdüğünü inceleyeceğiz. 
Şekil 3 XSLT'nin SAP CPI'da çözüm sunduğu altı temel senaryo
Şekil 3 XSLT'nin SAP CPI'da çözüm sunduğu altı temel senaryo

1. Yapısal Dönüşüm: Düz Yapıyı Hiyerarşik Yapıya Çevirmek

Kaynak sistemden gelen mesaj genellikle düz bir liste hâlindedir; oysa hedef sistem hiyerarşik bir yapı bekler. Örneğin bir CRM sisteminden gelen müşteri kayıtlarının her birinin altında ayrı sipariş bloklarının olması gerekebilir. XSLT, xsl:for-each ve xsl:key yapılarıyla bu tür dönüşümleri rahatlıkla halleder. Müşteri ID’sine göre siparişleri gruplayıp her müşterinin altına kendi siparişlerini yerleştirir.

2. Koşullu Mantık: Veriye Göre Farklı Çıktılar

Bazı durumlarda aynı kaynak mesaj farklı koşullara göre farklı çıktılar üretmelidir. Örneğin bir sipariş mesajı tutarına göre farklı onay süreçlerine gitmeli ya da müşteri tipine göre farklı vergi alanları içermelidir. XSLT’nin xsl:choose yapısı bu kuralları okunaklı bir biçimde modeller:
XML
<xsl:choose>
  <xsl:when test="OrderTotal > 10000">
    <ApprovalRequired>true</ApprovalRequired>
    <ApprovalLevel>Manager</ApprovalLevel>
  </xsl:when>
  <xsl:when test="OrderTotal > 1000">
    <ApprovalRequired>true</ApprovalRequired>
    <ApprovalLevel>Supervisor</ApprovalLevel>
  </xsl:when>
  <xsl:otherwise>
    <ApprovalRequired>false</ApprovalRequired>
  </xsl:otherwise>
</xsl:choose>

3. Toplama ve Gruplama: Verileri Özetlemek

Birden fazla satır kalemine sahip bir sipariş mesajının toplam tutarını hesaplamak ya da kategoriye göre alt toplam çıkarmak yaygın bir ihtiyaçtır. XSLT’nin sum() ve count() gibi yerleşik fonksiyonları bu işlemleri tek satırla halleder:
XML
<TotalAmount>
  <xsl:value-of select="sum(Order/Items/Item/Price)"/>
</TotalAmount>
<ItemCount>
  <xsl:value-of select="count(Order/Items/Item)"/>
</ItemCount>

4. Birleştirme: Birden Fazla Mesajı Tek Çıktıda Toplamak

Mikroservis mimarilerinde sıkça karşılaşılan bir senaryo vardır: Müşteri bilgisi bir sistemden, sipariş bilgisi başka bir sistemden, stok bilgisi üçüncü bir sistemden gelir. XSLT, bu farklı kaynaklı XML mesajlarını tek bir çıktı dosyasında birleştirir. Bunu Content Modifier adımıyla birlikte kullanmak, farklı mesajları property’ler üzerinden alıp tek bir hedef yapıda birleştirmeyi son derece kolay kılar.

5. Temizleme: Gereksiz Veriyi Kaldırmak

Hedef sistemler genellikle temiz mesajlar ister. Boş alanlar, null değerler ya da kullanılmayan node’lar sorunlara yol açar. XSLT ile sadece dolu alanları çıktıya almak için basit bir koşul yeterlidir:
XML
<xsl:if test="normalize-space(CustomerEmail) != ''">
  <Email><xsl:value-of select="CustomerEmail"/></Email>
</xsl:if>

6. Yeniden Kullanım: Şablonları Birden Fazla iFlow’da Kullanmak

XSLT’nin en güçlü yanlarından biri xsl:template ve xsl:call-template yapılarıdır. Tarih formatı dönüştürme, adres birleştirme veya para birimi formatlama gibi sık kullanılan işlemleri tek şablon olarak yazıp tüm iFlow’larınızda çağırabilirsiniz. Bu yaklaşım hem geliştirme süresini kısaltır hem de bakım maliyetini düşürür.
İpucu: XSLT şablonlarınızı SAP CPI’nın “Resources” bölümünde merkezi olarak saklayın. Bir değişiklik yaptığınızda tüm bağlı iFlow’lar otomatik güncellenir.

SAP CPI iFlow’da XSLT Mapping’i Yapılandırmak

XSLT’yi bir iFlow’a entegre etmek düşündüğünüzden çok daha basittir. Adımlar şunlardır: XSLT dosyasını hazırlayarak iFlow’a Message Transformer → XSLT Mapping adımını eklemek, dosyayı Resources’a yüklemek ve XSLT sürümünü (1.0 veya 2.0) doğru seçmek. 
MDP Group olarak SAP CPI projelerinde XSLT yapılandırmasında en çok dikkat ettiğimiz nokta, XSLT versiyonunun iFlow yapılandırmasıyla birebir eşleşmesidir. Bu basit hata, saatlerce süren hata ayıklama süreçlerine yol açabilir. Groovy Scripting ile karşılaştırıldığında, XSLT XML odaklı dönüşümlerde daha az kod satırıyla aynı sonucu verir ve bakımı daha kolaydır.

Sık Karşılaşılan Hatalar ve Çözümleri

Namespace Tanımları Eksik

En yaygın hata, XPath ifadelerinin element bulamamasıdır. Sebep neredeyse her zaman aynıdır: Kaynak XML’de tanımlı namespace’ler XSLT dosyasında belirtilmemiştir. XSLT dosyasının kök elementinde (xsl:stylesheet) tüm namespace’leri eksiksiz tanımlayın. Ardından XPath ifadelerinizde bu önekleri kullanmayı unutmayın.

Sürüm Uyumsuzluğu

XSLT 2.0’a özel fonksiyonları (örneğin tokenize, format-date) XSLT 1.0 modunda kullanmak çalışma zamanı hatasına yol açar. iFlow yapılandırmasında doğru sürümü seçin; eski uyumluluk gereken yerlerde 1.0 alternatifleri olan substring-before ve substring-after tercih edin.

Performans Sorunları

Büyük mesajlarda xsl:for-each döngüsü içinde tekrar aynı XPath sorgusunu çalıştırmak ciddi yavaşlamalara neden olur. Sık kullanılan değerleri xsl:variable ile önbelleğe alın. Gruplama ve arama işlemlerinde xsl:key kullanın; bu teknik performansı dramatik biçimde artırır.
Dikkat: 10 MB’ı aşan mesajlarda XSLT yerine Streaming destekli bir yaklaşım veya Java DOM tabanlı script tercih edin. Bu sınırlama, mimari kararlarınızı şekillendirmeli; bellek tüketimini izlemeyi ihmal etmeyin.

XSLT Mapping’de Uygulamanız Gereken İyi Pratikler

  • Yorumlama alışkanlığı edinin: Karmaşık koşulları ve döngüleri açıklayan XML yorumları (<!-- ... -->) ekleyin.
  • Şablonları parçalara ayırın: Her mantıksal birim için ayrı bir named template yazın.
  • Yerel ortamda test edin: Oxygen XML, Saxon veya VS Code XML eklentisiyle deploy öncesi test yapın.
  • Versiyon kontrolü kullanın: XSLT dosyalarınızı Git’te tutun ve değişiklik geçmişini takip edin.
  • Hata yönetimi ekleyin: Beklenmedik veriler için fallback değerleri ve hata mesajları tanımlayın.

SAP CPI Entegrasyonlarınızı Bir Adım İleriye Taşıyın

SAP CPI XSLT Mapping, entegrasyon mimarinizin sürdürülebilirliğini artıran stratejik bir tercihtir. Doğru kullanıldığında geliştirme süresini kısaltır, hata oranlarını düşürür ve bakım maliyetlerini azaltır. SAP CPI JMS Retry Mekanizması gibi dayanıklılık odaklı konularla birleştirildiğinde, kurumsal düzeyde güvenilir bir entegrasyon altyapısı elde edersiniz.SAP Integration Suite üzerinde XSLT Mapping dahil tüm dönüşüm ihtiyaçlarınız için, mevcut entegrasyonlarınızı modernleştirmek veya sıfırdan yeni bir mimari kurmak istediğinizde uzman danışmanlık desteği alabilirsiniz. Ekibimiz, karmaşık dönüşüm senaryolarında doğrudan deneyim sahibidir.

Sık Sorulan Sorular

SAP CPI’da XSLT 1.0 ile 2.0 arasındaki fark nedir?

XSLT 2.0, tokenize() ve format-date() gibi güçlü fonksiyonlar ve çoklu belge çıktısı desteği sunar. XSLT 1.0 ise eski sistemler ve uyumluluk senaryoları için hâlâ gereklidir. SAP CPI her ikisini de destekler; iFlow yapılandırmasında doğru sürümü seçmek kritiktir, aksi halde çalışma zamanı hataları alınır.

XSLT dosyası SAP CPI’a nasıl yüklenir?

iFlow tasarım ekranında Resources sekmesine gidip Add butonuyla .xsl veya .xslt uzantılı dosyanızı yükleyin. Ardından XSLT Mapping adımının yapılandırmasında bu dosyayı seçin. Resources’a eklemek, farklı iFlow’lar arasında merkezi yönetim imkânı da sağlar.

Graphical Mapping yerine ne zaman kesinlikle XSLT tercih edilmelidir?

Döngü içinde koşul, koşul içinde döngü gibi iç içe mantık; çok katmanlı XML hiyerarşisi üretimi; birden fazla kaynak mesajın tek çıktıda birleştirilmesi ve gruplama/toplama gerektiren senaryolarda XSLT üstündür. Bu karmaşıklık seviyesinde Graphical Mapping’in görsel tasarımı yönetilemez hâle gelir.

XSLT ile büyük mesajlarda performansı nasıl iyileştiririm?

Tekrar kullanılan değerleri xsl:variable ile önbelleğe alın, gruplama işlemlerinde xsl:key kullanın ve 10 MB üzeri mesajlar için Streaming destekli alternatif yaklaşımları değerlendirin. Gereksiz node kopyalamaktan kaçının ve XPath ifadelerini mümkün olduğunca spesifik tutun.

Sonuç

SAP CPI’da XSLT Mapping, standart araçların sınırlarına ulaştığınızda devreye giren güçlü bir çözümdür. Yapısal dönüşümlerden koşullu mantığa, gruplamalardan birleştirme işlemlerine kadar geniş bir yelpazede esneklik sağlar. Doğru pratiklerle uygulandığında entegrasyon projelerinizin kalitesini önemli ölçüde artırır.Bir sonraki adım olarak, XSLT bilginizi SAP CPI’nın diğer ileri özellikleriyle birleştirmenizi öneririz: Event-Driven Entegrasyon ile reaktif mimari kurmak, Hata Yönetimi (Exception Subprocess) ile dayanıklı akışlar oluşturmak ve Monitoring araçlarıyla canlı ortamı izlemek. Bu konulara dair detaylı rehberlerimizi blog sayfamızda bulabilirsiniz.

Referanslar

W3C XSLT Specification SAP Integration Suite’de Content Modifier ile Mesaj Dönüşümü SAP Integration Suite’de Groovy Scripting SAP CPI’de JMS ile Retry Mekanizması SAP Event-Driven Entegrasyon Rehberi Oxygen XML Editor

Benzer
Bloglar

Mailiniz başarıyla gönderilmiştir en kısa sürede sizinle iletişime geçilecektir.

Mesajınız ulaştırılamadı! Lütfen daha sonra tekrar deneyin.