0

私は 2 つの日付を指定して会議を取得する作業を行っています。たとえば、当月のすべての会議を取得します。

指定された期間に約 45 の会議があるとします。Web サービスに時間がかかります。これが私が今やっている方法です:

  1. カレンダー ビューですべてのドキュメントを取得します。

  2. 開始日と終了日については、すべてのドキュメントを確認してください。

  3. いずれかの会議が指定された期間にある場合、配列を作成し、その配列を返します。

これは正しいです?

4

3 に答える 3

0

これは正しいですが、大量のドキュメントがある場合はあまりパフォーマンスが良くありません。基本的に、最初の列にミーティング (開始) 日付を並べ替えたビューを作成します。LotusScript では、ビューにアクセスし、開始日に一致する最初のミーティングの「カーソル」を設定してから、終了日の後の日付に到達するまでビューをステップスルーできます。

ビューの GetDocumentByKey メソッドについて読んでください。さらにここ: http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/index.jsp?topic=%2Fcom.ibm.designer.domino.main.doc%2FH_LOCATING_DOCUMENTS_WITHIN_A_VIEW_OR_FOLDER.html

うーん...もう少し考えてみると、開始日はあるが一致する会議がない場合はどうなるか...FTSearch()メソッドを参照してください。

于 2014-01-31T13:33:26.743 に答える
0

Notes / Domino 9.0 以降を使用している場合は、組み込みのカレンダー クラスを使用する必要があります。これらは、LotusScript または Java から利用できます。Java を使用した例を次に示します。データベース オブジェクトと日付範囲を指定すると、範囲内のすべてのエントリが出力されます。

private static void printRange(Database database, DateTime start, DateTime end) throws NotesException {

    // Get the calendar object from the database
    NotesCalendar calendar = database.getParent().getCalendar(database);
    if ( calendar != null ) {

        // Get a list of calendar entries
        Vector<NotesCalendarEntry> entries = calendar.getEntries(start, end);
        if ( entries != null ) {

            // For each entry ...
            Iterator<NotesCalendarEntry> iterator = entries.iterator();
            while (iterator.hasNext()) {
                NotesCalendarEntry entry = iterator.next();

                // Read the iCalendar representation
                String icalendar = entry.read();

                // Get the Notes UNID
                Document doc = entry.getAsDocument();
                String unid = doc.getUniversalID();

                // Print UNID and iCalendar to console
                System.out.println("Entry UNID: " + unid);
                System.out.println(icalendar);
            }
        }
    }
}

NotesCalendar および NotesCalendarEntry インターフェースは、lotus.domino パッケージに含まれています。LotusScript を使用している場合、同じ名前で同じメソッドを持つクラスがあります。

上記のコードに関するいくつかの警告:

  1. 繰り返しエントリのニュアンスを処理しません。同じ時間範囲に繰り返しエントリの複数のインスタンスを含めることができます。Notes では、これらのエントリが同じ UNID を持つ場合があります。ニュアンスを理解していることを確認するために、繰り返しエントリを使用してコードをテストする必要があります。
  2. この例では、Document、NotesCalendarEntry、および NotesCalendar オブジェクトがリサイクルされません。簡単にするためにこれをスキップしましたが、Notes Java クラスを使用している場合は、recycle() を正しく使用する必要があります。それは将来の頭痛の種を救います。
于 2014-02-01T16:47:04.900 に答える