Gaphor is ontworpen om uitbreidbaar te zijn met behulp van plug-ins waarmee u de functionaliteit kunt uitbreiden.
De gegevensmodelklassen bevinden zich in de module
gaphor.UML
. Gegevensobjecten kunnen worden benaderd via de
ElementFactory. Dit is een speciale klasse voor het maken en beheren van
gegevensobjecten. Items kunnen worden opgevraagd met behulp van deze element
factory, welke in de app wordt geregistreerd als element_factory
. Bij het
schrijven van een service of plug-in kan de element factory als volgt in de
service worden geïnjecteerd:
class MyThing:
def do_something(self):
element_factory = Application.get_service('element_factory')
items = element_factory.select()
In het consolevenster kunnen services worden opgevraagd met de functie
service()
. Bijvoorbeeld:
ef = service('element_factory')
Er zijn twee methoden om gegevens op te vragen:
select(query=None)
-> geeft een iterator teruglselect(query=None)
-> geeft een lijst terugquery
is een lambda-functie met het element als parameter. Bijvoorbeeld,
om alle Class-instanties van de element factory op te halen:
element_factory.select(lambda e: e.isKindOf(UML.Class))
Zodra sommige klassen zijn verkregen, is het gebruikelijk om enkele gerelateerde objecten te doorlopen om de vereiste informatie te verkrijgen. Bijvoorbeeld: het doorlopen van alle parameters met betrekking tot de operaties van een klasse:
for o in classes.ownedOperation:
for p in o.ownedParameter:
do_something(p)
Met behulp van de operator [:]
kunnen items gemakkelijker worden
doorlopen:
for o in classes.ownedOperation[:].ownedParameter:
do_something(p)
An example Hello World plugin is hosted on GitHub.