Hi,

Just a simple post concerning a useful functionality provided by Documentum in com.documentum.xml.xdql DFC package.

As you would see in my previous post http://www.javablog.fr/xstream-presentation-serialization-deserialization-xml.html, there is another solutions/frameworks like Xstream for the serialization and deserialization of XML in Java applications.

SOLUTION 1

This package com.documentum.xml.xdql contains only the Interface IDfXmlQuery. This interface provides functionality for running queries against a repository, returning the results as XML.
The structure of the XML output is a root element, specified by setRootTag, followed by each query result row. The following is an example of the XML output:

<?xml version="1.0"?>
 <root>
     <object ID="09017e1080001932">
         <r_object_id>09017e1080001932</r_object_id>
         <object_name>catalog A</object_name>
     </object>
     <object ID="09017e10800019aa">
         <r_object_id>09017e10800019aa</r_object_id>
         <object_name>catalog B</object_name>
     </object>
 </root>

There are many options available for customizing the XML output, such as specifying the whether object content should be included in the output. Each option has a default value, so you only need to set the options that you want to override.

 
 
Sample DFC code to get document as XML

package com.huo.test.ecm.test2;

import java.io.FileOutputStream;
import java.io.IOException;

import com.documentum.fc.client.DfClient;
import com.documentum.fc.client.IDfClient;
import com.documentum.fc.client.IDfQuery;
import com.documentum.fc.client.IDfSession;
import com.documentum.fc.client.IDfSessionManager;
import com.documentum.fc.client.IDfSysObject;
import com.documentum.fc.common.DfException;
import com.documentum.fc.common.DfLoginInfo;
import com.documentum.fc.common.IDfLoginInfo;
import com.documentum.xml.xdql.DfXmlQuery;
import com.documentum.xml.xdql.IDfXmlQuery;

/*
 Documentum DFC Standalone Sample Program

 Sample DFC code to get document as XML
*/
public class DocumentRecordsAsXMLTest {

	IDfSysObject sysObject = null;
	IDfSession idfSession = null;
	IDfSessionManager sessMgr = null;

	public DocumentRecordsAsXMLTest(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 String getdm_documentRecordsAsXML(String dql, String fileStoring) throws DfException {
		System.out.println("#################################################");

		IDfXmlQuery objDfXmlQuery = new DfXmlQuery();
		objDfXmlQuery.init();
		objDfXmlQuery.setDql(dql);
		objDfXmlQuery.setContentAsLink(true);
		objDfXmlQuery.setMetaDataAsAttributes(false);
		//objDfXmlQuery.setPreserveSpace(true);
		objDfXmlQuery.setRepeatingAsNested(true);
		objDfXmlQuery.setRepeatingIncludeIndex(true);
		objDfXmlQuery.includeMetaData(true);
		objDfXmlQuery.useNullAttributeIndicator(true);
		objDfXmlQuery.includeDCTMChunkInfo(true);
		objDfXmlQuery.includeContent(true);
		objDfXmlQuery.execute(IDfQuery.DF_READ_QUERY, idfSession);
		String xml = objDfXmlQuery.getXMLString();
		System.out.println("XML is  : " + xml);
		
		FileOutputStream fos = null;
		 try {
			fos = new FileOutputStream(fileStoring);
			objDfXmlQuery.getXMLString(fos);
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			if(fos != null){
			 try { fos.flush(); } catch (IOException e) { e.printStackTrace(); }
			 try { fos.close(); } catch (IOException e) { e.printStackTrace(); }
			}
		}
		
		return xml;
	}

	
	
	public static void main(String[] args) throws Exception {

		String user = "myuser";
		String passwd = "passeord4myus";
		String docbase = "MY_DOC_BASE";
		DocumentRecordsAsXMLTest object = new DocumentRecordsAsXMLTest(user, passwd, docbase);

		try {
			// To get document as XML
			object.getdm_documentRecordsAsXML("select * from dm_document where r_object_id='090xxxxxxxxxxxxf1d'", "C:\\Workspaces\\TestDCTMHUO\\src\\com\\huo\\test\\ecm\\test2\\documentXML.xml");
		} finally {
			// to release a docbase session
			object.releaseSession();
		}
	}
}

….outputs:

Session created successfully
#################################################
XML is  : <?xml version="1.0"?>
<root>
    <object ID="090xxxxxxxxxxxxf1d">
        <r_object_id>090xxxxxxxxxxxxf1d</r_object_id>
        <object_name>Test 12</object_name>
        <title>null</title>
        <subject>null</subject>
        <resolution_label>null</resolution_label>
        <owner_name>gedadm</owner_name>
        <owner_permit>6</owner_permit>
        <group_name>null</group_name>
        <group_permit>1</group_permit>
        <world_permit>1</world_permit>
        <log_entry>null</log_entry>
        <acl_domain>MYDOCBASEDEV</acl_domain>
        <acl_name>dm_450220c580068103_8005a971</acl_name>
        <language_code>null</language_code>
        <r_object_type>huo_client_document</r_object_type>
        <r_creation_date>12/02/2014 15:20:56</r_creation_date>
        <r_modify_date>18/11/2016 15:18:21</r_modify_date>
        <a_content_type>dxl</a_content_type>
        <content r_object_id="090xxxxxxxxxxxxf1d">dctm://MY_DOC_BASE/090xxxxxxxxxxxxf1d?DMS_OBJECT_SPEC=OBJECT_ID</content>
    </object>
</root>

 
 
Document with aspect attached

// To get document-aspect as XML
object.getdm_documentRecordsAsXML("select r_object_id, r_modifier, r_modify_date, r_aspect_name, object_name, aspect_huo.huo_request_num from dm_document where r_object_id='090xxxxxxxxxxxx36'", "C:\\Workspaces\\TestDCTMHUO\\src\\com\\huo\\test\\ecm\\test2\\documentXML.xml");

….outputs:

Session created successfully
#################################################
XML is  : <?xml version="1.0"?>
<root>
    <object ID="090xxxxxxxxxxxx36">
        <r_object_id>090xxxxxxxxxxxx36</r_object_id>
        <r_modifier>gedadm</r_modifier>
        <r_modify_date>19/10/2016 14:38:41</r_modify_date>
        <r_aspect_name>
            <r_aspect_name-value index="0">aspect_huo</r_aspect_name-value>
            <r_aspect_name-value index="1">aspect_copy</r_aspect_name-value>
            <r_aspect_name-value index="2">aspect_email</r_aspect_name-value>
        </r_aspect_name>
        <object_name>HUO value object name.
            Residential II S.A.</object_name>
        <aspect_huo.huo_request_num>900971</aspect_huo.huo_request_num>
        <content r_object_id="090xxxxxxxxxxxx36">dctm://MY_DOC_BASE/090xxxxxxxxxxxx36?DMS_OBJECT_SPEC=OBJECT_ID</content>
    </object>
</root>

 
 
 

SOLUTION 2

Documentum proposes methods accessible via API and DFC:

System.out.println(dfDocument.getString("_xml_string"));


API> get,c,090XXXXXXXXXXXXXXX03,_xml_string
...

<dctm-attr name="r_object_id" type="ID" repeating="true" index="0"><![CDATA[090XXXXXXXXXXXXXXX03]]></dctm-attr>
<dctm-attr name="object_name" type="STRING"><![CDATA[My doc name]]></dctm-attr>
<dctm-attr name="r_object_type" type="STRING"><![CDATA[my_document]]></dctm-attr>
<dctm-attr name="title" type="STRING"><![CDATA[]]></dctm-attr>
<dctm-attr name="subject" type="STRING"><![CDATA[]]></dctm-attr>
<dctm-attr name="authors" type="STRING" repeating="true" index="0"><![CDATA[]]></dctm-attr>
<dctm-attr name="keywords" type="STRING" repeating="true" index="0"><![CDATA[]]></dctm-attr>
<dctm-attr name="a_application_type" type="STRING"><![CDATA[]]></dctm-attr>
<dctm-attr name="a_status" type="STRING"><![CDATA[]]></dctm-attr>
<dctm-attr name="r_creation_date" type="TIME"><![CDATA[2015-09-22 11:38:22]]></dctm-attr>
<dctm-attr name="r_modify_date" type="TIME"><![CDATA[2015-09-22 11:38:22]]></dctm-attr>
<dctm-attr name="r_modifier" type="STRING"><![CDATA[useradm]]></dctm-attr>
<dctm-attr name="r_access_date" type="TIME"><![CDATA[2018-12-18 13:49:03]]></dctm-attr>
<dctm-attr name="a_is_hidden" type="BOOL"><![CDATA[F]]></dctm-attr>
<dctm-attr name="i_is_deleted" type="BOOL"><![CDATA[F]]></dctm-attr>
<dctm-attr name="a_retention_date" type="TIME"><![CDATA[]]></dctm-attr>
<dctm-attr name="a_archive" type="BOOL"><![CDATA[F]]></dctm-attr>
<dctm-attr name="a_compound_architecture" type="STRING"><![CDATA[]]></dctm-attr>
<dctm-attr name="a_link_resolved" type="BOOL"><![CDATA[F]]></dctm-attr>
<dctm-attr name="i_reference_cnt" type="INT"><![CDATA[1]]></dctm-attr>
<dctm-attr name="i_has_folder" type="BOOL"><![CDATA[T]]></dctm-attr>
<dctm-attr name="i_folder_id" type="ID" repeating="true" index="0"><![CDATA[0bXXXXXXXXXXXXXXXXXf9]]></dctm-attr>
<dctm-attr name="r_composite_id" type="ID" repeating="true" index="0"><![CDATA[]]></dctm-attr>
<dctm-attr name="r_composite_label" type="STRING" repeating="true" index="0"><![CDATA[]]></dctm-attr>
<dctm-attr name="r_component_label" type="STRING" repeating="true" index="0"><![CDATA[]]></dctm-attr>
<dctm-attr name="r_order_no" type="INT" repeating="true" index="0"><![CDATA[]]></dctm-attr>
<dctm-attr name="r_link_cnt" type="INT"><![CDATA[0]]></dctm-attr>
<dctm-attr name="r_link_high_cnt" type="INT"><![CDATA[0]]></dctm-attr>
<dctm-attr name="r_assembled_from_id" type="ID"><![CDATA[0000000000000000]]></dctm-attr>
<dctm-attr name="r_frzn_assembly_cnt" type="INT"><![CDATA[0]]></dctm-attr>
<dctm-attr name="r_has_frzn_assembly" type="BOOL"><![CDATA[F]]></dctm-attr>
<dctm-attr name="resolution_label" type="STRING"><![CDATA[]]></dctm-attr>
<dctm-attr name="r_is_virtual_doc" type="INT"><![CDATA[0]]></dctm-attr>
<dctm-attr name="i_contents_id" type="ID"><![CDATA[060XXXXXXXXXXXXXXXXX7]]></dctm-attr>
<dctm-attr name="a_content_type" type="STRING"><![CDATA[pdf]]></dctm-attr>
<dctm-attr name="r_page_cnt" type="INT"><![CDATA[1]]></dctm-attr>
<dctm-attr name="r_content_size" type="INT"><![CDATA[183446]]></dctm-attr>
<dctm-attr name="a_full_text" type="BOOL"><![CDATA[T]]></dctm-attr>
<dctm-attr name="a_storage_type" type="STRING"><![CDATA[filestore_01]]></dctm-attr>
<dctm-attr name="i_cabinet_id" type="ID"><![CDATA[0cXXXXXXXXXXXXXXXX02]]></dctm-attr>
<dctm-attr name="owner_name" type="STRING"><![CDATA[useradm]]></dctm-attr>
<dctm-attr name="owner_permit" type="INT"><![CDATA[1]]></dctm-attr>
<dctm-attr name="group_name" type="STRING"><![CDATA[docu]]></dctm-attr>
<dctm-attr name="group_permit" type="INT"><![CDATA[1]]></dctm-attr>
<dctm-attr name="world_permit" type="INT"><![CDATA[1]]></dctm-attr>
<dctm-attr name="i_antecedent_id" type="ID"><![CDATA[0000000000000000]]></dctm-attr>
<dctm-attr name="i_chronicle_id" type="ID"><![CDATA[09XXXXXXXXXXXXXX03]]></dctm-attr>
<dctm-attr name="i_latest_flag" type="BOOL"><![CDATA[T]]></dctm-attr>
<dctm-attr name="r_lock_owner" type="STRING"><![CDATA[]]></dctm-attr>
<dctm-attr name="r_lock_date" type="TIME"><![CDATA[]]></dctm-attr>
<dctm-attr name="r_lock_machine" type="STRING"><![CDATA[]]></dctm-attr>
<dctm-attr name="log_entry" type="STRING"><![CDATA[]]></dctm-attr>
<dctm-attr name="r_version_label" type="STRING" repeating="true" index="0"><![CDATA[1.0]]></dctm-attr>
<dctm-attr name="r_version_label" type="STRING" repeating="true" index="1"><![CDATA[CURRENT]]></dctm-attr>
<dctm-attr name="i_branch_cnt" type="INT"><![CDATA[0]]></dctm-attr>
<dctm-attr name="i_direct_dsc" type="BOOL"><![CDATA[F]]></dctm-attr>
<dctm-attr name="r_immutable_flag" type="BOOL"><![CDATA[F]]></dctm-attr>
<dctm-attr name="r_frozen_flag" type="BOOL"><![CDATA[F]]></dctm-attr>
<dctm-attr name="r_has_events" type="BOOL"><![CDATA[F]]></dctm-attr>
<dctm-attr name="acl_domain" type="STRING"><![CDATA[MYDOCBASEDEV]]></dctm-attr>
<dctm-attr name="acl_name" type="STRING"><![CDATA[dm_450XXXXXXXXXXXXXXXea_8YYY5]]></dctm-attr>
<dctm-attr name="a_special_app" type="STRING"><![CDATA[]]></dctm-attr>
<dctm-attr name="i_is_reference" type="BOOL"><![CDATA[F]]></dctm-attr>
<dctm-attr name="r_creator_name" type="STRING"><![CDATA[useradm]]></dctm-attr>
<dctm-attr name="r_is_public" type="BOOL"><![CDATA[F]]></dctm-attr>
<dctm-attr name="r_policy_id" type="ID"><![CDATA[0000000000000000]]></dctm-attr>
<dctm-attr name="r_resume_state" type="INT"><![CDATA[0]]></dctm-attr>
<dctm-attr name="r_current_state" type="INT"><![CDATA[0]]></dctm-attr>
<dctm-attr name="r_alias_set_id" type="ID"><![CDATA[0000000000000000]]></dctm-attr>
<dctm-attr name="a_effective_date" type="TIME" repeating="true" index="0"><![CDATA[]]></dctm-attr>
<dctm-attr name="a_expiration_date" type="TIME" repeating="true" index="0"><![CDATA[]]></dctm-attr>
<dctm-attr name="a_publish_formats" type="STRING" repeating="true" index="0"><![CDATA[]]></dctm-attr>
<dctm-attr name="a_effective_label" type="STRING" repeating="true" index="0"><![CDATA[]]></dctm-attr>
<dctm-attr name="a_effective_flag" type="STRING" repeating="true" index="0"><![CDATA[]]></dctm-attr>
<dctm-attr name="a_category" type="STRING"><![CDATA[]]></dctm-attr>
<dctm-attr name="language_code" type="STRING"><![CDATA[]]></dctm-attr>
<dctm-attr name="a_is_template" type="BOOL"><![CDATA[F]]></dctm-attr>
<dctm-attr name="a_controlling_app" type="STRING"><![CDATA[]]></dctm-attr>
<dctm-attr name="r_full_content_size" type="DOUBLE"><![CDATA[183446]]></dctm-attr>
<dctm-attr name="a_extended_properties" type="STRING" repeating="true" index="0"><![CDATA[]]></dctm-attr>
<dctm-attr name="a_is_signed" type="BOOL"><![CDATA[F]]></dctm-attr>
<dctm-attr name="a_last_review_date" type="TIME"><![CDATA[]]></dctm-attr>
<dctm-attr name="i_retain_until" type="TIME"><![CDATA[]]></dctm-attr>
<dctm-attr name="r_aspect_name" type="STRING" repeating="true" index="0"><![CDATA[my_aspect]]></dctm-attr>
<dctm-attr name="i_retainer_id" type="ID" repeating="true" index="0"><![CDATA[]]></dctm-attr>
<dctm-attr name="i_partition" type="INT"><![CDATA[0]]></dctm-attr>
<dctm-attr name="i_is_replica" type="BOOL"><![CDATA[F]]></dctm-attr>
<dctm-attr name="i_vstamp" type="INT"><![CDATA[1]]></dctm-attr>
....
<dctm-attr name="metdata_id" type="INT"><![CDATA[121231]]></dctm-attr>
<dctm-attr name="metdata_name" type="STRING"><![CDATA[MY DOC user Name]]></dctm-attr>
<dctm-attr name="business_year" type="STRING"><![CDATA[2014]]></dctm-attr>
....

 
 
 

That’s all!!!

Huseyin OZVEREN