Jython с кодом DFC

Я пытаюсь работать с IDfSysObjects в Documentum с помощью jython, но я не могу понять, как соответствующим образом вызывать методы из интерпретатора. Код ниже иллюстрирует то, что я хотел бы назвать с помощью Jython.

String docId= getDocId();
IDfSysObject doc = (IDfSysObject)session.getObject(new DfId(docId));
ByteArrayInputStream stream = doc.getContent();

из этого поста:

DFC читает файл

Я не знаю, как согласовать IDfSysObject с сеансом. Я пробовал звонить

session.getObject([r_object_id])

но я получаю

TypeError: 1st arg can't be coerced to com.documentum.fc.common.IDfId

Мой основной вопрос: кто-нибудь знает, как преобразовать следующую строку кода в Jython?

IDfSysObject doc = (IDfSysObject)session.getObject(new DfId(docId));

2 ответа

Решение

Попробуйте этот код, он делает то, что вы хотите:

import com.documentum.fc.client.DfClient as DfClient
import com.documentum.fc.common as common

import array 

class DFCExample:
 def connectToDocbase(docbase, user, password):
   client = DfClient.getLocalClient()
   li = common.DfLoginInfo()        
   li.setUser(user)
   li.setPassword(password)
   sess = client.newSession(docbase, li)
   return sess

 def example(sess, docId):  
   id = common.DfId(docId)
   sysObj = sess.getObject(id)
   print array.array('b', iter(sysObj.getContent().read, -1)).tostring()

 session = connectToDocbase("docbaseDev", "dmadmin", "dmadmin")
 example(session, "0900323e80071339")
 sess.disconnect()  

Я хотел добавить здесь ответ, относящийся к моему первоначальному вопросу, и дополнительную операцию на тот случай, если кто-то может найти эту информацию полезной. После успешного получения объекта я также хотел выполнить на нем операцию экспорта, что было не так просто, как мне бы хотелось. Я обнаружил, что определенные операции не доступны через типичный DfClient и что я должен был создать экземпляр сеанса с DfClientX, но обратите внимание на разницу в установлении сеанса:

import com.documentum.com.DfClientX as DfClientX
import com.documentum.fc.common as common

class DFCExample:
    def connectToDocbase(docbase, user, password):
        clientx = DfClientX() #extra step
        clx = clientx.getLocalClient()
        li = common.DfLoginInfo()        
        li.setUser(user)
        li.setPassword(password)
        sess = clx.newSession(docbase, li)
        return sess, clientx

    def exportDoc(sess, docId, clientx):
        id = common.DfId(docId)
        sysObj = sess.getObject(id)
        exp = clientx.getExportOperation()
        node = exp.add(sysObj)
        exp.setDestinationDirectory(exp.getDefaultDestinationDirectory())
        exp.execute()

    sess, clientx = connectToDocbase("mydocBase", username, password)
    exportDoc(sess, "0900aaa28023215i", clientx)
    sess.disconnect()

Хотя я понимаю, что это дополнение, возможно, не является ответом на мой первоначальный вопрос, выяснение этого было чем-то, что мне помогло в связи с рассматриваемой темой. Так что я просто хотел поделиться, если это поможет кому-то еще. Спасибо!

Другие вопросы по тегам