我正在考虑重新托管工作流设计器。我想能够在用户向设计师游说添加活动时运行一些代码。当用户在设计时添加活动时是否会触发事件?或者我可以使用活动的活动吗?谢谢!
答案 0 :(得分:3)
对于任何可能偶然发现这一点的人来说,这就是我想出来的......
首先,在创建工作流设计器时,您需要订阅ModelChanged事件。
_workflowDesigner = new WorkflowDesigner();
_workflowDesigner.Load(new Sequence());
ModelService ms = _workflowDesigner.Context.Services.GetService<ModelService>();
if (ms != null)
ms.ModelChanged += new EventHandler<ModelChangedEventArgs>(ms_ModelChanged);
我的事件处理程序看起来像这样......
void ms_ModelChanged(object sender, ModelChangedEventArgs e)
{
if (e.ItemsAdded != null && e.ItemsAdded.Count<ModelItem>() == 1)
{
ModelItem item = e.ItemsAdded.FirstOrDefault<ModelItem>();
var test = item.GetCurrentValue() as MyActivityType;
if (test != null && test.Id == null)
{
//do whatever initialization logic is needed here
}
}
}
我需要赞扬this来源,指出我正确的方向。
要注意的一件事 - 当你在模型中移动一个活动时,会引发两个事件,一个删除和一个添加。此时,我不需要担心我是否正在添加或移动活动,因为我可以判断它是否已经初始化,但是如果您需要知道某些内容是否真的添加到模型中,您可能需要跟踪这两个事件。