Definování modifikátoru

Účelem definice modifikátorů je zmapovat patřičný kus programového kódu, jeho metody, vlastnosti, události a další charakteristiky tak, aby bylo možné jej pomocí editoru snadno propojit s aplikačním obsahem patřičné třídy v rámci požadované definice stránky (viz. příklad stránky).

Jak ukazuje příklad definice modifikátoru, je základem definice kmenový uzel modifier. Klíčovou roli v tomto uzlu hraje atribut inclusion, kde je uveden neinstanční odkaz přiřazující definovaný modifikátor do konkrétní třídy a jejího rozsahu a zároveň přiděluje modifikátoru jedinečné jméno (v rámci třídy a rozsahu).

Modifikátory, které jsou distribuovány spolu s technologií COMEX a jsou její součástí, nikdy v názvu neobsahují znak podtržítka. Proto se pro proprietální modifikátory doporučuje použít tohoto znaku, aby se spolehlivě v rámci třídy a rozsahu zabránilo i budoucímu překrytí názvu s některým modifikátorem původním.


Součásti definice modifikátoru

Dle schematu je v uzlu modifier třeba definovat, vedle popisků, také možné parametry, metody, vlastnosti a události.

syntax
<cxd:modifier
langs="mixed|omitted|only"
inclusion="{string}"
>
<cxd:lang/> ?
<cxd:params/> ?
<cxd:methods/> ?
<cxd:properties/> ?
<cxd:events/> ?
<cxd:types/> ?
</cxd:modifier>

Pro usnadnění v definici se opakujících datových typů je pak možné v uzlu modifikátoru definovat také vlastní datové typy, na které je v ostatních částech definice odkazováno. Definování těchto součástí viz. další popis.


Jazykové verze popisů a poznámek

Jak přímo kmenová definice modifier, tak také většina jejích potomků umožňuje vkládat do funkčních definic také patřičné popisky a komentáře ve formě uzlu lang. Je sice možné vkládat pouze jeden uzel, který by měl obsahovat komentář v dohodnutém výchozím jazyce a kód tohoto jazyka je třeba uvádět, je možné jako potomky uvádět další uzly lang a využít jich pro uvedení překladů, tedy jazykových popisků pro další jazyky.

Použití uzlu lang by mělo vždy respektovat konvence pro způsoby definování popisů spojené s kmenovým atributem langs uváděného v každé kmenové definici, vč. definice modifikátorů.

Vzhledem k tomu, že jde převážně o technické popisy, mělo by být využíváno především atributu comment, je však možné kombinovat i s atributy label a descr.


Parametry

Při vkládání modifikátoru na stránku, bude třeba, vedle uvedení jeho plné identifikace instančním odkazem v atributu source, uvést většinou také nějaké parametry. Parametry mají význam v tom, že je možné v rámci cílové stránky uvést některé výchozí vlastnosti spojené s umístěním na dané stránce. Může to být například rozměr nebo nějaká povinná vlastnost apod. Záleží však zcela na tvůrci daného modifikátoru, jaké parametry bude modifikátor umožňovat nebo vyžadovat.

Parametrizovat je možné či potřebné jak modifikátory při tvorbě komponent na stránce, tak také při vkládání sub-modifikací do aplikačních tříd, jsou-li někde tyto pomocné modifikace používány.

Další detaily k parametrizaci viz. uzel params v popisu schematu.

Implementace parametrů do kódu programové knihovny viz. část tvorba modifikátorů.


Metody

Vyjmenováním metod v definici modifikátoru dává tvůrce modifikátoru k dispozici nástroje pro manipulaci s komponentou, která je na stránce modifikátorem tvořena. U každé metody je vedle povinného názvu možné definovat vstupní a výstupní typy. U metod je dobré si všimnout, že není definován běžný seznam argumentů funkce. Na argumentů se definuje jediný vstupní typ, který je strukturovaný. Struktura pak může obsahovat nejen pojmenované vlastnosti prostých typů, ale je k dispozici možnost popsat rozsáhlejší struktury předávaných objektů nebo také polí.

Každá komponenta na stránce, vytvořená modifikátorem má nejen volitelné metody, ale také metody povinné, které musí umět objekt obsloužit. Tyto metody jsou dány obecnou definicí všech modifikátorů - viz. pages, frames, modifiers.

Více o definování struktur viz. uzel structureDefinition v popisu schematu.

Implementace metod do kódu programové knihovny viz. část tvorba modifikátorů.


Vlastnosti

Každá komponenta na stránce vytváří objekt a jako takový má své povinné a volitelné vlastnosti. Povinné vlastnosti dané obecnou definicí (viz. pages, frames, modifiers) je možné dále rozšiřovat o nabídku dalších potřebných.


Parametry vs. vlastnosti

Parametry a vlastnosti rozhodně nejsou totéž. Nejprve je třeba si uvědomit, že parametry jsou nástroje pro vložení komponenty vymezené modifikátorem na určitou stránku. Parametry však nejsou dostupné jako vlastnosti takto vytvořeného objektu. Slouží pouze pro jeho zavedení na stránku. Názvy vlastností a parametrů se mohou dokonce překrývat a přesto neobsahují jedno a totéž a také nemusejí nutně znamenat jedno a totéž. Parametry jsou vyhodnocovány v okamžiku tvorby komponenty na stránce. Vlastnosti jsou k dispozici ostatním komponentám po vytvoření objektu komponenty dle modifikátoru a na základě parametrů. Parametry tedy nemohou sloužit pro sběr údajů na stránce při vzniku událostí a aktivaci propojení definovaných uzly connection.

Více o definování struktur viz. uzel structureDefinition v popisu schematu.

Implementace vlastností do kódu programové knihovny viz. část tvorba modifikátorů.


Události

Aby bylo možné aktivní propojování součástí na stránce, je třeba aby výchozí součást měla jednu nebo více událostí definovaných modifikátorem, kterým je součástka na stránce vytvářena. Každá konektivita se propojuje teprve v okamžik vzniku události součásti a je-li definováno propojení, pak dojde ke komunikaci s jinou součástí nebo i jinou stránkou a opuštění stránky stávající, což je umožněnou obecnějším charakterem comex odkazů na cílové součásti.

Samostné události se definují pouze prostřednictvím názvů jedinečných v rámci všech událostí modifikátoru.

Implementace událostí do kódu programové knihovny viz. část tvorba modifikátorů.


Typy

V rámci definice modifikátoru je pro zjednodušení možné stanovit si vlastní pomocné datové typy, které pak jsou v další části definice modifikátoru odkazovány uvedením svého názvu do atributu type nebo base. K definici vlastních typů v rámci modifikátoru slouží uzel types. V tomto uzlu je pak uveden seznam vlastních typů v podobě uzlů type, které vycházejí ze základních datových typů nebo popisují typy komplexní. Je rovněž možné vyjít z některého předchozího uzlu type v seznamu a dále jej upřesnit restrikcí, je-li definován typ prostý nebo rozšířit další strukturou, jde-li o typ strukturovaný.


Přehled základních datových typů comex

Pro práci s hodnotami je možné odkazovat na následující základní typy hodnot:

comex.string

comex.boolean

comex.decimal

comex.date

comex.time

comex.dateTime

comex.anyURI

comex.XPath

comex.token

comex.Name

comex.QName

comex.id

comex.integer

comex.positiveInteger

comex.nonPositiveInteger

comex.negativeInteger

comex.yearMonth

comex.object

comex.array

comex.node

comex.nkey

comex.char

comex.varc

comex.text

comex.bool

comex.curr

comex.numb

comex.file

comex.imag

comex.vide

comex.void

Z těchto typů je možné odvozovat v každé kmenové definici typy vlastní a to formou atributu base a uvedením dalších restrikcí.

Bližší popis struktury definice modifikátoru a všech jeho částí najdete v popisu schematu v části definiction cxd:modifier.


Definování modifikátoruTvorba modifikátoruMožnosti sub-modifikacíPříbuzní - pages, frames, modifiersPopisy k vybraným modifikátorům