[Notes/Domino] 競合文書をなるべく作らないようにする方法
先週、落雷によりPCがマザーボードごとぶっ壊れました(号泣)。なので先週更新できませんでした。ぐすん。
まだ完全復旧していないので、今週も手抜きモードでスミマセン。
ノーツでは、バッチ処理を実行すると、すでに文書を編集モードで開いていた人が文書を保存すると、競合文書になってしまうことがあります。
読込モードで開いていた場合は、編集モードに移行する際にチェックする方法がありますが(具体的な方法については、以前エントリした「ソフトロックにまつわる問題点」を参照してください)、編集モードで開いている場合は、これとは違う方法を採る必要があります。
編集モードで開いていてもなるべく競合を作らない方法については、IBM のサイトに載っていました。以下を参照してください。
最新のバックエンド文書を取得してそこに値をつっこみ、フロントエンドは SaveOptions で保存しないようにする、という仕組みですね。これなら、よほどタイミングが一緒にならない限りは、保存競合は発生しないでしょう。
ただし、リッチテキストがある場合には、この方法を使うとやや危険。リッチテキストのコピーは、まれに正しくコピーされないことがありますので。また、NotesUIDocument.Refresh(True) を実行しないと、最新のリッチテキストアイテムが取得できません。リッチテキストがあるといろいろ厄介なので、なるべく要件定義の段階ではじくほうがよいでしょう。
ちなみに、上記リンク先で初めて知りましたが、現在開いているDBを「New NotesDatabase」することで、GetDocumentByID でも最新バックエンド文書が取得できるんですね。管理人はアホなので知りませんでした。(今までは、ビューから取得したり、「Delete doc」をやったりしていました……。うー、恥ずかしー 😳 )
コメント
コメントはありません
※コメントは承認制となっております。管理者が承認するまで表示されません。申し訳ありませんが、投稿が表示されるまでしばらくお待ちください。