VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Objective-C编程 >
  • 通过AEC解读WF的核心原理(6)创建复本ForEach循环

制作者:剑锋冷月 单位:无忧统计网,www.51stat.net
 

  说明

  本例实现了一个从下向上倒着执行的顺序容器,本例并无什么具体的应用场景,只是一个控制子Activity执行的演示,

  本例演示了如何按一定规则执行子Activity,并在子Activity执行完成后关闭子Activity,在全部业务完成后关闭自已

  例子下载: http://files.cnblogs.com/wxwinter/aec5.rar

  例子 自定义Activity

通过AEC解读WF的核心原理(五)实现一个从下向上执行的顺序容器

  public class Activity1: SequenceActivity

  {
int index;
protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
{
index = this.EnabledActivities.Count - 1;
var v = this.EnabledActivities[index];
v.Closed +=v_Closed;
executionContext.ExecuteActivity(v);
return ActivityExecutionStatus.Executing;
}
  
void v_Closed(object sender, ActivityExecutionStatusChangedEventArgs e)
{
ActivityExecutionContext executionContext = sender as ActivityExecutionContext;
  
e.Activity.Closed -= v_Closed;
index = index - 1;
if (index < 0)
{
executionContext.CloseActivity();
}
else
{
var v = this.EnabledActivities[index];
v.Closed +=v_Closed;
executionContext.ExecuteActivity(v);
}
  
}
  }

编缉推荐阅读以下文章

  • 通过AEC解读WF的核心原理(十三完)实现Visio设计风格的Activity
  • 通过AEC解读WF的核心原理(十二)WorkflowQueue的提前提交
  • 通过AEC解读WF的核心原理(十一)WF与Windows操作系统的对比
  • 通过AEC解读WF的核心原理(十)取消与取消处理器
  • 通过AEC解读WF的核心原理(九)实现IEventActivity
  • 通过AEC解读WF的核心原理(八)实现Switch功能的Activity
  • 通过AEC解读WF的核心原理(七)一个实现Goto功能的Activity
  • 通过AEC解读WF的核心原理(六)创建复本ForEach循环
  • 通过AEC解读WF的核心原理(四)AEC在内部执行childActivity
  • 通过AEC解读WF的核心原理(三)Execute方法Activity的入口
 

  测试用工作流

通过AEC解读WF的核心原理(五)实现一个从下向上执行的顺序容器

public class Workflow1: SequentialWorkflowActivity
{
private CodeActivity codeActivity4;
private CodeActivity codeActivity3;
private CodeActivity codeActivity2;
private CodeActivity codeActivity1;
private Activity1 activity11;
  
    public Workflow1()
    {
      InitializeComponent();
    }
[System.Diagnostics.DebuggerNonUserCode]
private void InitializeComponent()
{
this.CanModifyActivities = true;
this.codeActivity4 = new System.Workflow.Activities.CodeActivity();
this.codeActivity3 = new System.Workflow.Activities.CodeActivity();
this.codeActivity2 = new System.Workflow.Activities.CodeActivity();
this.codeActivity1 = new System.Workflow.Activities.CodeActivity();
this.activity11 = new wxwinterAecTest.Activity1();
//
// codeActivity4
//
this.codeActivity4.Name = "codeActivity4";
this.codeActivity4.ExecuteCode += new System.EventHandler(this.codeActivity_ExecuteCode);
//
// codeActivity3
//
this.codeActivity3.Name = "codeActivity3";
this.codeActivity3.ExecuteCode += new System.EventHandler(this.codeActivity_ExecuteCode);
//
// codeActivity2
//
this.codeActivity2.Name = "codeActivity2";
this.codeActivity2.ExecuteCode += new System.EventHandler(this.codeActivity_ExecuteCode);
//
// codeActivity1
//
this.codeActivity1.Name = "codeActivity1";
this.codeActivity1.ExecuteCode += new System.EventHandler(this.codeActivity_ExecuteCode);
//
// activity11
//
this.activity11.Activities.Add(this.codeActivity1);
this.activity11.Activities.Add(this.codeActivity2);
this.activity11.Activities.Add(this.codeActivity3);
this.activity11.Activities.Add(this.codeActivity4);
this.activity11.Name = "activity11";
//
// Workflow1
//
this.Activities.Add(this.activity11);
this.Name = "Workflow1";
this.CanModifyActivities = false;
  
}
  
private void codeActivity_ExecuteCode(object sender, EventArgs e)
{
System.Console.WriteLine(((Activity)sender).Name);
}
  }

编缉推荐阅读以下文章

  • 通过AEC解读WF的核心原理(十三完)实现Visio设计风格的Activity
  • 通过AEC解读WF的核心原理(十二)WorkflowQueue的提前提交
  • 通过AEC解读WF的核心原理(十一)WF与Windows操作系统的对比
  • 通过AEC解读WF的核心原理(十)取消与取消处理器
  • 通过AEC解读WF的核心原理(九)实现IEventActivity
  • 通过AEC解读WF的核心原理(八)实现Switch功能的Activity
  • 通过AEC解读WF的核心原理(七)一个实现Goto功能的Activity
  • 通过AEC解读WF的核心原理(六)创建复本ForEach循环
  • 通过AEC解读WF的核心原理(四)AEC在内部执行childActivity
  • 通过AEC解读WF的核心原理(三)Execute方法Activity的入口
 

  宿主

class Program
{
static void Main()
{
WorkflowRuntime workflowRuntime = new WorkflowRuntime();
workflowRuntime.WorkflowCompleted +=new EventHandler<WorkflowCompletedEventArgs>(workflowRuntime_WorkflowCompleted);
workflowRuntime.WorkflowTerminated +=new EventHandler<WorkflowTerminatedEventArgs>(workflowRuntime_WorkflowTerminated);
workflowRuntime.WorkflowIdled+=new EventHandler<WorkflowEventArgs>(workflowRuntime_WorkflowIdled);
WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(Workflow1));
instance.Start();
  
System.Console.Read();
  
}
  
static void workflowRuntime_WorkflowIdled(object sender, WorkflowEventArgs e)
{
System.Console.WriteLine("WorkflowIdled");
}
  
static void workflowRuntime_WorkflowTerminated(object sender, WorkflowTerminatedEventArgs e)
{
System.Console.WriteLine("Terminated" + e.Exception.Message);
}
  
static void workflowRuntime_WorkflowCompleted(object sender, WorkflowCompletedEventArgs e)
{
System.Console.WriteLine("WorkflowCompleted");
}
  
}

  运行结果

通过AEC解读WF的核心原理(五)实现一个从下向上执行的顺序容器

编缉推荐阅读以下文章

  • 通过AEC解读WF的核心原理(十三完)实现Visio设计风格的Activity
  • 通过AEC解读WF的核心原理(十二)WorkflowQueue的提前提交
  • 通过AEC解读WF的核心原理(十一)WF与Windows操作系统的对比
  • 通过AEC解读WF的核心原理(十)取消与取消处理器
  • 通过AEC解读WF的核心原理(九)实现IEventActivity
  • 通过AEC解读WF的核心原理(八)实现Switch功能的Activity
  • 通过AEC解读WF的核心原理(七)一个实现Goto功能的Activity
  • 通过AEC解读WF的核心原理(六)创建复本ForEach循环
  • 通过AEC解读WF的核心原理(四)AEC在内部执行childActivity
  • 通过AEC解读WF的核心原理(三)Execute方法Activity的入口
 

  测试用工作流

通过AEC解读WF的核心原理(五)实现一个从下向上执行的顺序容器

public class Workflow1: SequentialWorkflowActivity
{
private CodeActivity codeActivity4;
private CodeActivity codeActivity3;
private CodeActivity codeActivity2;
private CodeActivity codeActivity1;
private Activity1 activity11;
  
    public Workflow1()
    {
      InitializeComponent();
    }
[System.Diagnostics.DebuggerNonUserCode]
private void InitializeComponent()
{
this.CanModifyActivities = true;
this.codeActivity4 = new System.Workflow.Activities.CodeActivity();
this.codeActivity3 = new System.Workflow.Activities.CodeActivity();
this.codeActivity2 = new System.Workflow.Activities.CodeActivity();
this.codeActivity1 = new System.Workflow.Activities.CodeActivity();
this.activity11 = new wxwinterAecTest.Activity1();
//
// codeActivity4
//
this.codeActivity4.Name = "codeActivity4";
this.codeActivity4.ExecuteCode += new System.EventHandler(this.codeActivity_ExecuteCode);
//
// codeActivity3
//
this.codeActivity3.Name = "codeActivity3";
this.codeActivity3.ExecuteCode += new System.EventHandler(this.codeActivity_ExecuteCode);
//
// codeActivity2
//
this.codeActivity2.Name = "codeActivity2";
this.codeActivity2.ExecuteCode += new System.EventHandler(this.codeActivity_ExecuteCode);
//
// codeActivity1
//
this.codeActivity1.Name = "codeActivity1";
this.codeActivity1.ExecuteCode += new System.EventHandler(this.codeActivity_ExecuteCode);
//
// activity11
//
this.activity11.Activities.Add(this.codeActivity1);
this.activity11.Activities.Add(this.codeActivity2);
this.activity11.Activities.Add(this.codeActivity3);
this.activity11.Activities.Add(this.codeActivity4);
this.activity11.Name = "activity11";
//
// Workflow1
//
this.Activities.Add(this.activity11);
this.Name = "Workflow1";
this.CanModifyActivities = false;
  
}
  
private void codeActivity_ExecuteCode(object sender, EventArgs e)
{
System.Console.WriteLine(((Activity)sender).Name);
}
  }


相关教程