Запросить документы в iManage (Worksite)

Я использую Worksite API для запроса документов в iManage (версия 8.5). Я перечислил мой код ниже. Если я использую только один параметр поиска, то код работает без проблем. Однако, если я добавлю более одного параметра, он вернет либо ноль, либо ничего не получится (result.Count = 0)

Затем я изменил свой код, чтобы использовать класс ManOrQuery (предоставляемый моим Worksite API, см. Закомментированные строки), и это все еще не работает.

// Search for documents matching the specified date range.
iManageSearch rds = new iManageSearch(isession);

// Populate searchparameters
IManProfileSearchParameters searchparams = Utility.CreateUnpopulatedProfileParams(idms);

//searchparams.Add(imProfileAttributeID.imProfileCreateDate, dateRange.Value);
//searchparams.Add(imProfileAttributeID.imProfileAuthor, srchKey);
//searchparams.Add(imProfileAttributeID.imProfileFullText, srchKey);
searchparams.Add(imProfileAttributeID.imProfileDocNum, srchKey);
//searchparams.Add(imProfileAttributeID.imProfileDescription, srchKey);

// Search documents
IManDocuments results = rds.GetDocuments(Utility.BuildDatabaseList(isession.Databases), searchparams);

// tried the other way to search document


//QueryBuilder qb = new QueryBuilder();
//ManOrQuery orquery = qb.CreateORQuery;
//qb.AddORSearchFieldValue(orquery, imProfileAttributeID.imProfileDocNum, srchKey);
//qb.AddORSearchFieldValue(orquery, imProfileAttributeID.imProfileAuthor, srchKey);
//qb.AddORSearchFieldValue(orquery, imProfileAttributeID.imProfileFullText, srchKey);
//IManContents results = qb.GetContents(iworkarea, Utility.BuildDatabaseList(isession.Databases), (IManQuery)orquery);
int c = results.Count;

В моем пользовательском интерфейсе есть текстовое поле для ввода пользователями своих учетных данных. И я хотел бы сравнить значение поиска с Author, DocNumber, DocTitle а также содержание документов. Моя цель - создать такой запрос, как (docAuthor=srchKey OR docNum=srchKey OR docDescription = srchKey ...), Я бился головой, надеюсь, кто-нибудь может мне помочь. Спасибо.

PS: я также сослался на пост здесь, как получить информацию из iManage / Desksite, но это не работает для меня....

1 ответ

Я знаю, что прошло некоторое время с тех пор, как этот вопрос был опубликован, и я провел некоторый поиск в стеке потока и не смог найти много, чтобы помочь мне в этой проблеме, однако мне удалось написать некоторый код, который работает (по крайней мере, для меня) и я надеюсь, что если уже слишком поздно, чтобы помочь вам, это может помочь кому-то еще.

Я не вижу, как вы настроили базу данных в приведенном выше коде, поэтому там может быть проблема - поскольку синтаксис для добавления ваших параметров поиска кажется правильным.

Обновление: я поговорил с нашими администраторами, и похоже, что для выполнения поиска, это зависит от настроек индексатора сервера. Возможно, поэтому ваш код не работал. Для меня мне пришлось отключить индексатор из свойств базы данных в WorkSite Service Manger, чтобы он использовал SQL

            IManDMS dms = (IManDMS)Activator.CreateInstance(Type.GetTypeFromProgID("iManage.ManDMS"));

            IManSession session = dms.Sessions.Add(serverName);
            session.TrustedLogin2(userToken);

            IManDatabase database = session.Databases.ItemByName(libraryName);
            IManProfileSearchParameters searchparameters = dms.CreateProfileSearchParameters();

            // add search parameters            
            // this works (just to prove that we can search for a document)                
            searchparameters.Add(imProfileAttributeID.imProfileDocNum, "4882408");
            searchparameters.Add(imProfileAttributeID.imProfileCreateDate, new DateTime(2015, 04, 8).ToShortDateString());           

            // run the search
            IManContents searchResults = database.SearchDocuments(searchparameters, true);

            // process the results
            foreach (IManDocument item in ((IEnumerable)searchResults).OfType<IManDocument>())
            {   
                // do something with the document

            }

            session.Logout();
            dms.Sessions.RemoveByObject(session);
Другие вопросы по тегам