【问题标题】: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...
            }
        }
    }
    

    请记住,您还需要在 ApprovalRequiredCacheMetadata 方法中手动注册任何活动参数或活动变量。

    【讨论】:

      最近更新 更多