sdkautonomyimanage

Subscribe to a users My Matters via SDK


Using Autonomy WorkSite 8.5 SP2 SDK, I am attempting to programmicaly add a shortcut to another users My Matters which I have been told can be done by first subscribing to the other users My Matters, add the shortcut then unsubscribe.

I am therefore attempting to subscribe to another users My Matters however I am having issues with how to subscribe, with the below code I am able to locate the user's My Matters:

Dim objSFSP As IManSubscriptionFolderSearchParameters = oDms.CreateSubscriptionFolderSearchParameters
objSFSP.Add( imFolderAttributeID.imFolderOwner, sShortcutUser )
Dim objFolders As IManFolders = oMatters.FindRootSubscriptionFoldersNotSubscribedTo(oDatabaseList, objSFSP)

And from reading the COM Reference guide I should be able to subscribe to a users My Matters with the following code:

Dim objWorkArea As IManWorkArea = oSess.WorkArea
Dim oFolderShortcuts As IManSubscriptionFolderShortcuts = objWorkArea.SubscriptionFolder.SubFolders
Dim oFolderShortcut As IManFolderShortcut = oFolderShortcuts.AddNewSubscriptionFolderShortcutInheriting(objFolders)

The problem I am encountering is AddNewSubscriptionFolderShortcutInheriting() expects an object of the type IManSubScriptionFolder where FindRootSubscriptionFoldersNotSubscribedTo() returns a IManFolders object.

Can anyone point me in the direction of what I need to do to get an instance of the users My Matters as a IManSubscriptionFolder object?


Solution

  • Probably my response will be a bit late for you, but I hope that it will help anybody else who will have the same issue.

    Answering your question, in order to get an instance of other users My Matters as a IManSubscriptionFolder object you just need to loop through the collection of objFolders and cast each folder to the IManSubScriptionFolder type.

    Please find below my working solution:

    ManDMS dms = new ManDMS();
    string serverName = "dms.server.com";
    IManSession session = dms.Sessions.Add(serverName);
    string userID = "user";
    string password = "password";
    session.Login(userID, password);
    
    ManStrings dblist = new ManStrings();
    dblist.Add("TargetWsDbName");
    
    IManSubscriptionFolderSearchParameters searchParams = ndms.CreateSubscriptionFolderSearchParameters();
    string folderOwner = "AnotherUser";
    searchParams.Add(imFolderAttributeID.imFolderOwner, folderOwner);
    IManFolders nonSubscribedRootSubscriptionFolders = session.WorkArea.SubscriptionFolder.FindRootSubscriptionFoldersNotSubscribedTo(dblist, searchParams);
    
    foreach (var folder in nonSubscribedRootSubscriptionFolders)
    {
        //another user's subscription folder
        var subscriptionFolder = folder as IManSubscriptionFolder;
        if (subscriptionFolder != null)
        {
            //Current user's subscription folder shortcuts
            var subscriptionFolderShortcuts = session.WorkArea.SubscriptionFolder.SubFolders as IManSubscriptionFolderShortcuts;
            if (subscriptionFolderShortcuts != null)
            {
                subscriptionFolderShortcuts.AddNewSubscriptionFolderShortcutInheriting(subscriptionFolder);
            }
        }
    

    Please note that code from above was included for reference purpose only and it is not a production code.