2

我正在尝试通过 jython 在 Documentum 中使用 IDfSysObjects,但我无法弄清楚如何从 interperter 适当地调用这些方法。下面的代码说明了我想用 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));
4

2 回答 2

1

试试这个代码,它会做你想做的事:

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()  
于 2014-12-11T08:27:09.747 回答
1

我想在此处添加与我的原始问题和辅助操作相关的答案,以防其他人可能会发现该信息有用。成功获取对象后,我还想对其执行导出操作,这并不像我希望的那样简单。我发现某些操作无法通过典型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()

虽然我意识到这个添加可能不属于我最初问题的答案,但弄清楚这一点对我手头的主题有所帮助。所以我只是想分享一下,以防这对其他人有帮助。谢谢!

于 2015-01-07T14:55:39.873 回答