Недопустимые ошибки типа при публикации Activity в WorkflowManager
Я установил Worfklow Manger 1.0. Я могу использовать WorkflowManagerClient для просмотра областей. Но когда я пытаюсь опубликовать активность, я получаю эту ошибку:
System.InvalidOperationException: Microsoft.Workflow.Client.ActivityValidationException: Workflow XAML failed validation due to the following errors: Invalid type(s) 'System.Activities.Expressions.AssemblyReference'.
Действие - это пустое действие, созданное из шаблона в VS. Там нет пользовательских типов, используемых в нем. Я нашел этот пост, и я уверен, что мог бы создать файл AllowedTypes.xml, но было бы странно добавлять типы, которые используются в базовом пустом действии - в основном системные типы (System.Activities.Expressions.AssemblyReference).
Нужно ли мне создать файл allowdtypes и поместить System.Activities.Expressions.AssemblyReference в один тип? Кто-нибудь должен был это сделать?
Редактировать:
Другие типы, которые вызывают ту же ошибку:
Microsoft.CSharp.Activities.CSharpReference`1
Microsoft.CSharp.Activities.CSharpValue`1
2 ответа
Получается, что я должен был использовать ExpressionTranslator, чтобы перевести все действия перед публикацией. Перевод - это шаг в процессе публикации Workflow в Workflow Manager. он в основном переводит все выражения в действиях рабочего процесса в форму, требуемую XAML, до публикации (установки) рабочего процесса на хосте.
Я использовал метод Перевести учебник Workflow Manager:
public static XElement Translate(string xamlFile)
{
string translatedWorkflowString = null;
using (XamlReader xamlReader = new XamlXmlReader(xamlFile))
{
TranslationResults result = ExpressionTranslator.Translate(xamlReader);
if (result.Errors.Count == 0)
{
StringBuilder sb = new StringBuilder();
using (XmlWriter xmlWriter = XmlWriter.Create(sb, new XmlWriterSettings { Indent = true, OmitXmlDeclaration = true }))
{
using (XamlXmlWriter writer = new XamlXmlWriter(xmlWriter, result.Output.SchemaContext))
{
XamlServices.Transform(result.Output, writer);
}
}
translatedWorkflowString = sb.ToString();
}
else
{
throw new InvalidOperationException("Translation errors");
}
}
return XElement.Parse(translatedWorkflowString);
}
Я не знаю, слишком ли поздно, но у меня возникла та же проблема даже с последним обновлением SharePoint Server 2013.
Я сравнил файл "workflow.xaml" из рабочего процесса SharePoint Designer (после сохранения его в качестве шаблона в библиотеке активов сайта) с файлом "workflow.xaml", созданным в Visual Studio 2013. Что я нашел и что решило мою проблему, так это добавление этих двух атрибутов как части элемента Activity.
xmlns:local
="clr-namespace:Microsoft.SharePoint.WorkflowServices.Activities"
xmlns:mwaw
="clr-namespace:Microsoft.Web.Authoring.Workflow;assembly=Microsoft.Web.Authoring"