在代码活动中调用代码活动

时间:2014-12-01 10:41:52

标签: workflow workflow-foundation-4 workflow-activity workflowservice

如何在代码活动中执行代码活动?

public sealed class ApprovalRequired : CodeActivity
{

,,
EmailActivity ea = new EmailActivity() // this is a code activity
ea.Sender = ...
ea.Rec = ...
ea.Subject = "Approved"

// ea.Execute() - 无法调用execute方法..

}

1 个答案:

答案 0 :(得分:1)

最简单的方法是准备一个基于XAML的活动,该活动在其中某处具有 ApprovalRequired 活动的序列活动。像这样:

enter image description here

编辑:要实际从其他活动执行“内部”活动,您的 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方法中手动注册任何活动参数或活动变量。

相关问题