Gaphor je navržen tak, aby byl rozšiřitelný pomocí zásuvných modulů, které vám umožní rozšířit jeho funkce.
Třídy datového modelu se nacházejí v modulu gaphor.UML
. K datovým objektům
lze přistupovat prostřednictvím ElementFactory. Jedná se o speciální třídu
pro vytváření a správu datových objektů. Na prvky se lze dotazovat pomocí
této továrny na prvky, která je v aplikaci registrována jako
element_factory
. Při psaní služby nebo zásuvného modulu lze továrnu na
prvky injektovat do služby takto:
class MyThing:
def do_something(self):
element_factory = Application.get_service('element_factory')
items = element_factory.select()
V okně konzole lze služby načíst pomocí funkce service()
. For example:
ef = service('element_factory')
Pro dotazování se používají dvě metody:
select(query=None)
-> vrací iterátorlselect(query=None)
-> vrací seznamdotaz
je lambda funkce s prvkem jako parametrem. Například pro načtení
všech instancí třídy z továrny na prvky:
element_factory.select(lambda e: e.isKindOf(UML.Class))
Po získání některých tříd je běžné projít několik souvisejících objektů, aby bylo možné získat požadované informace. Například: iterovat přes všechny parametry související s operacemi třídy:
for o in classes.ownedOperation:
for p in o.ownedParameter:
do_something(p)
Pomocí operátoru [:]
lze položky procházet snadněji:
for o in classes.ownedOperation[:].ownedParameter:
do_something(p)
V rámci výběru je také možné zadat dotaz:
for o in classes.ownedOperation['it.returnParameter'].ownedParameter:
do_something(p)
Proměnná it
v dotazu odkazuje na vyhodnocovaný objekt (v tomto případě se
berou v úvahu všechny operace s návratovým parametrem).
An example Hello World plugin is hosted on GitHub.