掲示板一覧   -   トピック一覧
   EA API
     APIを利用した新規リポジトリの作成と別名保存方法


フラット表示 前のトピック | 次のトピック
投稿者 トピック
mogass
投稿日時: 2014-4-18 11:04
EA Administrator
投稿: 171

APIを利用した新規リポジトリの作成と別名保存方法

サポートに頂きましたご質問と回答の要約です。

○ご質問

現在、EAのAPIを利用して、ダイアグラムの作成や画像取得等を行っております。開発はVS2010、C#、.NET 3.5を使用しています。

外部データの取り込みなどで、APIから新規リポジトリを作成したいと考えていますが、可能でしょうか?
あるいは、あらかじめ作成しておいた全く空のeapファイルや、EABase.eapをコピーするだけで十分でしょうか?

また同様に、現在開いているリポジトリを別名でファイルに保存するAPIはあるでしょうか?
Project.ProjectTransfer()もあったのですが、UI上別名保存とはGUIDの初期化オプション指定がないなど多少動作上の意味合いが異なっているようです。

よろしくお願いいたします。


○回答

いただきましたご質問に回答させていただきます。

以下、いただきましたご質問の内容を引用させていただきます。

引用:
外部データの取り込みなどで、APIから新規リポジトリを作成したいと考えていますが、可能でしょうか?
あるいは、あらかじめ作成しておいた全く空のeapファイルや、EABase.eapをコピーするだけで十分でしょうか?


Repository.CreateModel()メソッドで新規プロジェクトを
作成することが可能ですので、こちらをご使用ください。


引用:
また同様に、現在開いているリポジトリを別名でファイルに保存するAPIはあるでしょうか?
Project.ProjectTransfer()もあったのですが、UI上別名保存とはGUIDの初期化オプション指定がないなど多少動作上の意味合いが異なっているようです。


こちらは申し訳ございませんが、UIの別名保存と同等に、GUIDの初期化が可能な機能を持つAPIはございません。

Project.ImportPackageXMI()はGUIDの初期化オプションが存在しますので、Project.ExportPackageXMI()メソッドとProject.ImportPackageXMI()メソッドを使用して、パッケージ単位で、モデル自体の入出力を行うことは可能です。

プロジェクトに定義されたテンプレートや用語集などの情報もコピーする必要があり、モデルのGUIDの重複を防止したいという場合は、以下の方法でリポジトリのコピーを実現することができるかと思います。

1. Project.ProjectTransfer()で既存プロジェクトの情報を新規プロジェクトに転送
2. 転送後の新規プロジェクトのすべてのモデル(Repository.Models()以下の情報)を削除
3. Project.ExportPackageXMI()で既存プロジェクトの情報を出力
4. 3.で出力した情報をProject.ImportPackageXMI()で新規プロジェクトに取り込み

ただ、ExportPackageXMI()とImportPackageXMI()を使用する際の問題点は、異なるパッケージ間の要素と要素の間に依存関係がある場合、依存する側のパッケージは「後」に取り込みを行わないといけない(依存される側は既に存在しないといけない)などの考慮が必要となることです。

あらかじめ、1リポジトリにつき1プロジェクトルートという制約を設けておけば、この点の考慮も必要なくなるかと思います。

ご検討のほど宜しくお願いいたします。
フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
 » APIを利用した新規リポジトリの作成と別名保存方法 mogass 2014-4-18 11:04