在Windows工作流基础中, 是否可以从外部文件加载工作流程?目的是创建一个通用的工作流控制器,它从文件中获取状态机工作流并加载它。如果我去使用VS中提供的设计器,工作流程图将变得固定,并且只能用于特定用例,但是,我需要制作一个通用工具。
答案 0 :(得分:1)
是的,您可以使用var searchString = '2016';
vm.usersList = $filter('filter')(UserResolve, function(value, index, array){
if(value.name == searchString || value.rut == searchString) {
return true;
}
});
和XamlActivityServices
类型将XAML工作流保存到文件或从文件加载XAML工作流。您可以在代码中动态构建工作流,然后使用该服务将其序列化为XML以便稍后使用。
如果您希望允许用户创建和编辑工作流程,您可以根据需要直接在应用程序中重新托管设计师。
将工作流程保存到文件
以下是将工作流程保存到文件的快速示例:
ActivityBuilder
上面应该生成如下所示的XML文件:
var activityBuilder = new ActivityBuilder();
activityBuilder.Name = "HelloWorldApp";
activityBuilder.Properties.Add(new DynamicActivityProperty { Name = "UserName", Type = typeof(InArgument<string>) });
activityBuilder.Implementation = new Sequence
{
Activities =
{
new WriteLine
{
Text = new CSharpValue<string>("\"Hello, \" + UserName + \", how are you?\"")
}
}
};
using (var streamWriter = File.CreateText(@"C:\Temp\MyWorkflow.xaml"))
{
using (var xamlWriter = new XamlXmlWriter(streamWriter, new XamlSchemaContext()))
{
using (var builderWriter = ActivityXamlServices.CreateBuilderWriter(xamlWriter))
{
XamlServices.Save(builderWriter, activityBuilder);
}
}
}
从文件加载XAML工作流程
以下代码段显示从文件加载工作流程,然后运行水合工作流程。
<?xml version="1.0" encoding="utf-8"?>
<Activity x:Class="HelloWorld"
xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities"
xmlns:mca="clr-namespace:Microsoft.CSharp.Activities;assembly=System.Activities"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<x:Members>
<x:Property Name="UserName" Type="InArgument(x:String)" />
</x:Members>
<Sequence>
<WriteLine>
<InArgument x:TypeArguments="x:String">
<mca:CSharpValue x:TypeArguments="x:String">
"Hello, " + UserName + ", how are you?"
</mca:CSharpValue>
</InArgument>
</WriteLine>
</Sequence>
</Activity>