Получение параметров из ExtendedProperties задания на форме редактирования в рамках рабочего процесса SharePoint

В SharePoint, работая с рабочими процессами, в любом случае придётся использовать какие-то свои параметры/атрибуты для заданий. Вот только, если в самом р.п. нет проблем при получении оных, то на форме редактирования рабочего процесса возникают трудности.

Ну, скажем, есть у нас задание:

public CreateTaskWithContentType _Task;        // задание

Если мы хотим записать какие-то свои параметры, то пишем их в ExtendedProperties. Например:

_Task.TaskProperties.ExtendedProperties["MyDescription"] = "Моё задание";

В дальнейшем можно так же обратиться к этому параметру для считывания значения. На форме редактирования же всё посложнее немного. Про работу с формой редактирования я уже писал. Для получения каких-то стандартных параметров можно обращаться так же к ExtendedProperties:

string Fname = this._TaskListItem["ows_WorkflowLink"].ToString();

А вот для получения свои параметров так не прокатит. Что странно. Вообще, параметры между рабочим процессом и формами передаются в виде XML, что очевидно. Но почему-то SP не парсит ExtendedProperties из XML файла, поэтому немного поизвращаться надо для получения своих параметров:

private string GetParam(string paramName)
{
    XmlDocument xmlDoc = new XmlDocument();
    //получаем xml файл параметров задания в виде строки
    string xml = this._TaskListItem.Xml;
    //преобразуем нормальный xml
    xmlDoc.LoadXml(xml);
    if (xmlDoc.FirstChild.Attributes["ows_ExtendedProperties"] == null) return string.Empty;
    //получаем атрибут ExtendedProperties
    string elems = xmlDoc.FirstChild.Attributes["ows_ExtendedProperties"].Value;
    //но он не xml'евского формата...дописываем теги
    xmlDoc.LoadXml("<x " + elems + " />");
    //вытаскиваем отсюда нужный нам параметр
    return xmlDoc.FirstChild.Attributes[paramName] != null ? xmlDoc.FirstChild.Attributes[paramName].Value : string.Empty;
}

Теперь для получения значения собственного параметра необходимо вызвать этот метод:

GetParam("ows_MyDescription");
  Категории: SharePoint, Workflow, Коддинг