Как получить идентификатор пользователя активного каталога из строкового поля рабочего элемента - PullRequest
1 голос
/ 22 марта 2012

Синхронизируя план проекта из MS Project .mpp с TFS, я хочу синхронизировать поле, представляющее собой строку, представляющую имя менеджера проекта, затронутого проектом. Как правило, эта строка берется из действительной группы пользователей Active Directory в TFS.

Я также ищу способ получения идентификатора пользователя для запроса базы данных SQL Server. Есть ли получить идентификатор пользователя от AD, когда у вас есть имя пользователя? Это, кажется, вариант, но не самый лучший.

Если бы в этом поле также можно было регистрировать идентификатор пользователя в то же время, когда я синхронизировал полное имя менеджера проекта, это было бы наилучшей альтернативой. Есть предложения?

<FIELD name="Project Manager" refname="Custom.ProjectManager" type="String" reportable="dimension">
<HELPTEXT>The name of the project manager.</HELPTEXT>
<SUGGESTEDVALUES expanditems="true" filteritems="excludegroups">
  <LISTITEM value="[global]\Project Collection Valid Users" />
</SUGGESTEDVALUES>
</FIELD>

Ответы [ 2 ]

1 голос
/ 25 июля 2013
using System.DirectoryServices.AccountManagement;

UserPrincipal user = UserPrincipal.FindByIdentity(yourDomain, IdentityType.Name, fullName);
0 голосов
/ 22 марта 2012

Это обходной путь, о котором я подумал. Недостатком является то, что USERID отображается всякий раз, когда вы видите имя менеджера проекта.

XML-файл типа рабочего элемента

    <FIELD name="Project Manager" refname="Custom.ProjectManager" type="String" reportable="dimension">
    <HELPTEXT>The name of the project manager.</HELPTEXT>
    <SUGGESTEDVALUES expanditems="true" filteritems="excludegroups">
      <LISTITEM value="(ID='DOEJ24') John Doe " />
      <LISTITEM value="(ID='DOEJ23') Jane Doe " />
      <LISTITEM value="(ID='SMIJ03') John Smith " />
      <LISTITEM value="(ID='COSG01') George Constanza " />
      <LISTITEM value="(ID='BRAT99') Tom Brady " />
    </SUGGESTEDVALUES>
    </FIELD>

C #

    var projectManager = WorkItemStore.GetWorkItem(Convert.ToInt32(id))["Project Manager"]);
    var pmUserId = projectManager.SubString(5, 6);

Таким образом, я могу легко запросить мою базу данных, в которой есть столбец идентификатора пользователя менеджера проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...