Запросить документы в 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);