【问题标题】:Calling Code Activity Within Code Activity在代码活动中调用代码活动
【发布时间】:2014-12-01 10:41:51
【问题描述】:
如何从代码活动中执行代码活动?
public sealed class ApprovalRequired : CodeActivity
{
EmailActivity ea = new EmailActivity() // this is a code activity
ea.Sender = ...
ea.Rec = ...
ea.Subject = "Approved"
// ea.Execute() -- there is no way to call the execute method..
}
【问题讨论】:
标签:
workflow
workflow-foundation-4
workflow-activity
workflowservice
【解决方案1】:
最简单的方法是准备一个基于 XAML 的活动,该活动有一个序列活动,其中包含您的 ApprovalRequired 活动。像这样的:
编辑:要真正从另一个活动执行“内部”活动,您的 ApprovalRequired 类应首先从 NativeActivity 类继承,并覆盖 CacheMetadata方法让工作流应用程序知道期望子活动将被执行。 ApprovalRequired 活动如下所示:
namespace WCA.Scratch
{
using System.Activities;
public sealed class ApprovalRequired : NativeActivity
{
public ApprovalRequired()
{
this.Email = new Email();
}
public Email Email
{
get;
set;
}
protected override void CacheMetadata(NativeActivityMetadata metadata)
{
metadata.AddImplementationChild(this.Email);
}
protected override void Execute(NativeActivityContext context)
{
// Some logic here...
this.Email.Body = "My email body.";
this.Email.From = "me@someplace.com";
this.Email.To = "someone@someplace.com";
this.Email.Subject = "Approval Request";
context.ScheduleActivity(this.Email);
// Some other logic here...
}
}
}
请记住,您还需要在 ApprovalRequired 的 CacheMetadata 方法中手动注册任何活动参数或活动变量。