1

私は Domino .NET ラッパー クラスを使用して、ユーザーが電子メールを Lotus 受信トレイから winform にドラッグできるようにしています。

ドキュメントへのメモの URL を含むデータ オブジェクトを次の形式で取得しています。

notes://server/replicaID/viewID/documentUNID

そして、一致するドキュメントを返すことになっている Domino.NotesSession.Resolve(pUrl) に渡します。実際、ブラウザにリンクを貼り付けると (notes:// を http:// に置き換えると効果的です。メールの HTML バージョンが表示されます) 動作します。

しかし、Resolve メソッドは、実際のドキュメントではなく、NotesView と思われるものを返し続けます。

Dim notesSession as Domino.NotesSession = ' ...  Initialize session here
Dim notesURL as string = "notes://server/replicaID/viewId/documentID"

Dim draggedDocument = notesSession.Resolve(notesURL)
' Here, I do get an actual document, but its UnID matches the viewId 
' part of the url, not the document.

URL から viewID を削除しようとしましたが、成功しませんでした。ドキュメントを正常に取得する唯一の方法は、OLE オブジェクト (lotus 名前空間) を使用することです。

' Get UnId from url
Dim unid as String = notesURL.Split("/").Last()

' Get UI Automation object
Dim workspace = CreateObject("Notes.NotesUIWorkspace")
' Get currently open DB (the where the drag event was initiated)
Dim notesDb = workspace.CURRENTDATABASE.Database
' Retrieve matching document
Dim notesDoc = notesDb.GetDocumentByUNID(unid)

この方法は機能しますが、UI オートメーション クラス (OLE) ではなく、Domino の COM ラッパー (.NET) を使用したいと考えています。

では、これらのメモの URL は相互運用でどのように機能するのでしょうか? データベースを直接知らなくても、一致するドキュメントを取得する方法はありますか? ドキュメントの URL を指定すると、Resolve メソッドがビュー オブジェクトを返すのはなぜですか?

どんな助けでも大歓迎です。

4

2 に答える 2

2

Resolve メソッドのバグに対処しているようです。しかし、あなたの2番目のアイデアは合理的な回避策のようです。ただし、 を呼び出す必要はないと思いCreateObjectます。ラッパー クラスは正常に動作するはずです。

最初のコード サンプル (Domino.NotesSession オブジェクト) に NotesSession があるので、それに対して Resolve メソッドを呼び出して、持っている NotesUrl に基づいてデータベース オブジェクトを取得できるはずです。ビューを取得する必要はなく、データベース オブジェクトだけを取得する必要があります。そのオブジェクトから GetDocumentByUNID メソッドを呼び出して、必要なドキュメントを取得できます。Resolve メソッドでそれができればいいのですが、それで十分に近づけるように思えます。

Dim notesSession as Domino.NotesSession =  <Session>
Dim notesURL as string = "notes://server/replicaID"    
Dim notesDocUNID as string = "parse URL to get the UNID"

Dim notesDatabase = notesSession.Resolve(notesURL)
Dim document = notesDatabase.GetDocumentByUNID(notesDocUNID)
于 2012-07-06T15:03:25.527 に答える
0

Session.resolve は NotesDocument を返しません。これは汎用オブジェクトを返します (私の考えでは、すべての Notes データ オブジェクトの基本クラスである Base と言うでしょう)。それに応じて変数を薄暗くし、タイプを確認してドキュメントにキャストする必要があります

于 2013-11-30T04:33:37.320 に答える