Hi,
Here, a very useful class exposing a lot of functionalities of Documentum (found on the Internet https://worldofchaitu.wordpress.com/2012/11/08/documentum-dfc-standalone-sample-program/):
- To get a list of available docbase
- To create a cabinet (dm_cabinet) in docbase
- To create a folder (dm_folder object) in docbase
- To create a document (dm_document object) in docbase
- To check out a document from docbase using IDfOperations
- To check in a document to docbase using IDfOperations making use of IAPI methods
- To import a document into docbase
- To cancelcheckout a document into docbase
- To check out a document from docbase
- To check in a document to docbase
- To delete a document from docbase
- To update document’s in docbase
- To retrieve document’s attributes from docbase
- To create a virtual document in docbase
- To export a virtual document from docbase
- To view virtual document from docbase
- To retrieve document from document using IDQL
- To create and start workflow
- To view task in inbox
- To attach a lifeCycle to a document in docbase
- To promote a lifeCycle state of a document
- To demote a lifeCycle state of a document
- To expire a lifeCycle state of a document
- To resume a lifeCycle state of a document
- To assign a ACL to a document
package com.huo.test.ecm.test1; import java.util.ArrayList; import java.util.GregorianCalendar; import java.util.List; import java.util.StringTokenizer; import com.documentum.com.DfClientX; import com.documentum.com.IDfClientX; import com.documentum.fc.client.DfClient; import com.documentum.fc.client.DfQuery; import com.documentum.fc.client.IDfACL; import com.documentum.fc.client.IDfActivity; import com.documentum.fc.client.IDfClient; import com.documentum.fc.client.IDfCollection; import com.documentum.fc.client.IDfDocbaseMap; import com.documentum.fc.client.IDfDocument; import com.documentum.fc.client.IDfFolder; import com.documentum.fc.client.IDfProcess; import com.documentum.fc.client.IDfQuery; import com.documentum.fc.client.IDfQueueItem; import com.documentum.fc.client.IDfSession; import com.documentum.fc.client.IDfSessionManager; import com.documentum.fc.client.IDfSysObject; import com.documentum.fc.client.IDfType; import com.documentum.fc.client.IDfTypedObject; import com.documentum.fc.client.IDfVirtualDocument; import com.documentum.fc.client.IDfVirtualDocumentNode; import com.documentum.fc.client.IDfWorkflow; import com.documentum.fc.client.IDfWorkflowBuilder; import com.documentum.fc.client.IDfWorkitem; import com.documentum.fc.common.DfList; import com.documentum.fc.common.DfLoginInfo; import com.documentum.fc.common.IDfAttr; import com.documentum.fc.common.IDfId; import com.documentum.fc.common.IDfList; import com.documentum.fc.common.IDfLoginInfo; import com.documentum.operations.IDfCancelCheckoutNode; import com.documentum.operations.IDfCancelCheckoutOperation; import com.documentum.operations.IDfCheckinNode; import com.documentum.operations.IDfCheckinOperation; import com.documentum.operations.IDfCheckoutNode; import com.documentum.operations.IDfCheckoutOperation; import com.documentum.operations.IDfExportNode; import com.documentum.operations.IDfExportOperation; import com.documentum.operations.IDfImportNode; import com.documentum.operations.IDfImportOperation; import com.documentum.operations.IDfOperation; import com.documentum.operations.IDfOperationError; /** See https://webcache.googleusercontent.com/search?q=cache:MW2FjC-Rg7YJ:https://worldofchaitu.wordpress.com/2012/11/08/documentum-dfc-standalone-sample-program/+&cd=3&hl=en&ct=clnk&gl=lu Documentum DFC Standalone Sample Program This blog contains sample DFC code snippet of all basic functionalities of Documentum To get a list of available docbase To create a cabinet (dm_cabinet) in docbase To create a folder (dm_folder object) in docbase To create a document (dm_document object) in docbase To check out a document from docbase using IDfOperations To check in a document to docbase using IDfOperations making use of IAPI methods To import a document into docbase To cancelcheckout a document into docbase To check out a document from docbase To check in a document to docbase To delete a document from docbase To update document's in docbase To retrieve document's attributes from docbase To create a virtual document in docbase To export a virtual document from docbase To view virtual document from docbase To retrieve document from document using IDQL To create and start workflow To view task in inbox To attach a lifeCycle to a document in docbase To promote a lifeCycle state of a document To demote a lifeCycle state of a document To expire a lifeCycle state of a document To resume a lifeCycle state of a document To assign a ACL to a document **/ public class DFCWorkShop { IDfSysObject sysObject = null; IDfSession idfSession = null; IDfSessionManager sessMgr = null; public DFCWorkShop(String user, String passwd, String docbase) throws Exception { getDfSession(user, passwd, docbase); } public IDfSession getDfSession(String args1, String args2, String args3) throws Exception { IDfLoginInfo login = new DfLoginInfo(); login.setUser(args1); login.setPassword(args2); IDfClient client = DfClient.getLocalClient(); //new DfClient(); sessMgr = client.newSessionManager(); sessMgr.setIdentity(args3, login); idfSession = sessMgr.getSession(args3); if (idfSession != null) System.out.println("Session created successfully"); return idfSession; } public void releaseSession() throws Exception { sessMgr.release(idfSession); } public void getAllDocbases() throws Exception { IDfClient client = DfClient.getLocalClient(); IDfDocbaseMap docbaseMap = client.getDocbaseMap(); for (int i = 0; i < docbaseMap.getDocbaseCount(); i++) { System.out.println("Docbase Name : " + docbaseMap.getDocbaseName(i)); System.out.println("Docbase Desc : " + docbaseMap.getDocbaseDescription(i)); } } public void createCabinet() throws Exception { IDfFolder cabinet = (IDfFolder) idfSession.newObject("dm_cabinet"); if (cabinet != null) { cabinet.setObjectName("Training Cabinet XXX"); cabinet.save(); } } public void createFolder() throws Exception { IDfFolder folder = (IDfFolder) idfSession.newObject("dm_folder"); if (folder != null) { folder.setObjectName("Folder Level 2"); folder.link("/Training Cabinet XXX"); folder.save(); } } public IDfDocument createDocument() throws Exception { IDfDocument document = (IDfDocument) idfSession .newObject("dm_document"); if (document != null) { document.setObjectName("Test-Document"); document.setContentType("crtext"); document.setFile("C:\\Documentum\\config\\dfc.properties"); document.link("/Training Cabinet XXX/Folder Level 1"); document.save(); } return document; } public void updateAttributes() throws Exception { sysObject = (IDfSysObject) idfSession .getObjectByPath("/Training Cabinet XXX/Folder Level 1/New Document"); sysObject.setString("object_name", "New Document"); sysObject.setString("authors", "Prasad"); sysObject.setRepeatingString("authors", 1, "RamKumar"); sysObject.save(); } public void getAttributes() throws Exception { sysObject = (IDfSysObject) idfSession .getObjectByPath("/Training Cabinet XXX/Folder Level 1/New Document"); if (sysObject != null) { System.out.println("objectName " + sysObject.getString("object_name")); // System.out.println("authors " + sysObject.getString("authors")); String authors = sysObject.getAllRepeatingStrings("authors", ","); List list = new ArrayList(); StringTokenizer st = new StringTokenizer(authors, ","); System.out.println("length of st " + st.countTokens()); while (st.hasMoreTokens()) { list.add(st.nextElement()); } System.out.println("length " + list.size()); for (int i = 0; i < list.size(); i++) { System.out.println("Author[" + i + "] " + list.get(i)); } } } public void getTypeAttributes() throws Exception { IDfType type = (IDfType) idfSession.newObject("dm_document"); for (int i = 0; i < type.getAttrCount(); i++) { IDfAttr attr = type.getAttr(i); System.out.println("Name " + attr.getName()); System.out.println("Datatype " + attr.getDataType()); System.out.println("Length " + attr.getLength()); System.out.println("IS Repeating Attr " + attr.isRepeating()); } } public void checkoutDoc() throws Exception { sysObject = (IDfSysObject) idfSession .getObjectByPath("/Training Cabinet XXX/Folder Level 1/"); if (!sysObject.isCheckedOut()) // if it is not checked out sysObject.checkout(); System.out.println("is Check out " + sysObject.isCheckedOut()); } public void checkinDoc() throws Exception { sysObject = (IDfSysObject) idfSession .getObjectByPath("/Training Cabinet XXX/Folder Level 1/Test-Document"); if (sysObject.isCheckedOut()) { // if it is checked out sysObject.checkin(false, "CURRENT"); } } public void deleteDoc() throws Exception { sysObject = (IDfSysObject) idfSession .getObjectByPath("/Training Cabinet XXX/Folder Level 1/Test-Document"); if (sysObject != null) { sysObject.destroyAllVersions(); // delete all versions System.out.println("object destroyed….."); } } public void createVirtualDocument() throws Exception { IDfSysObject pSys = (IDfSysObject) idfSession .getObjectByPath("/Training Cabinet XXX/Folder Level 2/log4j.properties"); IDfSysObject cSys = (IDfSysObject) idfSession .getObjectByPath("/Training Cabinet XXX/Folder Level 1/trace.log"); pSys.setIsVirtualDocument(true); pSys.save(); IDfVirtualDocument vDoc = pSys.asVirtualDocument("CURRENT", false); IDfVirtualDocumentNode pNode = vDoc.getRootNode(); pSys.checkout(); IDfVirtualDocumentNode nodeChild1 = vDoc.addNode(pNode, null, cSys .getChronicleId(), "CURRENT", false, false); pSys.checkin(false, "CURRENT"); } public void viewVirtualDocument() throws Exception { IDfSysObject pSys = (IDfSysObject) idfSession .getObjectByPath("/Training Cabinet XXX/Folder Level 2/log4j.properties"); if (pSys.isVirtualDocument()) { System.out.println("virtual document –> true"); IDfVirtualDocument vDoc = pSys.asVirtualDocument("CURRENT", false); IDfVirtualDocumentNode pNode = vDoc.getRootNode(); System.out.println("Iterating thru the lis to get the child nodes"); for (int i = 0; i < pNode.getChildCount(); i++) { IDfVirtualDocumentNode cNode = pNode.getChild(i); System.out.println("Child Name " + cNode.getSelectedObject().getObjectName()); } } } public void exportVirtualDocument() throws Exception { System.out.println("exporting virtual document"); IDfClientX clientx = new DfClientX(); IDfExportOperation expOperation = clientx.getExportOperation(); IDfSysObject sysObject = (IDfSysObject) idfSession .getObjectByPath("/Training Cabinet XXX/Folder Level 2/log4j.properties"); if (sysObject.isVirtualDocument()) { IDfVirtualDocument Vdoc = sysObject.asVirtualDocument("CURRENT", false); IDfExportNode expNode = (IDfExportNode) expOperation.add(sysObject); expOperation.setDestinationDirectory(expOperation .getDefaultDestinationDirectory()); boolean flag = expOperation.execute(); displayError(expOperation, flag); } } public void cancelCheckoutDocument() throws Exception { IDfClientX clientx = new DfClientX(); IDfCancelCheckoutOperation cancelcheckoutOper = clientx .getCancelCheckoutOperation(); sysObject = (IDfSysObject) idfSession .getObjectByPath("/Training Cabinet XXX/Folder Level 2/log4j.properties"); IDfCancelCheckoutNode node = (IDfCancelCheckoutNode) cancelcheckoutOper .add(sysObject); boolean flag = cancelcheckoutOper.execute(); displayError(cancelcheckoutOper, flag); } public void checkoutDocument() throws Exception { IDfClientX clientx = new DfClientX(); IDfCheckoutOperation checkoutOper = clientx.getCheckoutOperation(); System.out.println("Checkout Dir " + checkoutOper.getDefaultDestinationDirectory()); checkoutOper.setDestinationDirectory(checkoutOper .getDefaultDestinationDirectory()); sysObject = (IDfSysObject) idfSession .getObjectByPath("/Training Cabinet XXX/Folder Level 2/log4j.properties"); IDfCheckoutNode node = (IDfCheckoutNode) checkoutOper.add(sysObject); boolean flag = checkoutOper.execute(); displayError(checkoutOper, flag); } public void checkinDocument() throws Exception { IDfClientX clientx = new DfClientX(); IDfCheckinOperation checkinOper = clientx.getCheckinOperation(); IDfCheckinNode node = (IDfCheckinNode) checkinOper.add(sysObject); System.out.println("Flag —->" + checkinOper.execute()); } public void importDocument() throws Exception { IDfSysObject sysObject = (IDfFolder) idfSession .getObjectByPath("/Training Cabinet XXX/Folder Level 2"); System.out.println("Object ID " + sysObject.getObjectId()); IDfClientX clientx = new DfClientX(); IDfImportOperation importOper = clientx.getImportOperation(); importOper.setSession(idfSession); if (importOper == null) System.out.println("operation object is null"); importOper.setDestinationFolderId(sysObject.getObjectId()); importOper.setVersionLabels("imported using operation"); IDfImportNode node = (IDfImportNode) importOper .add("C:\\Documentum\\config\\log4j.properties"); node.setFormat("pdf"); boolean flag = importOper.execute(); displayError(importOper, flag); } public void displayError(IDfOperation operation, boolean flag) throws Exception { if (!flag) { IDfList errlist = operation.getErrors(); for (int i = 0; i < errlist.getCount(); i++) { IDfOperationError errOperation = (IDfOperationError) errlist .get(i); System.out.println("Error MSG " + errOperation.getMessage()); } } } public void dmclAPI() throws Exception { System.out.println("Starting..."); IDfSysObject sysObj = (IDfSysObject) idfSession .getObjectByQualification("dm_document where object_name='Test-Document'"); String rObjectId = sysObj.getObjectId().getId(); String name = (String) idfSession.apiGet("get", rObjectId+ ",object_name"); System.out.println("Name : " + name); // idfSession.apiSet("set",rObjectId+",title","sample-doc"); idfSession.apiExec("link",rObjectId+",/Training Cabinet XXX/Folder Level 2"); System.out.println("Linked " + idfSession.apiExec("save", rObjectId)); } public void collection() throws Exception { IDfQuery query = new DfQuery(); query .setDQL("select * from dm_document where object_name='New Document' and any r_version_label like 'CURRENT%'"); IDfCollection coll = query.execute(idfSession, 0); while (coll.next()) { IDfTypedObject typeObject = (IDfTypedObject) coll.getTypedObject(); System.out.println("Object Name " + typeObject.getString("r_object_id")); System.out.println("creation date " + typeObject.getString("r_creation_date")); } if (coll != null) coll.close(); } public void startWorkflow() throws Exception { // to get the attachment document IDfSysObject sysObj = (IDfSysObject) idfSession .getObjectByQualification("dm_document where object_name='DFCtest'"); // to get the Workflow Template IDfProcess process = (IDfProcess) idfSession .getObjectByQualification("dm_process where object_name like '%INDIA_TIMES%'"); // to create a Workflo Builder to start a workflow IDfWorkflowBuilder builder = idfSession.newWorkflowBuilder(process .getObjectId()); IDfId wfId = builder.initWorkflow(); // get the First Activity IDfList startActivityNames = builder.getStartActivityNames(); IDfList startActivities = builder.getStartActivityIds(); String activityName = startActivityNames.getString(0); IDfId activityID = (IDfId) startActivities.get(0); IDfActivity activity = (IDfActivity) idfSession.getObject(activityID); // to get the Package Name , Port and Package DocType int nPorts = activity.getPortCount(); String InputPortName = null; String PkgType = null; String PkgName = null; for (int j = 0; j < nPorts; j++) { System.out.println("Port Name: " + activity.getPortName(j) + ", " + "Port Type = " + activity.getPortType(j)); if (activity.getPortType(j).equals("INPUT")) { InputPortName = activity.getPortName(j); PkgType = activity.getPackageType(j); PkgName = activity.getPackageName(j); } } // to Add the attachment document to List IDfList dfList = new DfList(); dfList.append(sysObj.getObjectId()); IDfId wfId2 = builder.runWorkflow(); // Add a Package to Workflow Builder builder.addPackage(activityName, InputPortName, PkgName, PkgType, null, false, dfList); System.out.println("package added"); } public void getInbox() throws Exception { // IDfCollection getTasks(String userName, int filter, String additionalAttributes, String orderBy) IDfCollection tasks = idfSession.getTasks("huoadm", IDfSession.DF_TASKS, "name, date_sent, message ", "task_name"); try { while (tasks.next()) { IDfWorkitem wi = (IDfWorkitem) idfSession.getObject(tasks.getId("item_id")); IDfId queueItemId = wi.getQueueItemId(); IDfQueueItem qi = (IDfQueueItem) idfSession.getObject(queueItemId); System.out.println(tasks.getString("sent_by") + " " + tasks.getString("task_name") + " " + tasks.getString("date_sent") + " " + tasks.getString("message") + " " + qi.getItemName()); IDfActivity dfActivity = wi.getActivity(); System.out.println("\tActivity Information : " + dfActivity.getString("object_name")); IDfCollection packColl = null; try { packColl = wi.getPackages(""); while (packColl.next()) { IDfSysObject sysObj = (IDfSysObject) idfSession.getObject(packColl.getId("r_component_id")); System.out.println("\t Package Information: " + sysObj.getString("object_name")); } } finally { if (packColl != null) packColl.close(); } // to finish a Task or Workitem // finishTask(wi); } } finally { if (tasks != null) tasks.close(); } } public void finishTask(IDfWorkitem wi) throws Exception { if (wi.getRuntimeState() == IDfWorkflow.DF_WF_STATE_DORMANT) { wi.acquire(); } wi.complete(); } public void attachLC() throws Exception { IDfSysObject mDocs = (IDfSysObject) idfSession .getObjectByQualification("dm_document where object_name='UniqueDoc' "); IDfSysObject procObj = (IDfSysObject) idfSession .getObjectByQualification("dm_policy where object_name='Training_LC' "); mDocs.attachPolicy(procObj.getObjectId(), "Author", ""); } public void promoteLC(String State) throws Exception { IDfSysObject mDocs = (IDfSysObject) idfSession .getObjectByQualification("dm_document where object_name='UniqueDoc' "); mDocs.promote(State, false, false); } public void demoteLC(String State) throws Exception { IDfSysObject mDocs = (IDfSysObject) idfSession .getObjectByQualification("dm_document where object_name='UniqueDoc' "); mDocs.demote(State, false); } public void expireLC(String State) throws Exception { IDfSysObject mDocs = (IDfSysObject) idfSession .getObjectByQualification("dm_document where object_name='UniqueDoc' "); mDocs.suspend(State, false, false); } public void resumeLC(String State) throws Exception { IDfSysObject mDocs = (IDfSysObject) idfSession .getObjectByQualification("dm_document where object_name='UniqueDoc' "); mDocs.resume(State, false, false, false); } public void assignACL() throws Exception { IDfSysObject mDocs = (IDfSysObject) idfSession .getObjectByQualification("dm_document where object_name='UniqueDoc' "); IDfACL dfACL = (IDfACL) idfSession .getObjectByQualification("dm_acl where object_name='TrainingACL' "); mDocs.setACL(dfACL); mDocs.save(); } public static void main(String[] args) throws Exception { String user = "huoadm"; String passwd = "pass_4_huoadm"; String docbase = "MY_DOCBASE_DEV"; DFCWorkShop object = new DFCWorkShop(user, passwd, docbase); try { // To get a list of available docbase /* Session created successfully Docbase Name : MY_DOCBASE2_DEV Docbase Desc : Company Repository 2 Docbase Name : MY_DOCBASE_DEV Docbase Desc : Company Repository Docbase Name : GLOBALR Docbase Desc : Global Registry Repository Docbase Name : MY_DOCBASE3_DEV Docbase Desc : Company Repository 3 Docbase Name : MY_DOCBASE4_DEV Docbase Desc : Company Repository 4 */ // object.getAllDocbases(); // To create a cabinet (dm_cabinet) in docbase // object.createCabinet(); // To create a folder (dm_folder object) in docbase // object.createFolder(); // To create a document (dm_document object) in docbase // object.createDocument(); // To check out a document from docbase using IDfOperations // object.checkoutDocument(); // To check in a document to docbase using IDfOperations // object.checkinDocument(); // making use of IAPI methods // object.dmclAPI(); // To import a document into docbase // object.importDocument(); // To cancelcheckout a document into docbase // object.cancelCheckoutDocument(); // To check out a document from docbase // object.checkoutDoc(); // To check in a document to docbase // object.checkinDoc(); // To delete a document from docbase // object.deleteDoc(); // To update document's in docbase // object.updateAttributes(); // To retrieve document's attributes from docbase // object.getAttributes(); // To create a virtual document in docbase // object.createVirtualDocument(); // To export a virtual document from docbase // object.exportVirtualDocument(); // To view virtual document from docbase // object.viewVirtualDocument(); // To retrieve document from document using IDQL // object.collection(); // To create and start workflow // object.startWorkflow(); // to view task in inbox object.getInbox(); // To attach a lifeCycle to a document in docbase // object.attachLC(); // To promote a lifeCycle state of a document // object.promoteLC("Review"); // To demote a lifeCycle state of a document // object.demoteLC("Author"); // To expire a lifeCycle state of a document // object.expireLC("Author"); // To resume a lifeCycle state of a document // object.resumeLC("Author"); // To assign a ACL to a document // object.assignACL(); } finally { // to release a docbase session object.releaseSession(); } } }
Kind regards,
Huseyin