Workflow Foundation 的新手,所以这对你们中的许多人来说可能是一个基本问题。
我有一个工作流设计器(客户端)/服务器应用程序。在设计器中,我可以将工作流上传到服务器,服务器将它们存储在数据库中。设计者可以请求从服务器下载工作流。下载完成后,我们可以在设计器中修改后再上传。为了能够做到这一点,我需要在工作流程中添加某种 ID/Key。
最好的方法是什么?
我正在考虑向 ActivityBuilder 添加一个属性,但这样做会将其添加到参数列表中,这似乎不正确......
任何帮助将非常感激
嗨@Will,我尝试将属性附加到活动,但我无法让它工作。我没有使用任何像 WorkflowRecord 这样的模型,它只是一个基本的设计师。
我使用 _workflowDesigner.Save(path); 保存它或 _workflowDesigner.Load(path); 加载它。
我创建并添加附加属性
attachProp = new AttachedProperty<int?>()
{
Name = "Key",
IsBrowsable = true,
Getter = (modelItem) => 5,
Setter = ((modelItem, keyValue) => modelItem.Properties["Key"].SetValue(keyValue)),
OwnerType = typeof(Activity)
};
_workflowDesigner.Context.Services.GetService<AttachedPropertiesService>().AddProperty(attachProp);
如果我尝试访问附加的属性,它会抛出一个异常(不包含键的定义)
dynamic mainActivity = ((_workflowDesigner.Context.Services.GetService<ModelService>().Root.GetCurrentValue() as ActivityBuilder).Implementation as Activity);
int? testValue = mainActivity.Key; //Exception, Activity' does not contain a definition for 'Key'
我通读了这个 [post] ( http://blogs.msdn.com/b/kushals/archive/2010/01/04/base-designer-with-additional-adornments.aspx ) 将附加属性添加到活动