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