拡張SQLを使った所属グループの確認テーブルの作成方法
まず、確認するテーブル(サイト)は以下の構成で作成してください。
- 記録テーブルを作成します。(サイトIDをメモっておいてください)
- テーブルに登録する項目は、IDとバージョン以外に「担当者」「分類A」を追加します。
- 「担当者」の選択肢一覧には、[[Users*]] などを指定します。確認したいユーザが含まれるようにすればよいです。
- 「分類A」の選択肢一覧には、[[Groups*]]を指定します。また複数選択にチェックを入れます。名前は「所属グループ」にします。
ここまでは難しくないと思います。
さて次に拡張SQLの設定です。
以下の2つのファイル(Group_Check.json、Group_Check.json.sql)を作成します。
これらをプリザンターのParameter\ExtendedSqls フォルダに保存します。
(Windowsの場合は、C:\web\pleasanter\Implem.Pleasanter\App_Data\Parameters\ExtendedSqlsなどです)
<Group_Check.json>
{
"Name": "Group_Check",
"Description": "所属グループ確認",
"SiteIdList" : [上記でメモしたサイトID] ,
"OnCreated": true,
"OnUpdated": true
}
<Group_Check.json.sql SQL Server用>
UPDATE
Results
SET
ClassA = STUFF((SELECT '","' + CONVERT(varchar,GroupId) FROM GroupMembers WHERE UserId = (SELECT Owner FROM Results WHERE ResultId = {{Id}}) FOR XML PATH('')), 1, 2, '[') + '"]'
WHERE
ResultId = {{Id}}
<Group_Check.json.sql PostgreSQL用>
UPDATE
"Implem.Pleasanter"."Results"
SET
"ClassA" = (SELECT CONCAT( '["' ,
(SELECT ARRAY_TO_STRING(ARRAY_AGG("GroupId"),'","') FROM "Implem.Pleasanter"."GroupMembers" WHERE "UserId" = (SELECT "Owner" FROM "Implem.Pleasanter"."Results" WHERE "ResultId" = {{Id}}))
,'"]'))
WHERE
"ResultId" = {{Id}};
※PostgreSQLのバージョン14以前では、"Implem.Pleasanter" 部分は publicとなりますのでご注意ください。
サイトIDは、上記でメモしたサイトIDに変更して保存してください。
保存した後に、Webサービス(Windowsの場合はIIS)を再起動します)
上記のテーブルで担当者を選択して「作成」または「更新」を選択すると、「所属グループ」にプリザンターに登録されているグループの一覧が表示され、所属しているグループにチェックが入った状態になります。
<作成/更新前>
<作成/更新後>
所属グループの確認方法
こんにちは、CCSの田中です。久しぶりの投稿になります。
みなさん、プリザンターでのグループ設定を利用されていると思います。
ユーザをグループに所属させて、アクセス権限等の設定をするなどで使用しているのではないでしょうか?
このグループ設定は便利なのですが、現時点で機能的に不足しているところがあります。何かと言うと、例えばWindows(Active Directory)のように個人がどのグループに所属しているかの確認ができますが、プリザンターでは各グループに登録されているユーザは確認できるものの、個人の所属するグループを一括で確認する方法がありません。
そこで、今時点で困っている人もいるかもしれませんので、拡張SQLを使って「個人の所属するグループを確認するテーブル」を作成したいと思います。
拡張SQLは、プリザンター全体に影響が出てしまう部分があり、Webサービスの再起動も必要なため手間なのですが、興味がある方は作業に十分注意して実施してみてください。