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):
- 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.
- 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)
- 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: TypDecimal(číslo s desetinnou čárkou, např. 12500.50)Currency: TypActiveOrHistoricCurrencyCode(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“)
- V UML byste měli třídu
- Překlad do XML (Konkrétní implementace):
- Když se pak z tohoto UML modelu generuje XML schéma (XSD), UML třída
AmountAndCurrencyse typicky přeloží do XML elementu nebo komplexního typu. - Atributy
ValueaCurrencyse 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
AmountAndCurrencyse použije pro instruovanou částku (InstdAmt):
XML
<Amt> <InstdAmt Ccy="EUR">12500.50</InstdAmt> </Amt>- Zde je
InstdAmtelement, který reprezentuje částku (číselná hodnota 12500.50) a měnu (atributCcy="EUR"). Přímý překlad z UML modelu.
- UML model
- V camt.053 (výpis z účtu):
- Stejný UML model
AmountAndCurrencyse 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
Amtelement, který reprezentuje částku (číselná hodnota 150000.00) a měnu (atributCcy="CZK").
- Stejný UML model
- Když se pak z tohoto UML modelu generuje XML schéma (XSD), UML třída
Co to objasňuje?
- Jednotná sémantika: Ať už se
AmountAndCurrencyobjeví 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. - 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. - 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“:
- 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. - Atributy (Attributes): Seznam položek uvnitř třídy (např.
+Id: GenericIdentificationvPartyIdentification). 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). - Vztahy (Relationships): Čáry mezi třídami představují, jak spolu koncepty souvisí:
- Agregace/Kompozice (Composition/Aggregation): Plný kosočtverec (např.
PaymentInstructionmá (kompozice)PartyIdentificationjakoInitiatingParty,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 / +Creditorznamená, ž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.
- Například:
- Asociace (Association): Přímá čára s rolí (např.
PartyIdentificationmáPostalAddress).
- Agregace/Kompozice (Composition/Aggregation): Plný kosočtverec (např.
- 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“):
- Třídy se stanou XML elementy nebo komplexními typy:
- Třída
PaymentInstructionse může stát kořenovým elementem XML zprávy nebo komplexním typem. - Třída
PartyIdentificationse stane XML elementem (např.<PtyId>).
- Třída
- Atributy se stanou vnořenými XML elementy nebo atributy:
- Atribut
NamevPartyIdentificationse stane<Nm>Jan Novák</Nm>. - Atribut
IdvPartyIdentificationby byl komplexnější element pro identifikaci.
- Atribut
-
- 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> - Vztah, kde
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
PartyIdentificationneboPostalAddressje 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.
