A origem da extensibilidade do UML
Modeler é chamada plataforma de modelagem. A plataforma de modelagem consiste em um conjunto de serviços que
possibilitam o gerenciamento de modelos do UML 2.1 e está baseada
em um metamodelo do UML 2.1 que o componente Eclipse MDT UML2
fornece.
Como o metamodelo é um Eclipse Modeling Framework (EMF)
baseado na implementação da especificação UML 2.1, os objetos que
representam modelos do usuário são objetos do UML2.
A API do UML Modeler consiste em uma única classe do utilitário
estático, e de várias outras classes e interfaces que são acessíveis
a partir da classe UMLModeler. A implementação dessas outras classes
e interfaces abrange diversos plug-ins no produto. Esses plug-ins
são exportados novamente do plug-in que apresenta a classe UMLModeler, que é
parte do pacote denominado com.ibm.xtools.modeler.ui. Para utilizar a extensibilidade do UML Modeler, os clientes da API
devem incluir somente uma única dependência de plug-in
para o pacote com.ibm.xtools.modeler.ui.
API do UML Modeler
A application programming
interface (API) do UML Modeler representa o pacote
primário do UML Modeler que apresenta o ponto de entrada para a API do UML Modeler. O
pacote com.ibm.xtools.modeler.ui contém a classe UMLModeler que
apresenta operações de ciclo de vida para modelos e perfis, e
fornece acesso à plataforma de modelagem.
Por exemplo, em muitos casos, o método UMLModeler.openModel
retorna um pacote do objeto UML2 (org.eclipse.uml2.uml, pacote
de interface). Do mesmo modo que para todos os objetos do UML2, o
Pacote estende indiretamente o objeto EMF do EModelElement (org.eclipse.emf.ecore, interface EModelElement).
Os
seguintes serviços de plataforma de modelagem também estão
disponíveis para modelos baseados em EMF:
- Serviços que executam consultas básicas em modelos EMF
indexados através do IIndexSearchManager da interface, a partir do
pacote com.ibm.xtools.emf.index.search
- Serviços que permitem a participação no processo de upgrade da
versão do modelo e gravação da assinatura por meio do IRMPResource da
interface, a partir do pacote com.ibm.xtools.emf.core.resource
- Serviços que executam consultas em modelos do EMF por meio da
interface IQueryHelper, a partir do pacote
com.ibm.xtools.modeler.ui
- Serviços que executam consultas de Object Constraints
Language (OCL) em modelos EMF por meio da interface IOclQueryHelper, a partir do pacote com.ibm.xtools.modeler.ui.
Para diagramação, a API do UML
Modeler utiliza o ambiente de tempo de execução do projeto Eclipse
Graphical Modeling Framework (GMF).
Por exemplo, o método
createDiagram (com.ibm.xtools.uml.ui.diagram, interface IUMLDiagramHelper)
retorna um Diagrama GMF (org.eclipse.gmf.runtime.notation, interface Diagram). Esse
objeto contém Visualizar (org.eclipse.gmf.runtime.notation) objetos
por meio de seu método getChildren(). Cada visualização pode estar
associada a um elemento semântico. Para diagramas de modelagem UML, esses elementos semânticos são
elementos UML2 e estão acessíveis a partir do método View.getElement().
A
plataforma de modelagem apresenta interfaces para ajudar a gerenciar
diagramas baseados em notação:
- Um auxiliador da interface com o usuário para utilizar elementos
UML2 por meio da interface
IUMLUIHelper a partir do pacote com.ibm.xtools.uml.ui
- Um auxiliador para utilizar os diagramas baseados em notação do
UML 2.0 por meio da interface
IUMLDiagramHelper a partir do pacote com.ibm.xtools.uml.ui.diagram
- Extensões específicas ao UML 2.1 para metamodelo de
notação do GMF por meio do pacote com.ibm.xtools.umlnotation
O
componente do UML Modeler suporta conteúdo de modelo UML em
pacotes que não são modelos. Qualquer suposição de que o elemento-raiz é um modelo não é válida. Modelos não podem ser aninhados em pacotes. A suposição que um modelo não tenha proprietário é válida, embora
você não deva fazer essa suposição. A API do UML Modeler gerencia as manifestações dessa suposição.
Para componentes que utilizam os recursos do UML Modeler,
ocorrem os seguintes padrões comuns:
Referências à metaclasse do Modelo e à API relacionada:
- Tipo org.eclipse.uml2.uml.Model: Esse tipo normalmente é
representado nas instâncias de testes, declarações de variáveis e
assinaturas de método.
Também é encontrado em arquivos plugin.xml, como nas expressões de
ativação de instanceof e filtros do tipo
de propriedades tabuladas.
- Métodos UMLPackage.Literals.MODEL e UMLPackage.getModel():
Esses métodos ocorrem em código que procura elementos deste tipo em
conteúdos do recurso, ou que testa se um EObject é uma instância do
Modelo EClass.
- Método Element.getModel() com uso de getModel():
Esse método utiliza getModel() para obter o elemento-raiz; possui um
valor de null quando o elemento-raiz é um pacote
simples.
- Método Package.isModelLibrary(): Esse método é utilizado
para qualquer tipo de pacote que esteja estereotipado como
modelLibrary e não se aplica somente a modelos.
- Métodos EcoreUtil.getRootContainer() e ResourceUtil.getFirstRoot():
Esses métodos são utilizados quando um elemento é suposto ser um
modelo. Por exemplo, você inclui esses métodos em uma lista sem tipificar
modelos, na qual você espera conter modelos posteriormente.
Filtros de Ação no arquivo plugin.xml:
- @isModel: Em muitos casos, substitua esse filtro pelo filtro
novo @isModelRoot, que corresponde a qualquer pacote que não tenha
proprietário e não seja um perfil.
- @isModelOrProfile: Em muitos casos, esse filtro foi substituído
pelo novo filtro @isRootPackage, que corresponde a qualquer pacote
que não tenha proprietário.
- @isPackage: Utilize esse filtro quando você supor que um
elemento cuja metaclasse seja exatamente um pacote que tenha um
proprietário.
- @hasContainer e @hasNoContainer: Esses filtros representam que
pacotes simples podem estar sem proprietário.
- umlType e umlStrictType: Esses filtros testam o valor do "Modelo".
Vários:
- Constantes de manifesto Java™ para o tipo de elemento de Modelo e quaisquer especializações: com.ibm.xtools.uml.type.UMLElementTypes.MODEL
( com.ibm.xtools.uml.core.internal.util.UMLType.MODEL é reprovado)
- Expressões OCL que podem ocorrer em limitadores de
perfil ou XML
- Oferece acesso ao seguinte:
- Metaclasse de modelo que utiliza métodos como Model.allInstances(), oclIsKindOf(Model), oclIsTypeof(Model), oclAsType(Model).
- Operações definidas pelo UML que utilizam métodos como Element::getModel().
- Gabaritos de Modelos UML e Bibliotecas para um gabarito ou
biblioteca que deveria ser um Pacote em vez de um Modelo.
- Perfis UML para estereótipos que estendem a metaclasse do Modelo,
a qual deveria estender o Pacote, em seu lugar.
- Expressões XPath com uma etapa inicial /Modelo para modelos JET,
relatórios BIRT, planilhas XSLT e mais.
- "com.ibm.xtools.uml.model" para o ID do tipo de elemento do
Modelo (Tipos de Elemento GMF), e que também procura quaisquer
especializações desse tipo de elemento que um componente pode
definir.
Classe com.ibm.xtools.modeler.ui.UMLModeler
O
pacote com.ibm.xtools.modeler.ui.UMLModeler contém a classe UMLModeler. A
classe UMLModeler é uma classe do utilitário que apresenta
operações de ciclo de vida de modelo e perfil, e que fornece
acesso à plataforma de modelagem. A classe UMLModeler contém os métodos saveModelResourceAs(Element model, String file) e saveProfileAs(Profile
profile, String file).
O método saveModelResourceAs(Element
model, String file) salva o modelo que um elemento do modelo raiz
especifica para o local que o file especifica. O método saveProfileAs(Profile
profile, String file) salva o perfil especificado pelo perfil
para o local especificado pelo file.
Nota: Algumas informações, como links para a documentação do Eclipse
ou para guias de desenvolvedor, estão disponíveis apenas a partir dos tópicos
na ajuda do produto.