将Activity发布到WorkflowManager时出现无效的类型错误

时间:2014-10-27 12:05:39

标签: c# .net workflow-foundation workflow-manager-1.x

我已经安装了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中的模板创建的空活动。其中没有使用自定义类型。我发现this post并且我可以创建AllowedTypes.xml文件但是添加基本空活动中使用的类型感觉很奇怪 - 基本上是系统类型( System.Activities.Expressions.AssemblyReference )。

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

修改:

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

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

2 个答案:

答案 0 :(得分:0)

事实证明,我应该使用ExpressionTranslator在发布之前转换所有活动。 翻译是在Workflow Manager中发布工作流程的一个步骤。它基本上翻译了表单中工作流活动中的所有表达式 在将工作流发布(安装)到主机之前,XAML需要它。

我使用了Workflow Manager tutorial翻译方法:

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);
    }

答案 1 :(得分:0)

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

我所做的是将SharePoint Designer工作流程中的“workflow.xaml”文件(在将其作为模板保存到Site Assets库中之后)与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"