2

jython を介して Documentum で IDfSysObjects を操作しようとしていますが、インターパーターからメソッドを適切に呼び出す方法がわかりません。以下のコードは、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 に答える