当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。

テクてく Lotus 技術者 Slack に参加しよう!

2012年9月18日火曜日

XPagesで文書のバージョン管理をやってみよう!


この週末は3連休の人が多かったのではないでしょうか。
筆者は、事務所の移転作業があったため、3連休ではなく、2.5連休でした。

しかも、土曜日の夜あたりからちょっとのどの調子がおかしく、連休中はほとんど家でゴロゴロという年寄りか!みたいな生活でした。
風邪には十分気をつけましょう。

ということで、筆者の風邪?が良くなることを祈念しながらボタンをクリックしてやってください。
にほんブログ村 IT技術ブログへ


さて、今日はXPagesのネタです。ちょっと記事を書くのを休んでいたので、約2週間ぶりのXPagesネタということになります。

従来のノーツアプリケーションでは、文書を保存する際に、そのまま保存するか、返答文書として保存するかというバージョン管理の設定がありました。
フォームのプロパティ

さらに、@Command([FileSaveNewVersion])コマンドや、NotesUIDocument クラスの SaveNewVersion メソッドを使うことで、保存アクションで自動的にバージョン管理するのかどうかの切り替えも行えました。

では、XPages ではどのようにやれば良いのでしょうか?
・・・どうも、なさげなんですね。つまり、自作してください、と。

では、自作してみましょう。
今回は、「以前の文書を返答文書に」の動きを実現します。

まずは、バージョン管理がどのような動きをしているのかの確認です。
以前の文書を返答文書にするということなので、次のような感じでしょうか?
  1. バックエンドで現在の文書(変更前)を取得する(UI から取得すると、変更後の状態を取得してしまうため)。
  2. バックエンドで新規に文書を作成する。
  3. 新規で作成した文書に1.で取得した文書の全アイテムをコピーする。
  4. 新規で作成した文書を1.で取得した文書の返答文書にする。
  5. 新規で作成した文書を保存する。
  6. UI の文書を保存する。

せっかく自作するので、通常の保存と、バージョン管理用の保存と分けて作成しましょう。
といっても、通常の保存は今まで散々やってきたのでここでは割愛します。

フォームを表示するための XPage はできあがっているものとします。

最初に、ボタンコントロールを追加します。
ボタンのラベルは「履歴付き保存」としましょう。
可視の設定も行っておきましょう(document1.isEditable()ですね・・・document1はデータソース名)。

次にイベントビューを開いて、アクションを追加します。アクションの種類は「スクリプトの実行」にします。
スクリプトエディタには、以下のように記述します。
// 保存前の文書(バックグラウンド)を取得する
var docId = document1.getNoteID();
var pdoc  = database.getDocumentByID( docId );

// 保存前の文書を返答文書として保存する
var doc  = database.createDocument();
pdoc.copyAllItems( doc, true );
doc.makeResponse( pdoc );
doc.save();

// 現在の文書を保存する
document1.save();

// homeページを開く
context.redirectToHome();
履歴付き保存のコード

コードについての説明は特にありません。上で書いたとおりのロジックです。

最後の行の「context.redirectToHome」は、ノーツアプリケーションの起動時に開くページを開くというものです。
下図が設定画面です。
起動時の画面設定


これで完了です。とても簡単ですね。
筆者は、ノーツアプリケーションの設計書等は、全部この設定を施したノーツアプリケーションに格納しています。
今までは、従来のノーツデータベースで作成していましたが、これからはXPagesアプリケーションに乗り換えようかな?

皆さんも、チャレンジしてみてください。






【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: