Takenoff Labs

Lotus Notes/Domino に関する Tips や、クラシックの名曲などを紹介します

[Notes/Domino] 競合文書をなるべく作らないようにする方法

先週、落雷によりPCがマザーボードごとぶっ壊れました(号泣)。なので先週更新できませんでした。ぐすん。

まだ完全復旧していないので、今週も手抜きモードでスミマセン。


ノーツでは、バッチ処理を実行すると、すでに文書を編集モードで開いていた人が文書を保存すると、競合文書になってしまうことがあります。

読込モードで開いていた場合は、編集モードに移行する際にチェックする方法がありますが(具体的な方法については、以前エントリした「ソフトロックにまつわる問題点」を参照してください)、編集モードで開いている場合は、これとは違う方法を採る必要があります。

編集モードで開いていてもなるべく競合を作らない方法については、IBM のサイトに載っていました。以下を参照してください。

競合文書の確認メッセージを表示させずに文書を保存する方法

最新のバックエンド文書を取得してそこに値をつっこみ、フロントエンドは SaveOptions で保存しないようにする、という仕組みですね。これなら、よほどタイミングが一緒にならない限りは、保存競合は発生しないでしょう。

ただし、リッチテキストがある場合には、この方法を使うとやや危険。リッチテキストのコピーは、まれに正しくコピーされないことがありますので。また、NotesUIDocument.Refresh(True) を実行しないと、最新のリッチテキストアイテムが取得できません。リッチテキストがあるといろいろ厄介なので、なるべく要件定義の段階ではじくほうがよいでしょう。

ちなみに、上記リンク先で初めて知りましたが、現在開いているDBを「New NotesDatabase」することで、GetDocumentByID でも最新バックエンド文書が取得できるんですね。管理人はアホなので知りませんでした。(今までは、ビューから取得したり、「Delete doc」をやったりしていました……。うー、恥ずかしー 😳 )

1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 3.00 out of 5)
読み込み中...

トラックバック

トラックバックはありません

コメント

コメントはありません

※コメントは承認制となっております。管理者が承認するまで表示されません。申し訳ありませんが、投稿が表示されるまでしばらくお待ちください。





(以下のタグが使えます)
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

For spam filtering purposes, please copy the number 8320 to the field below:

^
×