2014-12-10 3 views
2

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

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

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

DFC reading a file

Я не знаю, как примирить 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)); 

ответ

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() 
+0

Спасибо за это .... именно то, что мне было нужно. – ionalchemist

+0

Я рад, что смог помочь! :-) – KarolBe

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() 

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