Gaphor je izrađen tako da se može proširiti korištenjem dodataka koji omogućuju dodatnu funkcionalnost.
Klase modela podataka nalaze se u modulu gaphor.UML
. Objektima podataka
može se pristupiti putem ElementFactory. Ovo je posebna klasa za stvaranje i
upravljanje objektima podataka. Elementi se mogu tražiti pomoću ove tvornice
elemenata, koja je registrirana u programu kao element_factory
. Prilikom
pisanja usluge ili dodatka, tvornica elemenata može se ubaciti u uslugu na
sljedeći način:
class MyThing:
def do_something(self):
element_factory = Application.get_service('element_factory')
items = element_factory.select()
U prozoru konzole, usluge se mogu dohvatiti korištenjem funkcije
service()
. Na primjer:
ef = service('element_factory')
Za ispitivanje se koriste dvije metode:
select(query=None)
-> vraća ponavljajućelselect(query=None)
-> vraća popisquery
je lambda funkcija s elementom kao parametrom. Na primjer, za
dohvaćanje svih instanci klasa iz tvornice elemenata:
element_factory.select(lambda e: e.isKindOf(UML.Class))
Kad se dobiju neke klase, mora se proći kroz nekoliko povezanih objekata za dobivanje potrebne informacije. Na primjer: za prolaženje kroz sve parametre vezanih uz operacije klase:
for o in classes.ownedOperation:
for p in o.ownedParameter:
do_something(p)
Operator [:]
olakšava prolaženje kroz elemente:
for o in classes.ownedOperation[:].ownedParameter:
do_something(p)
Također je moguće zadati upit kao dio odabira:
for o in classes.ownedOperation['it.returnParameter'].ownedParameter:
do_something(p)
Varijabla it
u upitu odnosi se na ocijenjeni objekt (u tom slučaju se
uzimaju u obzir sve operacije s povratnim parametrom).
An example Hello World plugin is hosted on GitHub.