Подпишитесь на пользователей My Matters через SDK

Используя Autonomy WorkSite 8.5 SP2 SDK, я пытаюсь программно добавить ярлык для других пользователей My Matters, что, как мне сказали, можно сделать, сначала подписавшись на другие пользователи My Matters, добавив ярлык, а затем отписавшись.

Поэтому я пытаюсь подписаться на My Matters других пользователей, однако у меня возникают проблемы с тем, как подписаться, с помощью приведенного ниже кода я могу найти My Matters пользователя:

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

И, прочитав справочное руководство COM, я смогу подписаться на пользователей My Matters со следующим кодом:

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

Проблема, с которой я сталкиваюсь, заключается в том, что AddNewSubscriptionFolderShortcutInheriting() ожидает объект типа IManSubScriptionFolder, где FindRootSubscriptionFoldersNotSubscribedTo() возвращает объект IManFolders.

Может ли кто-нибудь указать мне, что мне нужно сделать, чтобы получить экземпляр пользователей My Matters в качестве объекта IManSubscriptionFolder?


person Lima    schedule 15.05.2015    source источник


Ответы (1)


Возможно, мой ответ будет для вас немного запоздалым, но я надеюсь, что он поможет всем, у кого возникнет такая же проблема.

Отвечая на ваш вопрос, чтобы получить экземпляр My Matters других пользователей в качестве объекта IManSubscriptionFolder, вам просто нужно пройтись по коллекции objFolders и привести каждую папку к типу IManSubScriptionFolder.

Пожалуйста, найдите ниже мое рабочее решение:

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);
        }
    }

Обратите внимание, что приведенный выше код был включен только для справки и не является производственным кодом.

person RUSH    schedule 22.05.2015
comment
Спасибо, это очень похоже на то, что я в итоге разработал. - person Lima; 02.10.2015