掲示板一覧   -   トピック一覧
   EA API
     HTMLドキュメントの生成をEA外から行う方法


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
mogass
投稿日時: 2011-10-17 15:01
EA Administrator
投稿: 209

HTMLドキュメントの生成をEA外から行う方法

サポートに寄せられたご質問と回答の要約です。

○ご質問

プロジェクトブラウザでパッケージを右クリックして出てくる、「HTMLドキュメントの生成」を、
外部アプリケーションからAPI経由で実行する方法はありますか?

DocumentGenerator APIを利用して出力を試みましたが、
DocumentPackageの呼出しでCOMExceptionが発生してしまいました。
試したコード(C#)の抜粋は下記となります。

DocumentGenerator generator = repo.CreateDocumentGenerator();
generator.NewDocument(""); // trueが返る
generator.DocumentPackage(package.PackageID, 1, ""); // 例外発生

DocumentPackageの呼出しで発生した例外は下記の通りです。

System.Runtime.InteropServices.COMException : サーバーによって例外が返されました。
(HRESULT からの例外: 0x80010105 (RPC_E_SERVERFAULT))

場所 EA.IDualDocumentGenerator.DocumentPackage(Int32 ID, Int32 nDepth, String sTemplateName)

ヘルプドキュメントのDocumentGeneratorの説明にあるシーケンス図では、
最初に CreateDocument を呼ぶように記載されていますが、APIドキュメント上にも
Interop.EA.dllにもそのようなメソッドは存在しませんでしたので、
代わりに NewDocument を呼んでいます。

○回答

DocumentGeneratorインターフェースのDocumentPackageメソッド
に関しまして、ご報告の内容を確認し、原因を調査致しました。

まず、DocumentPackageメソッドの実行時に例外が発生する件に
つきましては、DocumentPackageもしくはその前のNewDocument
メソッドの引数で、何らかのテンプレートを指定しなければ
いけないようです。

引用:
> generator.NewDocument(""); // trueが返る
> generator.DocumentPackage(package.PackageID, 1, ""); // 例外発生

この場合、EA上で定義されているテンプレート名を、
NewDocumentもしくはDocumentPackageで指定、
または両方で指定する必要があります。

例)
generator.NewDocument([テンプレート名])
generator.DocumentPackage((package.PackageID, 0, [テンプレート名])

ここで指定するテンプレートは、EAのリソースサブウィンドウに表示される
RTFテンプレートを指定します。
(DocumentGeneratorではHTMLテンプレートの読み込みはできません。
HTML形式で出力する場合もすべてRTFテンプレートを使用しますので
ご注意ください。)

以下、サンプルコードを作成しましたのでご参考にしてください。

------------------------------------------------------------
bool bResult = generator.NewDocument("");
if (bResult)
{
// "testTemplate"の部分 <- EAで定義されているテンプレート名
bResult = generator.DocumentPackage(package.PackageID, 0, "testTemplate");
}
if (bResult)
{
bResult = generator.SaveDocument("C:\\xxxxx\\testTemplate.htm", EA.DocumentType.dtHTML);
}
if (bResult)
{
// 正常終了
}
else
{
// エラー(generator.GetLastError()でエラーの内容を取得できます)
}
------------------------------------------------------------

DocumentGeneratorインターフェースを使用してHTML形式で
出力を行った場合、EAのHTMLドキュメント生成のような結果には
なりません。

EAのHTMLドキュメント生成と同様の出力を行いたい場合は、
ProjectオブジェクトのRunHTMLReportメソッドを使用することで、
HTMLドキュメント生成と同様の出力を行うことができますので、
こちらもお試しください。


回答は以上となります。

いろいろとヘルプの情報が少なく申し訳ございません。
今後、情報を追加してまいります。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ