Adapter Specific Message Attributes (ASMA) – dynamiczna konfiguracja parametrów kanałów komunikacji

Podstawową funkcją mapowań w SAP PI jest budowanie zawartości docelowego komunikatu w oparciu o dane zawarte w komunikacie źródłowym. Parametry techniczne, takie jak np. nazwa pliku, ścieżka, adres serwera, konfiguruje się zwykle w kanale komunikacji.

Czasem jednak zachodzi potrzeba dynamicznego ustawienia tych parametrów w mapowaniu – również w zależności od przesyłanych danych. Dla najprostszych przypadków (jak zmiana nazwy docelowego pliku), można skorzystać z mechanizmu Variable Substitution, jednak o wiele większe możliwości daje funkcja ASMA (Adapter-Specific Message Attributes).

Dla większości adapterów istnieje zestaw atrybutów kanału komunikacji, który można zdefiniować w nagłówku komunikatu PI korzystając z obiektów konfiguracji dynamicznej (Dynamic Configuration). Dla poszczególnych atrybutów można włączyć konfigurację dynamiczną z ASMA w zakładce Advanced ustawień kanału komunikacji:

Adapter Specific Message Attributes (ASMA)

Adapter Specific Message Attributes (ASMA)

Konfiguracja dynamiczna ASMA w funkcjach użytkownika Java (UDF)

Atrybuty komunikatu w konfiguracji dynamicznej można ustawić za pomocą własnych funkcji użytkownika – UDF (User-Defined Functions). Każda definiowana przez użytkownika funkcja standardowo otrzymuje obiekt Container. Za pomocą jego metod, można pobrać obiekt konfiguracji dynamicznej:

[codesyntax lang=”java”]

DynamicConfiguration conf = (DynamicConfiguration) container
 .getTransformationParameters()
 .get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);

[/codesyntax]

Kolejnym krokiem jest utworzenie par klucz – wartość dla każdego konfigurowanego atrybutu. Należy przy tym pamiętać o przestrzeni nazw właściwej dla danego typu kanału komunikacji. Przykładowe atrybuty dostępne dla wybranych kanałów komunikacji:


 

File Adapter (pliki) – przestrzeń nazw: http://sap.com/xi/XI/System/File

  • FileName – nazwa pliku
  • Directory – katalog
  • TargetTempFileName – nazwa tymczasowego pliku (jeśli jest używany)

 

Mail Adapter (e-mail) – przestrzeń nazw: http://sap.com/xi/XI/System/Mail

  • THeaderFROM – nadawca
  • THeaderTO – odbiorca
  • THeaderCC – odbiorca kopii (DW)
  • THeaderBCC – odbiorca ukrytej kopii (UDW)
  • THeaderSUBJECT – tytuł e-maila

 

JMS Adapter – przestrzeń nazw: http://sap.com/xi/XI/System/JMS

  • DCJMSCorrelationID – Correlation ID
  • DCJMSMessageID – Message ID
  • DCJMSMessageQueue – Message Queue

HTTP Adapter – przestrzeń nazw: http://sap.com/xi/XI/System/HTTP

  • URL

Znając nazwę klucza i przestrzeń nazw, klucz tworzymy następującą metodą:

[codesyntax lang=”java”]

DynamicConfigurationKey key = DynamicConfigurationKey.create(
 “http://sap.com/xi/XI/System/File”,
 “FileName”);

[/codesyntax]

Pozostaje przypisanie pary klucz – wartość do konfiguracji dynamicznej. W poniższym przykładzie funkcja UDF ustawia atrybut – nazwę pliku – w oparciu o wejściowy ciąg znaków (parametr filename):

Adapter Specific Message Attributes (ASMA)

Adapter Specific Message Attributes (ASMA)

Listę atrybutów, jakie można ustawić dynamicznie dla danego kanału komunikacji, można znaleźć na stronie Using Adapter-Specific Message Attributes in the Message Header, przechodząc do interesującego nas typu kanału komunikacji, w sekcji Define Adapter-Specific Message Attributes.

Konfiguracja dynamiczna w mapowaniach XSLT

Alternatywą dla funkcji Java (UDF) w celu ustawienia atrubutów kanału komunikacji w konfiguracji dynamicznej, są mapowania XSLT. Mechanizm ten jest opisany w pomocy SAP na stronie XSLT Mapping of Adapter-Specific Message Attributes.

Zastosowanie

Dzięki temu, że konfiguracja dynamiczna jest dostępna z poziomu mapowania, otwierają się szerokie możliwości programowego ustawienia atrybutów kanału komunikacji. Możliwe zastosowania nie ograniczają się do przykładów:

  • ustawienie docelowego katalogu w zależności od numeru zakładu, składu SAP
  • wpisanie numeru zamówienia, faktury lub klienta w nazwie pliku
  • ustawienie odbiorcy e-maila wg adresu w komunikacie źródłowym
  • ustawienie tematu e-maila w zależności od zawartości komunikatu
  • dynamiczna budowa URL docelowej usługi HTTP