我已经安装了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
答案 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"