workflow-foundation-4 - 在执行之前确定运行时的工作流程参数

标签 workflow-foundation-4

有没有办法在执行工作流之前确定工作流的参数?

我开发了一个重新托管设计器的应用程序,以便最终用户可以开发自己的工作流程。在此过程中,用户可以将自己的参数添加到工作流程中。

我正在寻找一种在执行之前检查工作流程的方法,并尝试解决参数。我查看了 WorkflowInspectionServices 类,但我似乎无法从中请求特定类型的项目。

理想情况下,我想使用以下内容从数据库中存储的元数据构建工作流程:

var workflow = ActivityXamlServices.Load(new XamlReader(new StringReader(xamlText)));
var metadata = SomeUnknownMagicClass.Inspect(workflow);

var inputs = new Dictionary<string, object>()
forreach(var argument in metadata.Arguments)
{
    inputs.Add(argument.Name, MagicArgumentResolver.Resolve(argument.Name));
}

WorflowInvoker.Invoke(workflow, inputs);

我可能遗漏了一些东西,但 WorkflowInspectionServices 似乎没有这样做。它有一个 CacheMetadata 方法,当您阅读 MSDN 文档时,该方法听起来很有希望,但基本上什么也没有出现。

感谢您的帮助。

最佳答案

我猜当您谈论存储在数据库中的元数据时,您指的是设计器中的 XAML。

您可以将该 XAML 加载为 DynamicActivity 像这样:

using (var reader = new StringReader(xamlString))
{
    var dynActivity = 
        ActivityXamlServices.Load(reader) as DynamicActivity;
}

然后您可以通过 DynamicActivity.Properties 访问其所有参数

关于workflow-foundation-4 - 在执行之前确定运行时的工作流程参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9466088/

相关文章:

workflow-foundation-4 - 具有相关性的重复工作流

workflow-foundation-4 - 调度实现带有输入参数的接口(interface)的子事件

c# - 非阻塞书签有什么意义以及如何恢复到它?

wcf - 如何处理乱序调用的 "Receive"?

c# - System.Activities.ActivityBuilder 的隐藏工作流参数

c# - 并行执行单个工作流实例

workflow-foundation-4 - 如何在重新托管的工作流设计器中扩展上下文菜单?

c# - WF4.5 不编译并行 C# 工作流程

c# - 在 Workflow Foundation 4 中管理 ObjectContext

workflow-foundation-4 - Windows工作流程4:WorkflowApplication取消,终止和中止之间的区别