4

documentum DeveloperEdition6.6を持っています。C#でDFCを使用してドキュメントコンテンツを取得(コンテンツをストリームに読み込む)したい。次のC#.netコードを使用しました

IDfId id = collection.getId("r_object_id");
IDfDocument doc = (IDfDocument) session.getObject(id);

ただし、次の例外がスローされます。

例外:タイプ'System.__ComObject'のCOMオブジェクトをインターフェイスタイプ'DFCLib.IDfDocument'にキャストできません。次のエラーが原因で、IID'{EFAC2D68-175B-11D2-9927-006097C27C31}'のインターフェイスのCOMコンポーネントに対するQueryInterface呼び出しが失敗したため、この操作は失敗しました。このようなインターフェイスはサポートされていません(HRESULTからの例外:0x80004002(E_NOINTERFACE)) 。

私も次の方法を試しました(正常に実行されます)が、コンテンツをストリームまたはメモリストリームに読み込む方法がわかりません。

IDfId id = collection.getId("r_object_id"); 
IDfSysObject sysObject = (IDfSysObject) session.getObject(id);
4

2 に答える 2

0

これにより、ファイルがローカルファイルシステムパスにダンプされます。

IDfId id = collection.getId("r_object_id"); 
IDfSysObject sysObject = (IDfSysObject) session.getObject(id);

sysObject.getFile(<path>)

次に、標準の.NetIOライブラリを使用してファイルをストリームとして開くことができます。次に例を示します。

var stream = new System.IO.StreamReader(<path>)

DFCにはいくつかのストリームベースのパブリックメソッド(getContent?)があると思いますが、.Netからそれらが正常に使用されているのを見たことがありません。ただし、DFCではなくDFS(Documentum Foundation Services)APIを確認することをお勧めします。これは現在サポートされているAPIであり、DFCはパブリックAPIとして非推奨になっています。DFSには、リポジトリコンテンツを処理する際のストリームオプションがあります。

この回答がニーズに十分でない場合は、http://developer.emc.comを確認することもできます。

于 2012-09-18T14:43:06.640 に答える
0

例外は、COM オブジェクトを IDfDocument に変換できないことを示しています。

あなたのターゲットはドキュメントではないと思います。

ドキュメント以外のシステム オブジェクトにコンテンツがあるのは奇妙ですが、それでも許可されます。他の回答で提案されているように、コンテンツは getFile で読み取ることができます。

于 2012-09-20T09:02:57.217 に答える