Jython с кодом DFC
Я пытаюсь работать с IDfSysObjects в Documentum с помощью jython, но я не могу понять, как соответствующим образом вызывать методы из интерпретатора. Код ниже иллюстрирует то, что я хотел бы назвать с помощью Jython.
String docId= getDocId();
IDfSysObject doc = (IDfSysObject)session.getObject(new DfId(docId));
ByteArrayInputStream stream = doc.getContent();
из этого поста:
Я не знаю, как согласовать 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()
Хотя я понимаю, что это дополнение, возможно, не является ответом на мой первоначальный вопрос, выяснение этого было чем-то, что мне помогло в связи с рассматриваемой темой. Так что я просто хотел поделиться, если это поможет кому-то еще. Спасибо!