ISO 20022: UML -> XML

Představte si, že chcete postavit dům.

  • Jen XML: Někdo vám dá seznam všech cihel, dřeva, drátů, trubek atd. a řekne „postav dům“. Musíte si to sami nějak poskládat a domyslet si, co je zeď, co střecha, co okno. Výsledné domy se mohou hodně lišit, i když používají stejné materiály.
  • ISO 20022 způsob (UML -> XML):
    1. Nejprve vám dá architekt detailní návrh a plány domu (to je UML model). Tyto plány ukazují místnosti, jejich uspořádání, jak se napojuje elektřina na světla, kde jsou dveře a okna. Je to diagram, který jasně říká, co dům je a jak funguje, ale ještě to není fyzický dům.
    2. Teprve pak přijde stavař a podle těchto přesných plánů (UML) postaví fyzický dům z cihel, dřeva a drátů (to je XML). Každý, kdo uvidí plán, bude vědět, co má stavět, a každý dům postavený podle stejného plánu bude mít stejnou základní strukturu a funkce.

Princip ISO 20022 UML modelování:

ISO 20022 začíná s abstraktními stavebními kameny (tzv. „Building Blocks“) a jejich vzájemnými vztahy, které popisují finanční koncepty. Tyto stavební kameny jsou pak kombinovány do „obchodních komponent“, a z nich se tvoří „zprávy“. Vše se děje v UML.

Příklad: Koncept „Částky“ (Amount)

  1. UML model (Abstraktní definice):
    • V UML byste měli třídu AmountAndCurrency, která reprezentuje jakoukoli peněžní hodnotu.
    • Tato třída by měla dva atributy:
      • Value: Typ Decimal (číslo s desetinnou čárkou, např. 12500.50)
      • Currency: Typ ActiveOrHistoricCurrencyCode (např. „EUR“, „CZK“)
    • Tento model říká: „Kdykoli mluvíme o peněžní částce, myslíme tím vždy kombinaci číselné hodnoty a kódu měny.“ Je to univerzální definice, nezávislá na tom, zda je to pro platbu, zůstatek na účtu, nebo cenu cenného papíru.

    (Představte si to jako malý box v diagramu s názvem „AmountAndCurrency“ a dvěma popisky uvnitř: „Value“ a „Currency“)

  2. Překlad do XML (Konkrétní implementace):
    • Když se pak z tohoto UML modelu generuje XML schéma (XSD), UML třída AmountAndCurrency se typicky přeloží do XML elementu nebo komplexního typu.
    • Atributy Value a Currency se stanou buď XML elementy uvnitř, nebo atributy hlavního XML elementu, v závislosti na konkrétních pravidlech překladu a konvencích.

    Jak to vypadá v XML v různých kontextech (pacs.008 a camt.053):

    • V pacs.008 (příkaz k úhradě):
      • UML model AmountAndCurrency se použije pro instruovanou částku (InstdAmt):

      XML

      <Amt>
        <InstdAmt Ccy="EUR">12500.50</InstdAmt>
      </Amt>
      
      • Zde je InstdAmt element, který reprezentuje částku (číselná hodnota 12500.50) a měnu (atribut Ccy="EUR"). Přímý překlad z UML modelu.
    • V camt.053 (výpis z účtu):
      • Stejný UML model AmountAndCurrency se použije pro zůstatek na účtu (Amt):

      XML

      <Bal>
        <Amt Ccy="CZK">150000.00</Amt>
        <CdtDbtInd>CRDT</CdtDbtInd>
        <Tp>
          <CdOrPrtry>
            <Cd>CLBD</Cd>
          </CdOrPrtry>
        </Tp>
        <Dt>
          <Dt>2024-03-14</Dt>
        </Dt>
      </Bal>
      
      • Zde je Amt element, který reprezentuje částku (číselná hodnota 150000.00) a měnu (atribut Ccy="CZK").

Co to objasňuje?

  1. Jednotná sémantika: Ať už se AmountAndCurrency objeví kdekoli v jakékoli ISO 20022 zprávě, vždy znamená to samé – číselnou hodnotu a její měnu. Není potřeba hádat, co element <Amt> v daném kontextu znamená. To je zajištěno tím, že vychází z jednoho centrálního UML modelu.
  2. Znovupoužitelnost: Koncept AmountAndCurrency (UML třída) se v UML modelu definuje jen jednou. Pak se „znovu použije“ (re-uses) v mnoha různých typech zpráv (platby, výpisy, cenné papíry), kde je potřeba vyjádřit částku.
  3. Flexibilita syntaxe: I kdybychom se v budoucnu rozhodli přejít z XML na JSON, nemuseli bychom měnit základní UML model. Jen by se změnil proces „překladu“ z UML do JSON syntaxe. Základní definice toho, co se předává, zůstává stejná.

„Vše se děje v UML“ znamená:

Že kompletní definice finančních obchodních konceptů, jejich atributů, datových typů a vzájemných vztahů je primárně vytvořena a spravována pomocí diagramů a modelovacích prvků UML. XML schémata (ty .xsd soubory, které vidíte) jsou pak automaticky generována z těchto UML modelů. Finální XML zpráva je pak jen „serializací“ dat podle tohoto XML schématu.

Jinými slovy:

  • Lidský faktor a analýza: Prvotní práce analytiků a odborníků z finančního sektoru spočívá v definování a vizualizaci těchto konceptů v UML.
  • Centrální zdroj pravdy: UML model je „jediný zdroj pravdy“ (Single Source of Truth) pro veškerou sémantiku a strukturu ISO 20022. XML schémata jsou jeho odvozeniny.

Příklad UML pro ISO 20022: Koncept „Party“ (Účastník transakce)

Vezměme si jeden ze základních „stavebních kamenů“ v ISO 20022 – koncept „Party“ (čili jakákoli zúčastněná strana v transakci, ať už fyzická osoba nebo právnická entita).

Jak to vypadá v UML (zjednodušený třídní diagram):

Fragment kódu

classDiagram
    direction LR

    class PartyIdentification {
        +Id: GenericIdentification // Identifikace (např. BIC, LEI, IBAN, jméno)
        +Name: String             // Název (např. jméno firmy, jméno osoby)
        +PostalAddress: PostalAddress // Adresa
        +Country: CountryCode     // Kód země
    }

    class PostalAddress {
        +StreetName: String
        +BuildingNumber: String
        +PostCode: String
        +TownName: String
        +Country: CountryCode
    }

    class GenericIdentification {
        +Id: String
        +SchmeNm: String // Název schématu identifikace
        +Issr: String    // Vydavatel (např. "SWIFT", "LEI")
    }

    class Account {
        +Id: AccountIdentification // IBAN, BBAN atd.
        +Ccy: ActiveOrHistoricCurrencyCode // Měna účtu
        +Nm: String              // Jméno účtu
    }

    class AccountIdentification {
        +IBAN: String
        +Othr: GenericIdentification // Jiná identifikace účtu
    }

    class PaymentInstruction {
        +InstructionId: String
        +PmtId: PaymentIdentification
        +Amt: AmountAndCurrency
        +Purpose: String // Účel platby
    }

    class PaymentIdentification {
        +EndToEndId: String
        +UETR: String
    }

    class AmountAndCurrency {
        +Value: Decimal
        +Currency: ActiveOrHistoricCurrencyCode
    }

    PaymentInstruction "1" *-- "1..*" PartyIdentification : +InitiatingParty / +Debtor / +Creditor
    PartyIdentification "1" *-- "0..1" PostalAddress : +hasAddress
    PartyIdentification "1" *-- "0..1" Account : +hasAccount
    Account "1" *-- "1" AccountIdentification : +identifies
    PaymentInstruction "1" *-- "1" PaymentIdentification : +identifiesPayment
    PaymentInstruction "1" *-- "1" AmountAndCurrency : +hasAmount

Vysvětlení UML diagramu a co to znamená „Vše se děje v UML“:

  1. Třídy (Classes): Každý obdélník v diagramu je „třída“, která reprezentuje koncept (např. PartyIdentification, PostalAddress, Account, PaymentInstruction). Tyto třídy jsou „stavebními kameny“ standardu.
  2. Atributy (Attributes): Seznam položek uvnitř třídy (např. +Id: GenericIdentification v PartyIdentification). To jsou vlastnosti daného konceptu. Každý atribut má svůj datový typ (např. String, Decimal, CountryCode, ActiveOrHistoricCurrencyCode, nebo odkaz na jinou třídu/komponentu).
  3. Vztahy (Relationships): Čáry mezi třídami představují, jak spolu koncepty souvisí:
    • Agregace/Kompozice (Composition/Aggregation): Plný kosočtverec (např. PaymentInstruction má (kompozice) PartyIdentification jako InitiatingParty, Debtor, Creditor). To znamená, že jedna třída „obsahuje“ nebo se „skládá“ z jiných tříd. Kardinalita (např. „1“, „1..*“, „0..1“) určuje, kolik instancí dané třídy může být součástí.
      • Například: PaymentInstruction "1" *-- "1..*" PartyIdentification : +InitiatingParty / +Debtor / +Creditor znamená, že každá platební instrukce (1) musí mít minimálně jednu (1..*) identifikaci strany, která může být Odesílatelem, Dlužníkem nebo Věřitelem.
    • Asociace (Association): Přímá čára s rolí (např. PartyIdentification PostalAddress).
  4. Datové typy (Data Types): V ISO 20022 jsou definovány komplexní datové typy (např. IBANIdentifier, BICFIIdentifier, Max35Text, ISODate). Tyto typy zajišťují jednotnost a validaci dat napříč všemi zprávami. V UML jsou reprezentovány jako typy atributů.

Jak se z tohoto UML stane XML (Velmi zjednodušený „překlad“):

  1. Třídy se stanou XML elementy nebo komplexními typy:
    • Třída PaymentInstruction se může stát kořenovým elementem XML zprávy nebo komplexním typem.
    • Třída PartyIdentification se stane XML elementem (např. <PtyId>).
  2. Atributy se stanou vnořenými XML elementy nebo atributy:
    • Atribut Name v PartyIdentification se stane <Nm>Jan Novák</Nm>.
    • Atribut Id v PartyIdentification by byl komplexnější element pro identifikaci.
    • Vztah, kde PaymentInstruction „obsahuje“ PartyIdentification (InitiatingParty, Debtor, Creditor), se v XML promítne do vnořené struktury:Vztahy definují strukturu hnízdění (nesting):
    <PaymentInstruction>
      <InitiatingParty>
        <Id>...</Id>
        <Name>...</Name>
      </InitiatingParty>
      <Debtor>
        <Id>...</Id>
        <Name>...</Name>
      </Debtor>
      <Creditor>
        <Id>...</Id>
        <Name>...</Name>
      </Creditor>
      </PaymentInstruction>
    

Proč je to tak silné a „unikátní“:

  • Jazyk pro byznys i IT: UML poskytuje most mezi finančními experty (kteří rozumí obchodním procesům) a IT architekty (kteří rozumí datovým strukturám). Všichni mluví jedním vizuálním jazykem.
  • Abstrakce před implementací: UML umožňuje definovat sémantiku (co to znamená) ještě předtím, než se rozhodne o syntaxi (jak se to zapíše). To je klíčové pro dlouhodobou stabilitu a interoperabilitu standardu.
  • Automatické generování schémat: Jakmile je UML model stabilní, speciální nástroje (tzv. „Schema Generators“) ho dokážou automaticky přeložit do XML schémat (XSD souborů), které pak aplikace používají k validaci a zpracování dat. Tím se minimalizují chyby způsobené ručním překladem.
  • Konzistence a znovupoužitelnost: Koncept PartyIdentification nebo PostalAddress je definován jednou v UML a je pak znovupoužíván v jakékoli zprávě ISO 20022, kde je potřeba identifikovat stranu nebo adresu. To zajišťuje konzistenci a snižuje redundanci.

„Vše se děje v UML“ tedy znamená, že UML je primární jazyk a prostředí, kde se formálně definuje celá sémantika a struktura finančních zpráv ISO 20022, a XML je jen technický výstup této definice.

Závěr:

Jádrem ISO 20022 je tedy právě tento „UML architektonický plán“ finančních konceptů a procesů. XML je pouze jeden z možných „stavebních materiálů“, který se používá k realizaci domu podle tohoto plánu. Tato metodologie zajišťuje, že všechny domy (zprávy) postavené podle ISO 20022 sdílejí stejnou logickou strukturu a sémantiku, bez ohledu na to, kde nebo kým byly vytvořeny. To je to, co dělá ISO 20022 tak robustním a globálně přijímaným standardem.


Text a grafika byly vygenerovány modelem Gemini (Google). Následně upraveno autorem.

Napsat komentář