как получить содержимое документа с помощью DFC в С#

У меня есть Documentum Developer Edition 6.6. Я хочу получить содержимое документа (прочитать содержимое в поток), используя DFC в С#. Я использовал следующий код С#.net

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

но он выдает следующее исключение.

Исключение: невозможно привести COM-объект типа «System.__ComObject» к типу интерфейса «DFCLib.IDfDocument». Эта операция завершилась неудачно, так как вызов QueryInterface компонента COM для интерфейса с IID "{EFAC2D68-175B-11D2-9927-006097C27C31}" завершился сбоем из-за следующей ошибки: такой интерфейс не поддерживается (исключение из HRESULT: 0x80004002 (E_NOINTERFACE)) .

Я также попробовал следующий метод (он работает успешно), но я не знаю, как читать содержимое в поток или поток памяти.

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

person khalid khan    schedule 08.09.2012    source источник


Ответы (2)


Это сбросит файл на путь локальной файловой системы:

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

sysObject.getFile(<path>)

Затем вы можете открыть файл как поток, используя стандартные библиотеки .Net IO, например:

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

Я полагаю, что в DFC есть некоторые общедоступные методы на основе потоков (getContent?), но я не видел, чтобы они успешно использовались в .Net. Однако я предлагаю вам взглянуть на API DFS (Documentum Foundation Services) вместо DFC. Сейчас это поддерживаемый API, а DFC устарел как общедоступный API. DFS имеет параметры потока при работе с содержимым репозитория.

Вы также можете проверить http://developer.emc.com, если этого ответа недостаточно для ваших нужд.

person Brendan Hannemann    schedule 18.09.2012

Исключение говорит, что он не может преобразовать COM-объект в IDfDocument.

Тогда я предполагаю, что ваша цель - не документ.

Странно, что системный объект, не являющийся документом, имеет содержимое, но это все же разрешено. Затем содержимое можно было прочитать с помощью getFile, как это было предложено в другом ответе.

person David Pierre    schedule 20.09.2012