A domain modell nem tartalmaz felhasználói felületet. A modell logikája nem feltétlenül egyeztethető össze egy jól tervezett felhasználói felület logikájával. Szükség van tehát egy transzformációra, ami a domain modell objektum hierarchiájából egy másikat csinál.
A transzformációra azért is szükség lehet, mert a teljes információs rendszert egy domain modell mellett több applikációs program szolgálja ki. Az applikációs programok tipikusan valamilyen grafikus felülettel rendelkező "thin clientek", hálózaton keresztül csatlakozva a szerverre, ahol a kiszolgáló program fut.
Ezt figyelembe véve kijelenthetjük, hogy a modern vállalati információs rendszer architektúrája a következőképpen néz ki;
| Szintaxis | <FACADE> ... </FACADE> |
|---|---|
| Attribútumok |
|
| Tartalom | Egy, vagy több PROPERTY tag |
| Helye | Dokumenum törzs |
A FACADE az objektum hierarchia egy részének transzformált képe. Az alapját mindig a hierarchia egy objektuma képezi, bár a működése kiterjedhet a többi objektumra is, amik ezzel valamilyen kapcsolatban állnak. A FACADE attribútumait (amik nem valódi változók) PROPERTY-nek nevezzük.
| Szintaxis | <PROPERTY> ... </PROPERTY> |
|---|---|
| Attribútumok |
|
| Tartalom | RETRIEVAL, LEGALVALUES, UPDATE, VALIDATION és DEFAULT tag. Ezek közül egyedül a RETRIEVAL kötelező. |
| Helye | FACADE tag |
A FACADE a felhasználói felület felé egy sor PROPERTY-t szolgáltat. A PROPERTY-k úgy viselkednek, mint a valódi változók, amennyiben a manipulációs funkcióik (kiolvasás, írás, stb,) megegyeznek a változóknál megszokottallak. A különbség az, hogy a FACADE-nek nincsenek valódi attribútumai, és minden PROPERTY olvasása, írása, stb. a domain modell manipulációjára képeződik le.
A PROPERTY belsejében egy kötelező RETRIEVAL tag van, ami az értékét kiolvassa. A többi íráshoz szükséges, és mind opcionális.
| Szintaxis | <RETRIEVAL> ... </RETRIEVAL> |
|---|---|
| Attribútumok | - |
| Tartalom | Java nyelvű programkód, ami lekérdezi az adott property értékét, és visszatér azzal. |
| Helye | PROPERTY tag |
A tag belsejében szereplő java kódrészlet felelős a property kiolvasásáért.
| Szintaxis | <UPDATE> ... </UPDATE> |
|---|---|
| Attribútumok | - |
| Tartalom | Java nyelvű programkód, ami elvégzi a domain objektumokon a property megváltozásának megfelelő változtatásokat. |
| Helye | PROPERTY tag |
A tag belsejében szereplő java kódrészlet felelős a property írásáért. Ellenőrzésre definiálható a VALIDATION tag.
| Szintaxis | <LEGALVALUES> ... </LEGALVALUES> |
|---|---|
| Attribútumok | - |
| Tartalom | Java nyelvű programkód, ami visszatér az adott property lehetséges értékeit tartalmazó halmazzal. |
| Helye | PROPERTY tag |
A tag belsejében levő java kódrészlet visszatér a property értékkészletét tartalmazó halmazzal.
| Szintaxis | <VALIDATION> ... </VALIDATION> |
|---|---|
| Attribútumok | - |
| Tartalom | Java nyelvű programkód, ellenőrzi, hogy az adott propertynek érvényes érték lett-e megadva. |
| Helye | PROPERTY tag |
Ellenőrzi, hogy egy adott érték elfogadható a property értékének.
| Szintaxis | <DEFAULT> ... </DEFAULT> |
|---|---|
| Attribútumok | - |
| Tartalom | Java nyelvű programkód, ami visszatér az adott propertynek egy alapértelmezett értéket ad, új FACADE objektum létrehozásakor. |
| Helye | PROPERTY tag |
Új objektum definiálásakor a property kezdeti értékét beállító kód.
Elképzelésem szerint a domain oldali applikációs homlokzat ilyen definiálása után egy thin client felhasználói interface implementálása a képernyők ergonómiai megtervezésében merül ki, mert a facade osztályok az információt pontosan olyan formában szolgáltatják, ahogy az a UI elemeinek kell.