あるDBで、選択した文書をアーカイブ。。別のDBに退避できるようにしたい、とします。

まずは元のDBを文書なしでコピーして空のDBをつくり、これをアーカイブ用ということにします。

次に、元のDBのプロパティ「アーカイブの設定」でアーカイブの条件を作成して、先ほどの空のDBを指定します。

細かな指定の仕方は、Dominoデザイナー関連のヘルプでご確認ください。
公式のヘルプは、メールDBのメッセージを前提としている感がある書かれ方ではありますが。

下図のように選択条件には、指定した期間とかではなく「ユーザーに選択された文書」がきちんとあります。
イメージ 2

Notes 9 日本語版だと、設定した際にこんなアラートが
イメージ 3

もしDBがメールDBの場合は、これで完了なのですが、
普通のアプリDBの場合は、これだけでは終わらないようです。

なぜなら、上記アラートに書かれている[アーカイブ] - で始まるメニューが、見つからない…存在しないからです!

メールDBにはメニューがちゃんとあります。(実際には [アクション]- [アーカイブ] - [すぐにアーカイブ]

どうやら、アーカイブの機能全般が、メールで行うことが前提のようになってしまっていて、ほかのDBで使うことがあまり想定されていない感じが強いです。一般のDBで上記メッセージが出るあたりは整合性の改善をお願いしたいところですね。

では、無いメニューをどうするかといえば、作ることは可能です。

メールにしたって、[アーカイブ]の各メニューは、標準のシステムアクションのようなものではなく、
メールDBの設計内に作りこまれたLotus Scriptのエージェントです。

だから、普通のアプリケーションDBでも、
選択文書をアーカイブする機能を実現したければ、
同じようなものを開発者側が作って提供すれば可能そうです。

そう考えて、ひとまずはメールDBの設計を覗くとします。


設計の名称など細かいところは略しますが、こんなコードが書かれており

イメージ 1

「archiveNow」 という、あまり見かけない、
実はデザイナーのヘルプには載っていないメソッドが使用されています。
これによってアーカイブ対象のDBへ文書が移動するわけです。

メールDBではもう少しきめ細かい作りになっていますが、基本的なアーカイブのロジックは
    ユーザーがビューで選択した文書(NotesDatabase.unprocesseddocuments)を
    NotesDocumentCollectionでとって、
    そのCollectionに対して、NotesDatabase.archiveNow を行う
という内容になると思います。これをビューのアクションや、アクションメニューのエージェントとして実装します

archiveNow はヘルプには載っていない(=undocumentedな)メソッドなので、IBMさんのサポート対象外となるかもしれませんからご留意ください。
そのarchiveNowを含むメールDBはサポート対象でしょうから、微妙な感じもしますが。