UML ダイアグラムを含む xmi ファイルをロードしました。その結果、org.eclipse.uml2.uml.Package を取得します。
今、プログラムで Ecore (ePackage) に変換したいと考えています。
org.eclipse.uml2.uml.util.UMLUtil の UML2EcoreConverter については既に確認しました。しかし、それはconvert-methodです。私には明確ではありません。
UML ダイアグラムを含む xmi ファイルをロードしました。その結果、org.eclipse.uml2.uml.Package を取得します。
今、プログラムで Ecore (ePackage) に変換したいと考えています。
org.eclipse.uml2.uml.util.UMLUtil の UML2EcoreConverter については既に確認しました。しかし、それはconvert-methodです。私には明確ではありません。
UML2EcoreConverter に直接行く代わりに、以下を見てください。
org.eclipse.uml2.uml.util.UMLUtil.convertToEcore(パッケージ、マップ)
パッケージとオプションのマップを受け取り、変換された EPackage を返します。オプション マップには、UMLUtil.UML2EcoreConverter.OPTION__* からのオプションをキーとして渡すことができます。可能な値は、UMLUtil.OPTION_DISCARD / OPTION_IGNORE/OPTION_PROCESS/ OPTION_REPORTです。すべてのオプションのデフォルトは OPTION__IGNORE です。
これらのオプションのほとんどは、Ecore にきれいにマップされない UML2 クラス図の概念を処理するためのものであるため、それらの処理方法を制御できます。
拡張機能マッピング (サブセット/共用体、再定義など) については、 OPTION_REDEFINING *、OPTION_SUBSETTING *、OPTION__UNION_PROPERTIES、OPTION_DUPLICATE *を参照してください。これらすべてを OPTION_PROCESS に設定しても問題ありません。
無効にしたいオプションの 1 つは、OPTION__SUPER_CLASS_ORDER です。これにより、一般化とインターフェイスの実現がアルファベット順に並べ替えられるため、特定のスーパー実装を継承する場合に実装の問題が発生する可能性があります。もう 1 つは OPTION__CAMEL_CASE_NAMES で、クラス名と機能名を処理して厳密なキャメル ケース スキームを強制します。これは、UML アーティファクトに有効な Java 名がない場合にのみ意味があります。それらを OPTION_IGNORE に設定するか、何かを変更する場所を確認するには OPTION_REPORT に設定します。
逆の convertFromEcore(...) もあります。
UML2EcoreConverter の内部動作をよりよく理解したい場合: これは基本的に、UML モデルをトラバースする単純な再帰ビジターであり、各アーティファクトを対応する Ecore に変換し、クリーンアップを行います。UMLSwitch を拡張して、さまざまなメタクラスを処理します。たとえば、UML プロパティが EStructuralFeature にどのように変換されるかを確認するには、caseProperty(...) を見てください。
Ecore から UML への変換は一方向のみです。