Jira Data Center で、プロジェクト ロールに割り当てられたユーザーの一覧を取得する
プラットフォームについて: Data Center のみ。 - This article only applies to Atlassian apps on the Data Center プラットフォーム。
この KB は Data Center バージョンの製品用に作成されています。Data Center 固有ではない機能の Data Center KB は、製品のサーバー バージョンでも動作する可能性はありますが、テストは行われていません。 Server* 製品のサポートは 2024 年 2 月 15 日に終了しました。Server 製品を実行している場合は、 アトラシアン Server サポート終了 のお知らせにアクセスして、移行オプションを確認してください。
*Fisheye および Crucible は除く
要約
この記事では、SQL クエリを使用してデータベースから直接すべてのユーザーをプロジェクト ロールとプロジェクトごとに一覧化する方法を紹介します。
ソリューション
Jira プロジェクト ロール ユーザーの一覧
これは PostgreSQL データベースで記載および検証されたため、データベースによっては微調整が必要になる場合があります。
ユーザーをプロジェクト ロールに割り当てる方法には次の 3 つがあります。
ユーザー名を使って直接割り当てる方法
ユーザーが所属するグループを使って割り当てる方法
ユーザーが所属するグループを包含するグループ (入れ子グループ) を使って割り当てる方法
以下のクエリは 1 と 2 の場合のみを網羅しています。
SELECT p.pkey as "Project key", pr.name as "Role name", u.lower_user_name as "Username", u.display_name as "Display name", u.lower_email_address as "e-Mail", null as "Group name"
FROM projectroleactor pra
INNER JOIN projectrole pr ON pr.ID = pra.PROJECTROLEID
INNER JOIN project p ON p.ID = pra.PID
INNER JOIN app_user au ON au.user_key = pra.ROLETYPEPARAMETER
INNER JOIN cwd_user u ON u.lower_user_name = au.lower_user_name
WHERE pra.roletype = 'atlassian-user-role-actor'
UNION
SELECT p.pkey as "Project key", pr.name as "Role name", cmem.lower_child_name as "Username", u.display_name as "Display name", u.lower_email_address as "e-Mail", cmem.lower_parent_name as "Group name"
FROM projectroleactor pra
INNER JOIN projectrole pr ON pr.ID = pra.PROJECTROLEID
INNER JOIN project p ON p.ID = pra.PID
INNER JOIN cwd_membership cmem ON cmem.parent_name = pra.roletypeparameter
INNER JOIN app_user au ON au.lower_user_name = cmem.lower_child_name
INNER JOIN cwd_user u ON u.lower_user_name = au.lower_user_name
WHERE pra.roletype = 'atlassian-group-role-actor'
order by 1, 2, 3;
「Group name」が空の場合、ユーザーは明示的にプロジェクト ロールに割り当てられています。空でない場合、ユーザーはグループ メンバーシップ経由でロールを継承します。
その他の例
ライセンスが付与されたすべてのユーザーの一覧を取得するには「Jira サーバーでライセンスが付与されたユーザーの一覧を取得する」をご確認ください。
1 - 次のクエリを実行すると、プロジェクト、そのプロジェクト内のロール、そのロールに割り当てられたユーザーおよびグループの一覧が表示されます。
SELECT p.pname as ProjN, pr.NAME as roleN, pra.roletype, pra.roletypeparameter
FROM projectroleactor pra
INNER JOIN projectrole pr ON pr.ID = pra.PROJECTROLEID
INNER JOIN project p ON p.ID = pra.PID
order by p.pname;
⚠️ 非常に基本的なクエリです。そのため、要件に合わせて厳密な結果を取得するには、おそらく多少の変更が必要となります。たとえば、プロジェクト (WHERE p.pname = "My Project") やロール (pr.NAME = "Developers") の条件を追加して結果を制限することができます。
2 - ロール名で絞り込み:
SELECT p.pname, pr.NAME, u.display_name
FROM projectroleactor pra
INNER JOIN projectrole pr ON pr.ID = pra.PROJECTROLEID
INNER JOIN project p ON p.ID = pra.PID
INNER JOIN app_user au ON au.user_key = pra.ROLETYPEPARAMETER
INNER JOIN cwd_user u ON u.lower_user_name = au.lower_user_name
WHERE name = 'Service Desk Team';
3 - プロジェクト名で絞り込み:
SELECT p.pname, pr.NAME, u.display_name
FROM projectroleactor pra
INNER JOIN projectrole pr ON pr.ID = pra.PROJECTROLEID
INNER JOIN project p ON p.ID = pra.PID
INNER JOIN app_user au ON au.user_key = pra.ROLETYPEPARAMETER
INNER JOIN cwd_user u ON u.lower_user_name = au.lower_user_name
WHERE pname = 'SCRUM';
4 - Jira Service Management のプロジェクトだけで絞り込み (Jira Software を検索する場合は、software に変更する):
SELECT p.pname, pr.NAME, u.display_name
FROM projectroleactor pra
INNER JOIN projectrole pr ON pr.ID = pra.PROJECTROLEID
INNER JOIN project p ON p.ID = pra.PID
INNER JOIN app_user au ON au.user_key = pra.ROLETYPEPARAMETER
INNER JOIN cwd_user u ON u.lower_user_name = au.lower_user_name
WHERE projecttype = 'service_desk';
5 - すべてのプロジェクトでプロジェクト ロールに割り当てられたグループに属するユーザーの一覧:
SELECT p.pname as ProjN, pr.NAME as roleN, pra.roletype, pra.roletypeparameter, cmem.child_name, u.display_name
FROM projectroleactor pra
INNER JOIN projectrole pr ON pr.ID = pra.PROJECTROLEID
INNER JOIN project p ON p.ID = pra.PID
INNER JOIN cwd_membership cmem ON cmem.parent_name = pra.roletypeparameter
INNER JOIN app_user au ON au.lower_user_name = cmem.child_name
INNER JOIN cwd_user u ON u.lower_user_name = au.lower_user_name
WHERE pra.roletype = 'atlassian-group-role-actor' order by p.pname;
この内容はお役に立ちましたか?