2012-01-20 18 views
1

Lotus Notesアプリケーションにログ機能を追加したいとします。基本的には、誰が変更を行ったのか、変更が行われたのか、そしてドキュメント内のどのフィールドが変更されたのかを記録することができます。これを行う最善の方法は何ですか?私は各文書の最後にこれを追加して、誰が変更を行うのかを知っていると考えています。Lotus Notesフォームへのログの追加

答えて

1

私はこれをLotusScriptを使用する前に行っています。

  • QueryOpenイベント内に配列または新しいドキュメントオブジェクトを作成し、現在のドキュメント内のすべてのアイテムの値を格納することです。
  • QuerySaveイベントでは、現在のドキュメントの値を、作成したインメモリコピーと比較し、差異を記録します。

フォームにフィールドを作成して、これらの変更を書き込んだり、そのたびにフィールドに追加したりすることができます。

他のイベントハンドラは、ドキュメントが開くたびに変更を行います。 PostOpenイベントの元の値をコピーする必要があるかもしれません。たとえば、ドキュメントが開かれるたびにQueryOpenイベントの一部のフィールドを変更する場合は、falseの変更ログが返されます。

希望すると便利です。

+0

私はこれに問題があります。ここで私はそれを設定する方法である: グローバル宣言:バリアント 薄暗いlastValuesとして [コード] 薄暗いoriginalValues(2)(2)変形例 [/コード] [コード] サブのQueryOpen位置NotesUIDocument、モードとして(ソースとして整数、変形例としてIsnewdoc、バリアントとして継続)配列を含む元の値 \t originalValues(0)= doc.QCR_No \t originalValues 'のNotesDocument \tセットDOC = Source.Document \tとして現在のドキュメント \t薄暗いドキュメント' として(1)= doc.QCR_Mobile_Item_No \t originalValues(2)= doc.QCR_Qty End Sub [/ code] –

+0

申し訳ありませんが、私はまだマークアップの使い方を理解しようとしています。もう一度やり直してみましょう グローバル宣言 Dim originalValues(2)As Variant Dim lastValues(2)As Variant' –

+0

マークアップの使い方を読んでいますが、それは私にとってはうまくいかないようです。私は改行とインラインコードを使用しようとしています。誰も私がここで間違っていることを指摘できますか? –

0

「ブルートフォース」アプローチも有効です。ドキュメントを保存するたびに、そのバージョンのコピーを(別の)データベースに作成します。これにより、文書の監査証跡が作成されます。ドキュメントを比較して変更を抽出することができます。

このアプローチではかなりのオーバーヘッドがありますが、私の経験ではそれは価値があります。実装は簡単で、すべての変更は実際のドキュメントに影響を与えることなく取得されます。必要な情報はすべてキャプチャされ、(オフライン)処理に使用できます。

4

OpenNTFには、Open AuditAudit Managerなど、この目的に使用できるツールがいくつか用意されています。

関連する問題