В 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;//преобразуем нормальный xmlxmlDoc.LoadXml(xml);if (xmlDoc.FirstChild.Attributes["ows_ExtendedProperties"] == null) return string.Empty;//получаем атрибут ExtendedPropertiesstring 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");
Уведомление: Получение параметров из ExtendedProperties предварительно добавив их в тип контента | Suvitruf's Blog