【问题标题】:Invalid type(s) error while publishing Activity to WorkflowManager将 Activity 发布到 WorkflowManager 时出现无效类型错误
【发布时间】:2014-12-22 14:38:38
【问题描述】:

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

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

编辑:

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

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

【问题讨论】:

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


    【解决方案1】:

    所以事实证明,我应该在发布之前使用 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);
        }
    

    【讨论】:

      【解决方案2】:

      我不知道是否为时已晚,但即使是最新的 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"
      

      【讨论】:

        猜你喜欢
        • 2020-09-11
        • 2019-04-07
        • 1970-01-01
        • 2020-09-11
        • 2015-10-10
        • 1970-01-01
        • 2022-12-29
        • 2018-03-16
        • 2011-06-11
        相关资源
        最近更新 更多