1

私は現在、作成日/変更日/最終アクセス日からの経過日数に基づいてデータベース間で Notes ドキュメントを移動するアプリケーションを作成しています。アプリケーションをテストできるように、Domino サーバーの時刻を変更することなく、特定の日付のドキュメントを作成する簡単で便利な方法についてアイデアを得たいと思います。

これまでに見つけた最善の方法は、ローカル レプリカを作成し、システム クロックを目的の日付に変更することでした。残念ながら、この方法には問題があります。変更日では機能しません - 場所がアイランド (切断)に設定されている場合に変更日情報を取得する方法がわかりません- また、ドキュメントが複製されると、変更日と最終アクセス日が変更されますサーバーのレプリカ。

ドキュメントの DXL を作成し、DXL ファイルの日時を変更してから、Notes ドキュメントとしてデータベースにインポートし直すことを提案した人もいました。しかし、それは機能しません。作成された日時を取るだけです。

誰でも他の提案を提供できますか?

4

3 に答える 3

3

UNID (最近のバージョンでは実際の実装が変更されていますが、基本的にはタイムスタンプの構造体です) を設定することで、ドキュメントの作成日を設定できます。ただし、行った変更は変更を保存するプロセスによって上書きされるため、ノーツ/ドミノ環境内からアクセス時間と変更時間は設定できません。冒険の才能があり、はさみで実行する必要がある場合は、外部アプリケーションからプログラムで、または 16 進エディターを使用して手動で、データベース ファイル自体を変更できます。(バイナリの編集は機能します -- 人々は何年もの間、16 進エディタを使用して「デザインを隠す」フラグを安全にクリアしてきました。署名されたドキュメントはひどく爆発することに注意してください。データベース ファイル)。

于 2010-06-04T20:18:25.103 に答える
2

実際には、作成日時を偽装する非常に簡単な方法があります。必要な日時を指定して$Createdというフィールドを追加するだけです。これは、NotesCAPIヘッダーファイルnsfdata.hでほのめかされています。

メモに関連付けられた日時:OID.Noteメモが作成された日時にすることができます(ただし、保証はされません-メモの作成時間については、最初に$ CREATEDアイテムを探してください)NSFNoteGetInfo(_NOTE_OID)またはSEARCH_MATCHのOIDによって取得されます。

残念ながら、modまたはアクセス日付をスプーフィングするための類似の手法はありません。私の知る限り、これまでに文書化されたものは少なくともありません。

于 2012-03-05T16:53:51.773 に答える
1

Lotus Notes がタイムスタンプ (主に複製のため) にどのように依存しているかを考えると、メモの変更日、作成日、または最終アクセス日を変更できる API 呼び出しはありません。(Lotus Notes の内部の詳細については、こちらを参照してください。)

私は Notes C API ドキュメントを掘り下げましたが、変更日を含むノートのヘッダーの情報を取得/設定する方法についての言及が 1 つだけ見つかりました。ただし、ドキュメントには、そのメモを更新しようとすると (つまり、ディスクに書き込む)、最終更新日がディスクに書き込まれた日付/時刻で上書きされると記載されています。

別の方法として、MyCreated、MyModified、MyAccessed など、自分だけが制御するドキュメント内に独自の日付アイテムのセットを作成し、日付に基づいてドキュメントを移動するコードでそれらを参照することをお勧めします。これらの日付は、他の文書項目を変更するのと同じくらい簡単に変更できます (エージェント、フォームなどを介して)。

MyCreated の場合、@CREATED または @NOW の式を使用して非表示の計算フォーム フィールドを作成します。構成時にタイプを計算済みに設定します。

MyModified の場合、式 @NOW を使用して非表示の計算フォーム フィールドを作成し、タイプを計算済みに設定します。

MyAccessed は少しトリッキーになります。それがなくてもできるのであれば、MyCreated と MyModified だけでライブ作業を行うことをお勧めします。必要な場合は、QueryOpen または PostOpen イベント内でフィールド値を設定することで管理できるはずです。ユーザーがドキュメントへの読み取りアクセス権しか持っていない場合、問題が発生します。MyAccessed フィールドを更新するコードは、その値を保存できません。

お役に立てれば!

于 2010-05-26T20:01:03.987 に答える