Недопустимые ошибки типа при публикации 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"
Другие вопросы по тегам