2012-02-27 56 views
2

是否有方法在执行之前确定工作流的参数?在运行时确定执行前的工作流参数

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

我正在寻找一种方法在执行前检查工作流,并尝试解析参数。我已经看过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文档,但基本上没有任何东西。

感谢您的任何帮助。

回答

2

我想当你谈论元数据存储在数据库你指的是设计师的XAML。

您可以加载XAML作为DynamicActivity这样的:

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

然后你通过DynamicActivity.Properties我 - 我访问其所有参数。

+0

谢谢,Jota。愚蠢的是,我实际上已经关注了CacheMetadata调用的DynamicActivity,但完全忽略了Properties集合。是的,我的意思是将XAML标记存储为blob中的文本。再次感谢。 – 2012-02-27 23:05:47

相关问题