2006年08月14日

プロフィール文書に関する愛憎劇 (1)

僕がとっても愛用し、かつ常に悩まされている仕組みに プロフィール文書 があります。

例えば僕の管理している Web システムは三桁近い数の Web サイトがあって、それぞれが独立した Notes DB です。 見た目はいろいろバラエティ豊かですが、設計は統一されています。 細かいところまで全部、プロフィール文書で設定できるようにしてみました。

プロフィール文書は手軽に使用できますし、システムにキャッシュされるだけあってパフォーマンスも良さげなんですが、、、トラブル発生時に問題解決に手間取ることも多いです。 普通の文書と違って、簡単にはアクセスできないのが困りものです。
  
例えばプロフィール文書も競合状態になったりするようですが、それを把握するのは難しいです。 操作する Client にキャッシュされたりしてるので、なかなかヤッカイな動きをしたりします。 また特定の環境で発生することがあるのですが、プロフィール文書が壊れてしまうのか、何度保存しても内容が更新できなくなったりすることがあります。

どうしようもない場合、僕は、以下のようなロジックでプロフィール文書の再作成を試してみます。 再作成まですると、さすがに状況が改善されることが多いです。
Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim pdoc As NotesDocument

' -------------------------
dbServer$ = |xxxxxx|
dbFile$ = |xxxxxx|
profileForm$ = |xxxxxx|
' -------------------------

Set db = session.GetDatabase(dbServer$, dbFile$, False)
Set pdoc = db.GetProfileDocument(profileForm$)
If pdoc.IsNewNote Then
Msgbox "プロフィール文書がみつかりません"
Exit Sub
End If

Set doc = db.CreateDocument
Call pdoc.CopyAllItems(doc, True)

Do Until pdoc.IsNewNote
Msgbox "Delete: " & Cstr(pdoc.LastModified)
Call pdoc.Remove(True)
Set pdoc = db.GetProfileDocument(profileForm$)
Loop

Call doc.CopyAllItems(pdoc, True)
Call pdoc.Save(True, False)
End Sub
ドラフトメール等にアクションボタンを作成して、エイヤと実行したりするのがお手軽ですかね。 at your own risk で、どーしても困ったときに、お試しください。 (^-^;

あ、余談ですが、プロフィール用のフォームにはシステムアクションの 転送 を忘れずに残しておくと良いです。 なにか大きな変更の前に、文書と違って簡単にコピペできないプロフィール文書は、転送でメールボックスにドラフト保存する、のが便利だとおもいます。
posted by yamachan at 05:06| Comment(0) | TrackBack(0) | my設計パターン
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/1115466

この記事へのトラックバック