Исключение выдается, поскольку SharePoint 2010 ожидает, что элемент AssociationData содержит действительный xml, где элемент AssociationData является тегом в схеме определения рабочего процесса.Я столкнулся с этой проблемой после переноса нашего приложения SP 2007 в SP 2010. К сожалению, недостаточно просто применить действительный элемент xml к элементу AssociationData в определении вашего рабочего процесса:
Это помогает только для созданных приложений и экземпляров рабочего процесса./ началось после внесения изменений.Поэтому для живых приложений и запущенных экземпляров рабочего процесса мы должны изменить AssociationData через объектную модель.Я реализовал набор методов, описанных здесь - SharePoint: рабочий процесс + форма редактирования элемента списка = значение не может быть нулевым. Исключение .Ниже перечислены основные методы:
public static void AdjustAssociationData(SPWorkflowAssociation workflowAssociation, SPWorkflowAssociationCollection collection)
{
if (!IsValidXml(workflowAssociation.AssociationData))
{
string newValue = string.IsNullOrEmpty(workflowAssociation.AssociationData)
? "<Data />"
: string.Format("<Data>{0}</Data>", workflowAssociation.AssociationData);
workflowAssociation.AssociationData = newValue;
collection.Update(workflowAssociation);
}
}
public static bool IsValidXml(string str)
{
if (!string.IsNullOrEmpty(str))
{
try
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(str);
return true;
}
catch {}
}
return false;
}
Кроме того, из упомянутого выше поста в блоге вы можете загрузить консольное приложение, которое я разработал и использовал против нашего проблемного приложения.Я надеюсь, что это будет полезно.