2015年4月17日金曜日

アプリのお引越しに Notes Redirect File (NRF) を使おう!

長い間使ってきたDominoサーバーも、「そろそろハードウェアの更新だなあ」とか「OSのサポート切れだよ...」といった後ろ向きな理由や、BCP対応としてクラウドの「SoftLayer」で稼働するDominoサーバーへ移行するといった前向きな理由で、サーバー間でアプリケーションを引越しすることがあります。


アプリケーション・サーバー間で引っ越しする場合、これまで、ユーザーには、ワークスペースに追加されているアイコンから「面倒な操作」をして、引っ越し先のサーバー上にあるアイコンを追加する、といったようなアナウンスを流して、ユーザー側で対応してもらっていました。


こうすると古いアイコンが削除されずに、ゴミとして残りがちなんですよね。


ところが、これからはユーザーへ「面倒な操作」のアナウンスをしなくても、ワークスペースからアイコンをダブルクリックしてもらうだけで、古いサーバー上のアイコンが削除され、新しいサーバー上のアイコンに置き換わってくれます!

しかも、アイコンの参照先が変わったことを、ユーザーがほとんど気づかないような工夫がされているのです。


それが Notes Redirect File (以下:NRF) です。
※NRF はNotes 8 で追加された機能です


ここからは、NRF を作成する、一つの例を示します。


Domino Administrator から、サーバー上の .nsf ファイルを削除しようとすると、表示される確認画面に
「マーカーを作成して、クライアントがこのデータベースへの参照情報を更新できるようにする」
というチェックボックスがあります。これにチェックを付けます。


この「マーカー」というのが.nrf という拡張子のファイルを指しているようです。

「クライアントを以下のサーバーにリダイレクト」にチェックを付けて、レプリカを置いているサーバーの名前を指定します。これで[OK]ボタンを押すと .nsf ファイルが削除され、かわりに .nrf ファイルが作成されます。

このとき、削除前のファイル名が "TestNRF.nsf" の場合、"TestNRF.nrf" のように、ファイル名が同じで拡張子が .nrf になります。


.nrf ファイルはメモ帳で開くことができます。
開くと次のような感じです。※RepID=やRef=の値は書き換えています

[NotesRedirectFile]
Type=Move
RepID=00000000:00000000
Title=NRFファイルのテスト
Ref=CN=hogehoge/O=org/C=jp!!TestNRF.nsf

では、サーバー上にnrfファイルが作成されたところで、Notesクライアントから開いてみます。


ワークスペースにあるアイコンをダブルクリックすると、いつもより開くのに時間がかかる感じがしますが、このときステータスバーには

「アプリケーション ≪DBTitle≫ (≪nrfファイル名≫) の新しいレプリカを検索中です。以前はサーバー ≪移動元サーバー名≫ 上にありましたが、古いレプリカが移動されたためです。」

と表示されていました。


そのうちアプリケーションが開きます。ワークスペースに戻ってアイコンに書かれたサーバー名を見ると、リダイレクト先サーバー名に置き換わっていました。レプリカが積み重なったりしておらず、古いサーバー名のアイコンは自動で削除されていました。


今回は、あらかじめ他のサーバーにレプリカを作成してあったので「データベースの削除」をしていますが、ヘルプによると、「データベースの移動」でもNRFを作成できるようです。


なお、httpタスクを稼働しているDominoサーバーの場合、ブラウザから削除前の .nsf ファイルを目指してくると 404 エラーになるようです。NRFは Notesクライアント専用のようです。

確認したバージョン: Notes 9.0.1 Standard, Domino 8.5.3

2015年4月14日火曜日

$KeepPrivateの挙動が変わった?!

今回は私が最近知った、Notesの印刷不可の制御についての話題です。

Notesのアプリケーションへ登録した文書について、その内容を印刷ができないよう制御することができます。

フォームのプロパティでその設定を行うことができますが、そのフォームを使って保存した文書には $KeepPrivate というアイテムにテキスト値の"1"がセットされています。

こうなった文書は権限にかかわらず印刷できなくなります。

さて、この値を"0"(または"")にすると、どうなるかご存知でしょうか?

そうです、印刷できるのです。

何を当たり前のことを…と思ったそこのあなた!
話はこれからですよ!

この印刷させない設定は、ACL(アクセス制御リスト)のエントリでもできます。

ACLエントリで「文書を複製またはコピー」にチェックを付けると、そのエントリに該当する人は印刷できますが、チェックを外したエントリに該当する人は印刷できません。

ところが、ACLで「文書を複製またはコピー」のチェックを外したエントリに該当する人が、$KeepPrivate に"0"(または"") をセットした文書を印刷できる事を最近知りました。注)転送はできませんでした

実はこれ、8.5.1で修正され、仕様が変わってしまったとのこと。

では、ACLで「文書を複製またはコピー」のチェックを外している人が、文書を印刷できなくするにはどうするか。

$KeepPrivate アイテムを削除します。

こうして当方のアプリケーションは想定した挙動をしてくれるようになったのでした。

※Notes 9.0.1 Standard版で確認