Узнать имя и путь к элементу, к которому прикреплён рабочий процесс

В SharePoint проблемно как-то узнать путь к элементу, на котором запустили рабочий процесс. Если рабочий процесс запущен в библиотеке на документе, то проблем нет, если же к элементу списка, то уже проблема.

Есть у нас _WorkflowProperties, к примеру:

protected SPWorkflowActivationProperties _WorkflowProperties;

Хотим узнать имя элемента, к которому прикрепили рабочий процесс.

//имя элемента
string name = _WorkflowProperties.Item.Name;

//если же прикрепили к файлу в библиотеке документов, можно ещё так
string name = _WorkflowProperties.Item.File.Name;
//если прикреплён к элементу списка, то в _WorkflowProperties.Item.File.Name будет null

Так что, для получения имени универсально обращаемся к _WorkflowProperties.Item.Name. А если хотим узнать ссылку на элемент, то уже проблемы. Если прикрепили к файлу в библиотеке документов, то ссылку нормально так получить можно:

string url = _WorkflowProperties.WebUrl + _WorkflowProperties.Item.File.ServerRelativeUrl;

Если прикреплён к элементу списка, то надо к Item обращаться. Но в _WorkflowProperties.Item.Url будет что-то вроде “Lists/List5/2_.000″. Так что отсюда надо выцепить путь к списку и добавить ID элемента. Как-то так:

string url = _WorkflowProperties.WebUrl + "/"+ _WorkflowProperties.ItemUrl.Substring(0, _WorkflowProperties.ItemUrl.LastIndexOf("/")+1) +
                   "DispForm.aspx?ID="+ _WorkflowProperties.ItemId;
  Категории: CMS, SharePoint, Workflow, Коддинг