掲示板一覧 - トピック一覧 EA API API repository.CreateModel の使いかた |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | トピック |
---|---|
umesan | 投稿日時: 2018-4-11 14:03 |
EA Administrator 投稿: 1515 |
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 をご利用ください。 以上ご確認頂けますようおねがいいたします。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |