0

我已经安装了 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'.

Activity 是从 VS 中的模板创建的空 Activity。其中没有使用自定义类型。我找到了这篇文章,我想我可以创建 AllowedTypes.xml 文件,但是添加在基本空活动中使用的类型感觉很奇怪 - 基本上是系统类型(System.Activities.Expressions.AssemblyReference)。

我是否需要创建 allowedtypes 文件并将System.Activities.Expressions.AssemblyReference作为一种类型?有没有人必须这样做?

编辑:

导致相同错误的其他类型是:

Microsoft.CSharp.Activities.CSharpReference`1
Microsoft.CSharp.Activities.CSharpValue`1
4

2 回答 2

0

所以事实证明,我应该在发布之前使用 ExpressionTranslator 来翻译所有活动。翻译是在 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);
    }
于 2014-10-27T14:43:26.070 回答
0

我不知道是否为时已晚,但即使使用最新的 SharePoint Server 2013 升级,我也遇到了同样的问题。

我所做的是将 SharePoint Designer 工作流中的“workflow.xaml”文件(在将其作为模板保存到站点资产库中之后)与 Visual Studio 2013 中生成的“workflow.xaml”文件进行比较。我发现了什么解决我的问题的方法是将这两个属性添加为 Activity 元素的一部分。

xmlns:local

="clr-namespace:Microsoft.SharePoint.WorkflowServices.Activities"

xmlns:mwaw

="clr-namespace:Microsoft.Web.Authoring.Workflow;assembly=Microsoft.Web.Authoring"
于 2015-04-09T22:01:16.437 回答