掲示板一覧   -   トピック一覧
   EA API
     API repository.CreateModel の使いかた


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
umesan
投稿日時: 2018-4-11 14:03
EA Administrator
投稿: 1502

API repository.CreateModel の使いかた

サポート宛にいただきましたご質問の要約です。

○ご質問
APIから空のeapファイルを作成したいのですが、下記コードを実装して実行したところ、戻り値にfalseが返ります。

string workFilePath = @".\Work.eap";
EA.Repository repository = new EA.Repository();
result = repository.CreateModel(CreateModelType.cmEAPFromBase, workFilePath, 0);

しかし、絶対パスに直したところ、ファイルが生成され、trueが返りました。
何か間違っておりますでしょうか?正しい使いかたをおしえてください。

また、CreateModelした後は、OpenFileする必要はありますでしょうか?

○回答
ご連絡いただきました点につきまして、検証致しましたところ、以下のことがわかりました。

・Repository.CreateModelに「絶対パス」を指定するとファイルは作成され、true が戻る
・Repository.CreateModelに「相対パス」を指定するとファイルは作成されず、false が戻る
・Repository.CreateModelに「絶対パス」を指定し、ファイルが存在していると、false が戻る
・Repository.CreateModelに「相対パス」を指定し、そのプログラムを「管理者として実行」で実行すると、C:\Windows\System32\ をカレントフォルダとしてファイルは作成され、true が戻る

現在のEnterprise ArchitectのAPIでは、EA.exe がプロセスとして起動され、そちらで実行されます。

new Repository でリポジトリオブジェクトを作成した場合、カレントフォルダはAPIのクライアントのカレントフォルダではなく、EA.exe のカレントフォルダになります。
そして、EA.exe のプロセスのカレントフォルダは、C:\Windows\System32\ になるため、そこからの「相対パス」でファイルを作成しようとしています。ですので、管理者でない場合はファイル作成に失敗しておりました。

以上より、EA本体のバグではなく、APIは正しく動作していることになります。

まとめますと、Repository.CreateModel には、絶対パス、相対パス両方指定できますが、「相対パス」を指定する場合は EA.exe のカレントフォルダからの相対になるということになります。


>また、CreateModelした後は、OpenFileする必要はありますでしょうか?
ヘルプにもありますように、「新規にプロジェクトファイルを作成」するだけであり、OpenFile とは関係ありません。ですので、作成したプロジェクトファイルを開くためには、OpenFile をご利用ください。

以上ご確認頂けますようおねがいいたします。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ