В 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;