Gaphor está diseñado para ser extensible mediante el uso de plugins que permiten ampliar la funcionalidad.
Las clases del modelo de datos se encuentran en el módulo gaphor.UML
. Se
puede acceder a los objetos de datos a través de ElementFactory. Esta es una
clase especial para crear y gestionar objetos de datos. Los elementos pueden
ser consultados usando esta fábrica de elementos, que se registra en la
aplicación como element_factory
. Cuando se escribe un servicio o plugin la
fábrica de elementos puede ser inyectada en el servicio de esta manera:
class MyThing:
def do_something(self):
element_factory = Application.get_service('element_factory')
items = element_factory.select()
En la ventana de la consola se pueden recuperar los servicios usando la
función service()
. Por ejemplo:
ef = service('element_factory')
Para la consulta se usan dos métodos:
select(query=None)
-> devuelve un iteradorlselect(query=None)
-> devuelve una listaquery
es una función lambda con el elemento como parámetro. Por ejemplo,
para obtener todas las instancias de Class de la fábrica de elementos:
element_factory.select(lambda e: e.isKindOf(UML.Class))
Una vez obtenidas algunas clases, es habitual recorrer algunos objetos relacionados para obtener la información necesaria. Por ejemplo: para iterar a través de todos los parámetros relacionados con las operaciones de una clase:
for o in classes.ownedOperation:
for p in o.ownedParameter:
do_something(p)
Usando el operador [:]
los elementos pueden ser recorridos más fácilmente:
for o in classes.ownedOperation[:].ownedParameter:
do_something(p)
También es posible proporcionar una consulta como parte de la selección:
for o in classes.ownedOperation['it.returnParameter'].ownedParameter:
do_something(p)
La variable it
en la consulta se refiere al objeto evaluado (en este caso
se tienen en cuenta todas las operaciones con parámetro de retorno).
An example Hello World plugin is hosted on GitHub.