Comments
Description
Transcript
Lotus Notes DB プロパティのカテゴリ情報保守事例 ®
® IBM Software Group Software Service IBM Connect Japan 2012 IBM ソフトウェア アクセラレイテッド・バリュー・プログラム 活動事例紹介 簡単に、一括で! Lotus Notes ® DBプロパティのカテゴリ情報保守事例 日本アイ・ビー・エム 株式会社 ソフトウェア アクセラレイテッド・バリュー・プログラム 林 伸也 IBM Software Group Software Service 特記事項 本資料の記載内容は、できる限り正確を期すよう努めてはおりますが、いかなる明 示または暗黙の保証も責任も負いかねます。 本資料の情報は、使用先の責任において使用されるべきものであることを、あらかじ めご了承ください。 掲載情報は不定期に変更されることもあります。他のメディア等に無断で転載する 事はご遠慮ください。 当資料をコピー等で複製することは、執筆者の承諾なしではできません。 また、当資料に記載された製品名または会社名はそれぞれの各社の商標または登 録商標です。 IBM、IBMロゴ、Lotus、Lotus Notes、Lotus Domino、WebSphereは、International Business Machines Corporationの米国およびその他の国における商標。 Microsoft, Windows, Windows NT および Windowsロゴは Microsoft Corporationの米国およびその他の国における商標。 -2All Rights Reserved, Copyright(c) IBM Software Group 無断複製、転載を禁ず IBM Software Group Software Service 目次 はじめに 「カテゴリ」とは? お客様からのご相談 そこで。。。。 (参考)カテゴリ名が格納される場所について 操作イメージ(1) 操作イメージ(2) 操作イメージ(3) サンプルコード -3All Rights Reserved, Copyright(c) IBM Software Group 無断複製、転載を禁ず IBM Software Group Software Service はじめに 各Lotus Notes データベース(以下「Notes DB」と略称)に設定できる「カテゴリ」情報は、手 作業によって、各Notes DBごとに保守することができます。 このカテゴリ情報をLotus Notesアプリケーションで使用しているお客様から、カテゴリ情報の保 守についてご相談をいただき、AVP活動の中でサンプルソリューションをご提供いたしました。 本資料はその内容を事例紹介することを目的としております。 -4All Rights Reserved, Copyright(c) IBM Software Group 無断複製、転載を禁ず IBM Software Group Software Service 「カテゴリ」とは? 各Lotus Notesデータベースに対して「カテゴリ」を設定できます。 Lotus Domino ® サーバーのデータベースカタログ機能によって、サーバー内のNotes DBのリストが Catalog.nsfに格納されますが、Catalog.nsf内から特定のNotes DBを探しやすくするためにNotes DBをカテゴリ分類しておく場合などに用いられます。 「カテゴリ」の設定は、各Notes DBのプロパティ内のインフォボックスで指定することができます。 • 下図ではカテゴリ名として「Discussion」と指定されています。 なお、「カテゴリ」の設定はNotes DBごとに必要となります。 -5All Rights Reserved, Copyright(c) IBM Software Group 無断複製、転載を禁ず IBM Software Group Software Service お客様からのご相談 お客様から既存のNotes DBのカテゴリ内容の保守につきましてご相談をいただきました。 • お客様のLotus Dominoサーバー内に「DB一覧表」というNotesDBが配置されています。 − 当DBはユーザー様にサーバー内のDBを紹介し、Lotus Notesクライアントから任意の DBを開くことを可能にすることを目的に配置されています。 • 当DB内の各DBの紹介文書では検索を容易にするためにカテゴリ区分分けしております。 • 文書内のカテゴリ情報を編集することはできるのですが、DB側のカテゴリ情報を更新することは できず、両カテゴリ名の更新が必要となっており、処理が煩雑になっていました。 − 任意のNotes DBのカテゴリ名を変更する場合には、まず該当Notes DBのプロパティを 開きカテゴリ情報を更新し、更に「DB一覧表」内の該当Notes DB文書のカテゴリ情報 を更新していました。両方の更新を手作業で実施していたため誤入力による不整合も 「DB一覧表」内の文書 発生していました。 両方とも手作業で更新す るのは煩雑だなあ 手動 手動 Notes DBのプロパティ -6- All Rights Reserved, Copyright(c) IBM Software Group 無断複製、転載を禁ず IBM Software Group Software Service そこで。。。。 お客様からのご相談をAVPで調査し、 「DB一覧表」DB側で選択した文書内のカテゴリ名を 該当DBプロパティ内のカテゴリ名に反映させるサンプルロジックをご紹介いたしました。 2011年12月15日よりご利用いただいております。 その結果、「DB一覧表」のみを保守すればよくなり、保守工数を削減することができました。また入 力の不整合もなくなりました。 また、いただきました以下のご要望にも対応しております。 • 複数のNotes DBに対して一括で更新したい ロジック DB一覧表を更新すれば、 その情報を反映できるの で、保守工数が削減でき た! 「DB一覧表」内の文書 Notes DBのプロパティ 手動 -7All Rights Reserved, Copyright(c) IBM Software Group 無断複製、転載を禁ず IBM Software Group Software Service (参考)カテゴリ名が格納される場所について DBのカテゴリ名は、NotesDatabaseクラス内のCategories プロパティに格納されています。 本プロパティに対して変更処理を行います。 以下は「Lotus Notes Designer ヘルプ」からの抜粋です。 Categories プロパティ • • • • • 読み書き可能。データベースカタログにおいてデータベースが表示されるときのカテゴリです。 定義位置 − NotesDatabase データ型 − Variant 型 構文 − 取得方法:categoryList = notesDatabase.Categories − 設定方法:notesDatabase.Categories = categoryList 使い方 − カテゴリは単一の文字列の場合、コンマかセミコロンで区切られます − これらのカタログはドメインカタログや検索にも使われます。 − ListInDbCatalog はデータベースカタログにデータベースが表示されるかどうかを決定しま す。 -8All Rights Reserved, Copyright(c) IBM Software Group 無断複製、転載を禁ず IBM Software Group Software Service 操作イメージ(1) カテゴリを変更したいDBの文書を選択し、「カテゴリを変更」アクションボタンを押します。 直接対象DBにアクセスしますので「フルアクセスアドミニストレータ」に変更後実施することをお奨め します。 -9All Rights Reserved, Copyright(c) IBM Software Group 無断複製、転載を禁ず IBM Software Group Software Service 操作イメージ(2) 「登録したいカテゴリの名前を入力してください」画面で、カテゴリ名を入力し、「OK」ボタンを押 します。 入力値がブランク、もしくは「キャンセル」を押した場合には「カテゴリがブランクになるため実行できま せん」というメッセージが表示されます。 - 10 All Rights Reserved, Copyright(c) IBM Software Group 無断複製、転載を禁ず IBM Software Group Software Service 操作イメージ(3) 変更処理が行われます。 - 11 All Rights Reserved, Copyright(c) IBM Software Group 無断複製、転載を禁ず IBM Software Group Software Service サンプルコード Sub Initialize Dim session As New NotesSession Dim db As NotesDatabase Dim collection As NotesDocumentCollection Dim doc As NotesDocument Dim categoryName As Variant Dim enterstatus As String Set db = session.Currentdatabase Set collection = db.UnprocessedDocuments Set doc = collection.GetFirstDocument() '●設定するカテゴリ名を確定する EnterValues: categoryName = "" categoryName = _ Inputbox$("カテゴリの名前", _ "登録したいカテゴリの名前を入力してください") '○入力値を確認する If categoryName="" Goto BadCur '●選択された文書に対して処理を行う Do Until doc Is Nothing doc.DBCategory = categoryName '■指定DBの既存設定カテゴリ値を取得する doc.CategoryB = dbtarget.Categories '■指定DBの設定カテゴリ値を変更する dbtarget.Categories = categoryName If dbtarget.ListInDbCatalog Then db.ListInDbCatalog = False Print "List in database catalog" Else db.ListInDbCatalog = True Print "Do not list in database catalog" End If '■選択文書を保管する Call doc.Save( True , False ) '■次の選択文書に移動する Set doc = collection.GetNextDocument( doc ) Loop Exit Sub BadCur: Messagebox "カテゴリがブランクになるため実行できません" End Sub 'Messagebox doc.ServerName(0) 'Messagebox doc.DbName(0) '■指定のDBにアクセスする Dim dbtarget As New NotesDatabase (doc.ServerName(0) , doc.DbFileName(0)) - 12 All Rights Reserved, Copyright(c) IBM Software Group 無断複製、転載を禁ず