今回はドミノディレクトリの中でグループに関するビューについて取り上げたいと思います。アプリケーションでグループを活用する場合に利用価値のあるビューを紹介します。
($VIMGroups) ビュー
まずは、単純にグループを取得するためのビュー ”($VIMGroups)” です。このビューをデザイナーで開くと次のようになっています。
このビューは、隠しビューで、名称に "$" が付いています。また、"VIM" とついているので、ドミノサーバがメールの配信に使用している内部的なビューであることが想像できます。このような背景から、ビューの仕様が更新されることはなさそうですので、安心してアプリケーションで活用できそうですね。
1列目は、グループ名で昇順にソートされていますので、グループを検索するときに使用できます。
ちなみに選択式は、次の通りでした。競合文書は除外していますね。
SELECT Type = "Group" & @IsUnavailable($Conflict) & (!@IsAvailable($AutoCreatedList) | !@UpperCase($AutoCreatedList) = "DIP") |
"$AutoCreatedList" フィールドや "DIP" がどのような役割なのかはわかりかねるのですが、無視してよさそうです。少なくとも私は長い間アプリケーションで使用していて、問題はありませんでした。
($ServerAccess)
このビューは、ユーザ(またはグループ)が所属するグループを調査するときに使用できる便利なビューです。
デザイナーで設計を開くと次のようになっています。
このビューも命名規則から内部的に使用しているビューだと想像できますね。
1列目は、グループのメンバーを登録するフィールド "Members" でソートされています。列式は、次の通りとなっています。
REM {Remove all members that contain domain names (e.g. @ Domain)}; CanonicalMembers := @LowerCase(@Trim(Members)); Mask := @Left(CanonicalMembers; "@") + "@" + @Right(CanonicalMembers; "@"); @Trim(@Replace(CanonicalMembers; Mask; "")) |
少し複雑ですが、"Members" フィールドにドメインを含む場合は削除しています。また、文字はすべて小文字に変換しているので、検索時には注意が必要ですね。
"Members" フィールドは複数値のフィールドです。列の設定で複数値を分離した上で、ソートしていますので、ユーザが所属するグループが一塊になっています。@DbLookup や GetAllDocumentsByKey メソッドで検索すると簡単に所属グループを取得できます。
リスト値をうまく活用した事例といえますね。
まとめ
さまざまな会社のドミノ環境を見ていると、ドミノディレクトリにやたらとビューを追加している環境に出会うことがあります。
ビューを追加すると、アプリ開発者としてはずいぶん楽になるのですが、バージョンアップや設計の置換でビューが喪失するなど将来的にトラブルとなる可能性をはらみます。また、メーカとしてもドミノディレクトリをはじめ標準 DB のカスタマイズは推奨していません。場合によってはサポートしてもらえない可能性もあります。
開発者は手を抜かず、使える設計はないか、カスタマイズ前に十分確認しましょう。開発テクニックの発見や新しい気づきを得ることもあります。
宝探しのようで楽しいですよ。たぶん...
0 件のコメント:
コメントを投稿