2023/08/04

ドミノディレクトリのグループ関連ビュー

今回はドミノディレクトリの中でグループに関するビューについて取り上げたいと思います。アプリケーションでグループを活用する場合に利用価値のあるビューを紹介します。


($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 件のコメント:

コメントを投稿