私はJIRA SOAP APIをインタフェースするC#のツールを開発中です。私はここに見つけることができる文書を読んだ:JIRA SOAP API:ユーザのリストを取得
私はどのように特定のプロジェクトのすべての割り当て可能なユーザーのリストを得ることができる知っていますか?私は
私はJIRA SOAP APIをインタフェースするC#のツールを開発中です。私はここに見つけることができる文書を読んだ:JIRA SOAP API:ユーザのリストを取得
私はどのように特定のプロジェクトのすべての割り当て可能なユーザーのリストを得ることができる知っていますか?私は
[OK]を、私はので、ここで良い形で、今日でなければなりませんが
/// <summary>
/// object interface to the JIRA API
/// </summary>
private readonly JiraSoapServiceClient _JiraService;
/// <summary>
/// authentication token returned by the login method
/// that can be used on all other SOAP methods
/// </summary>
private readonly string _Token;
/// <summary>
/// name of the RemoteProjectRole "Developers"
/// </summary>
private const string DEVELOPER_ROLE = "Developers";
/// <summary>
/// id of the RemoteProjectRole "Developers"
/// </summary>
private static long? _DeveloperId;
/// <summary>
/// return the list of the names of all the users who have
/// the role "Developers" in a project
/// </summary>
/// <param name="project"></param>
/// <returns></returns>
public List<string> GetUsersForProject(string project)
{
List<string> users = new List<string>();
try
{
// get the RemoteProject
RemoteProject rp = _JiraService.getProjectByKey(_Token, project);
// get the "Developers" Prject Role
RemoteProjectRole developerRole = getDeveloperRole();
if (developerRole != null)
{
// we can use this method only if the user logged in is an administrator
RemoteRoleActors actors = _JiraService.getProjectRoleActors(_Token, developerRole, rp);
foreach (RemoteRoleActor actor in actors.roleActors)
{
foreach (RemoteUser user in actor.users)
{
users.Add(user.name);
}
}
}
}
catch (Exception ex)
{
// TODO log the error
users.Clear();
}
users.Sort();
return users;
}
/// <summary>
/// return the RemoteProjectRole "Developers"
/// </summary>
/// <returns></returns>
private RemoteProjectRole getDeveloperRole()
{
RemoteProjectRole developerRole = null;
if (_DeveloperId == null)
{
// the first time we call this function we don't know the id of this role
// that's why we are obliged to find it with a foreach on all the project roles
foreach (RemoteProjectRole role in _JiraService.getProjectRoles(_Token))
{
if (role.name == DEVELOPER_ROLE)
{
developerRole = role;
_DeveloperId = role.id;
break;
}
}
}
else
{
// we have the id so we can get directly the RemoteProjectRole from the JIRA SOAP API
developerRole = _JiraService.getProjectRole(_Token, (long)_DeveloperId);
}
return developerRole;
}
コメントは歓迎されている私の問題の解決策である...それはまだ実行する方法を見つけることができませんでした。明らかに、我々は異なる役割のために同じ方法を使用することができます。 JIRA APIのログインに使用したユーザがいくつかの管理者権限を持っていることを確かめてください
FlexからgetProjectRoleActors(少なくとも)を呼び出すとき、ログインしたユーザが管理者ではない場合、あなたが期待しているようにエラーや空の応答を得ると、全く応答がなくなり、ユーザを管理者にすることを覚えているまでは非常に不満です。
「Get Users」という一般的なコマンドがないため、直感的ではありません。質問をする前にプロジェクトとロールオブジェクトを読み込む必要があります。
ここではPHPで同じ基本的な実装では、(私はそれを書いたので)ですが、「開発者」ではなく、「ユーザー」の役割をオフ・キーイング:
$base_url = 'https://yourjira.domain.com';
$wsdl = $base_url . '/rpc/soap/jirasoapservice-v2?wsdl';
$username = 'username';
$password = 'password';
$client = new SoapClient($wsdl);
try {
$token = $client->login($username, $password);
}
catch (SoapFault $fault) {
echo "Error logging in to JIRA";
print_r($fault);
}
$code = 'MYPROJECT'
$project = $client->getProjectByKey($token, $code);
$role = $client->getProjectRole($token, 10000); // 10000 is typically the "users" role
$users = $client->getProjectRoleActors($token, $role, $project);
print_r($users);