私は 2 つの日付を指定して会議を取得する作業を行っています。たとえば、当月のすべての会議を取得します。
指定された期間に約 45 の会議があるとします。Web サービスに時間がかかります。これが私が今やっている方法です:
カレンダー ビューですべてのドキュメントを取得します。
開始日と終了日については、すべてのドキュメントを確認してください。
いずれかの会議が指定された期間にある場合、配列を作成し、その配列を返します。
これは正しいです?
私は 2 つの日付を指定して会議を取得する作業を行っています。たとえば、当月のすべての会議を取得します。
指定された期間に約 45 の会議があるとします。Web サービスに時間がかかります。これが私が今やっている方法です:
カレンダー ビューですべてのドキュメントを取得します。
開始日と終了日については、すべてのドキュメントを確認してください。
いずれかの会議が指定された期間にある場合、配列を作成し、その配列を返します。
これは正しいです?
これは正しいですが、大量のドキュメントがある場合はあまりパフォーマンスが良くありません。基本的に、最初の列にミーティング (開始) 日付を並べ替えたビューを作成します。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()メソッドを参照してください。
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 を使用している場合、同じ名前で同じメソッドを持つクラスがあります。
上記のコードに関するいくつかの警告: