Sagui Itay - Unity Assets, software development and mobile games

Connecting to Documentum using .Net

I’ve spoke in an earlier post about working with Documentum in .Net. In this post, I’ll show you how to connect to a DocBase, and get the list of cabinets. The following code will connect to a DocBase. It assumes that you have a Username, Password and DocBase variables declared that contain valid information:

// Get a client object
DfClientX _clientx = new DfClientX();
IDfClient _client = _clientx.getLocalClient();

if (_client == null)
    throw new Exception("Failed creating Documentum client");

// Retrieve the client's version
Console.WriteLine("Using DFC version '{0}'", _clientx.getDFCVersion());

// Create an object with the credentials of the user
IDfLoginInfo _loginInfoObj = _clientx.getLoginInfo();
_loginInfoObj.setUser(Username);
_loginInfoObj.setPassword(Password);
// Create a new session to the requested DocBase
IDfSession _session = _client.newSession(DocBase, _loginInfoObj);
if (_session == null  !_session.isConnected())
{
    Console.WriteLine("Failed conecting to Documentum");
    if (_session != null)
    {
        Console.WriteLine("DFC Messages:\r\n{0}", _session.getMessage(1));
    }
    return;
}
Console.WriteLine("Using server version '{0}'", _session.getServerVersion());

Now, once we’re connected to the Documentum DocBase, we’ll list all the cabinets:

IDfQuery query = _clientx.getQuery();
// Quering the dm_cabinet table returns only items of dm_cabinet type
query.setDQL("SELECT r_object_id, object_name, title FROM dm_cabinet");
// Query the session for the cabinets
IDfCollection col = query.execute(_session, (int)DFCLib.tagDfQueryTypes.IDfQuery_DF_READ_QUERY);
// Loop through all the items in the collection
while (col.next())
{
    // Get the current item from the collection
    IDfTypedObject typedObj = col.getTypedObject();
    // Print the item's name
    Console.WriteLine("Cabinet name: {0}", typedObj.getString(object_name))
}
col.Close();

One of the most important thing to remember, is that you have to close the IDfCollection. Each session has a very limited number of collections it can have open at the same time.
If you need more collections, I would suggest just caching the items inside a .Net collection for later use.