我有一个创建子工作流(评估 VisualBasicValue 表达式)的 WF (4.5) 工作流活动。在完成父工作流程之前,我需要结果。
我将表达式添加到元数据中,如下所示:
private VisualBasicValue<string> _expression;
protected override void CacheMetadata(NativeActivityMetadata metadata)
{
base.CacheMetadata(metadata);
var visualBasicValue = (VisualBasicValue<string>)(_childActivity.Text.Expression);
var expressionText = visualBasicValue.ExpressionText;
_expression = new VisualBasicValue<string>(expressionText);
metadata.AddChild(_expression);
}
我尝试在 Execute 方法中安排活动,如下所示:
protected override void Execute(NativeActivityContext context)
{
context.ScheduleActivity(context, _expression, OnCompleted);
Result.Set(context, _value);
}
回调:
private void OnCompleted(NativeActivityContext context, ActivityInstance completedInstance, string result)
{
_value = result;
}
不幸的是,_expression 活动仅在父级的执行方法返回后执行。将其添加为实现子项不起作用(它不能作为实现子项工作,因为它应该评估包含父项外部变量的表达式)。
任何想法如何克服这一点并在执行上下文中执行?