あるDBで、選択した文書をアーカイブ。。別のDBに退避できるようにしたい、とします。
まずは元のDBを文書なしでコピーして空のDBをつくり、これをアーカイブ用ということにします。
次に、元のDBのプロパティ「アーカイブの設定」でアーカイブの条件を作成して、先ほどの空のDBを指定します。
細かな指定の仕方は、Dominoデザイナー関連のヘルプでご確認ください。
公式のヘルプは、メールDBのメッセージを前提としている感がある書かれ方ではありますが。
下図のように選択条件には、指定した期間とかではなく「ユーザーに選択された文書」がきちんとあります。
もしDBがメールDBの場合は、これで完了なのですが、
普通のアプリDBの場合は、これだけでは終わらないようです。
なぜなら、上記アラートに書かれている[アーカイブ] - で始まるメニューが、見つからない…存在しないからです!
メールDBにはメニューがちゃんとあります。(実際には [アクション]- [アーカイブ] - [すぐにアーカイブ] )
どうやら、アーカイブの機能全般が、メールで行うことが前提のようになってしまっていて、ほかのDBで使うことがあまり想定されていない感じが強いです。一般のDBで上記メッセージが出るあたりは整合性の改善をお願いしたいところですね。
では、無いメニューをどうするかといえば、作ることは可能です。
メールにしたって、[アーカイブ]の各メニューは、標準のシステムアクションのようなものではなく、
メールDBの設計内に作りこまれたLotus Scriptのエージェントです。
だから、普通のアプリケーションDBでも、
選択文書をアーカイブする機能を実現したければ、
同じようなものを開発者側が作って提供すれば可能そうです。
そう考えて、ひとまずはメールDBの設計を覗くとします。
設計の名称など細かいところは略しますが、こんなコードが書かれており
実はデザイナーのヘルプには載っていないメソッドが使用されています。
これによってアーカイブ対象のDBへ文書が移動するわけです。
メールDBではもう少しきめ細かい作りになっていますが、基本的なアーカイブのロジックは
- ユーザーがビューで選択した文書(NotesDatabase.unprocesseddocuments)を
NotesDocumentCollectionでとって、
そのCollectionに対して、NotesDatabase.archiveNow を行う
という内容になると思います。これをビューのアクションや、アクションメニューのエージェントとして実装します。
archiveNow はヘルプには載っていない(=undocumentedな)メソッドなので、IBMさんのサポート対象外となるかもしれませんからご留意ください。
そのarchiveNowを含むメールDBはサポート対象でしょうから、微妙な感じもしますが。
コメント