2

Worksite API を使用して、iManage (バージョン 8.5) でドキュメントを照会しています。以下にコードをリストしました。検索パラメータを 1 つだけ使用すると、コードは問題なく動作します。ただし、複数のパラメーターを追加すると、null または結果が返されません (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;

私の UI には、ユーザーが検索資格情報を入力するためのテキスト ボックスがあります。Authorそして、検索値を、DocNumberDocTitleおよび文書の内容と比較したいと思います。私の目標は、のようなクエリを作成すること(docAuthor=srchKey OR docNum=srchKey OR docDescription = srchKey ...)です。私は頭を叩いています。誰かが私を助けてくれることを願っています。ありがとうございました。

PS: iManage / Desksite から情報を取得する方法についての記事も参照しましたが、うまくいきません....

4

1 に答える 1

2

この質問が投稿されてから少し経ちましたが、stackoverflow を検索しましたが、この問題を解決するために役立つ情報を見つけることができませんでしたが、機能するコードをいくつか書くことができました (少なくとも私にとっては)。 )そして、あなたを助けるには遅すぎる場合、それが他の誰かを助けるかもしれないことを願っています.

上記のコードでデータベースをどのように設定したかわかりません。検索パラメーターを追加するための構文が正しいように見えるため、そこに問題がある可能性があります。

更新: 管理者と話しましたが、検索を行うには、サーバーのインデクサー設定に依存しているようです。これが、コードが機能しない原因である可能性があります。私にとっては、ワークサイト サービス マネージャーのデータベース プロパティからインデクサーを無効にして、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);
于 2015-05-14T08:41:10.313 に答える