Workflow学习笔记 之Workflow HelloWord
2012-02-07 23:09
471 查看
一点闲话
年前的时候,到北京了一周,把工作定了下来。年后,初十的火车,11的清晨,天未明的时候来到京城。
从此,开始了人生的一个新的阶段。
Ok,最近要学习很多新的知识了。不仅仅是专业知识,还有职场,各个方面。
接下来,我们谈一下workflow的helloword,我们的第一个工作流应用程序。将分别使用模版和纯手工编写两种方式实现。
首先我们利用vs的模板,构建我们的hello word程序
新建一个workflow的控制台应用程序
如图所示(选择 Sequential Workflow Console Application)
注意,我们这里使用的是.net3.5的Framework。如果使用4.0的,创建的是xaml的设计文件,虽说本质上二者没有差别,但是我对其还不太熟悉。而且接下来的Activity使用都是基于.net3.5的,暂时就先用。随后,我把4.0的搞清楚后,会补上。
点击确定后,出现如下界面。
双击workflow1.cs可以看到设计界面
从右边的工具箱中,拖进一个condeacvity。
可以看到有一个红色的感叹号,这是因为我们没有设置其ExecuteCode事件设置的。
查看其属性,双击事件中的ExecuteCode框,
可以像传统的事件生成模式一样,编译器为我们生成相应事件代码。
在codeActivity1中填写代码
Console.WriteLine("hello word!");
很好理解,表示工作流执行到CodeAcvity活动时,将会执行该函数。
我们的工作流怎么运行起来呢?
找到Program.cs文件,这是控制台应用程序main方法所在的类。我们可以看到如下代码
暂时不需要做更改。
instance.Start();方法将会执行我们设计器中设计的工作流,从上而下执行。
运行,我们的hello word 正常运行。
可以看到我们的工作流workflow分为了两部分,一个是workflow.cs,一个是workflow.designer.cs。或许你已经明白,designer.cs是由编译器维护的,正是他,为我们完成了可视化的视图。我们只需要在前者中写我们所关注的代码即可。同样的,我们也可以采用另一种方式,效果是一样的。
添加一个sequential work flow (with code separation),文件的后缀将是xoml形式的。该文件也分为,workflow2.xoml,和workflow2.xoml.cs ,前者也是维护了可视化图形的代码。
我们同样的向工作流中拖入codeActivity,为其设置codeActivity1_ExecuteCode
修改Program.cs中WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(WorkflowConsoleApplication1.Workflow1));为
WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(WorkflowConsoleApplication1.Workflow2));//构建workflow2实例。
运行亦可。
纯手工的helloword
接下来,我们全部使用完全代码编写的形式完成helloword。
新建一个空的工作流Project
点击确定,修改项目属性为控制台项目。
为项目添加Program.cs,workflow.xoml文件。
使用xml编辑打开Workflow.xoml文件。在里边输入如下代码。
这样,我们就等同于向工作流中拖入了一个CodeActivity。当然我们还需要为其设置ExecuteCode属性(事件),修改为如下代码
ExecuteCode属性指明了将要执行的方法。
Xoml 可以像aspx一样,使用内嵌代码的形式。我们将SayHello方法放在<x:code>标签中。然后,我们为项目添加Workflow.xoml.cs类文件,将其设为public,并使其继承自SequentialWorkflowActivity,并添加partial关键字
这样的化,将会和xoml中的x:Class="EmptyWorkflow.Workflow"指定的名词生成同一个类。这样我们就完成了工作流的主体。然后,我们向program中添加main方法。
运行程序,可以看到应用程序正常运行。
Ok,这样我们就完成了我们工作流的第一个helloword应用。
另外大家也可以看看这个系列的文章,还是比较适合初学者的。
/article/4694746.html
年前的时候,到北京了一周,把工作定了下来。年后,初十的火车,11的清晨,天未明的时候来到京城。
从此,开始了人生的一个新的阶段。
Ok,最近要学习很多新的知识了。不仅仅是专业知识,还有职场,各个方面。
接下来,我们谈一下workflow的helloword,我们的第一个工作流应用程序。将分别使用模版和纯手工编写两种方式实现。
首先我们利用vs的模板,构建我们的hello word程序
新建一个workflow的控制台应用程序
如图所示(选择 Sequential Workflow Console Application)
注意,我们这里使用的是.net3.5的Framework。如果使用4.0的,创建的是xaml的设计文件,虽说本质上二者没有差别,但是我对其还不太熟悉。而且接下来的Activity使用都是基于.net3.5的,暂时就先用。随后,我把4.0的搞清楚后,会补上。
点击确定后,出现如下界面。
双击workflow1.cs可以看到设计界面
从右边的工具箱中,拖进一个condeacvity。
可以看到有一个红色的感叹号,这是因为我们没有设置其ExecuteCode事件设置的。
查看其属性,双击事件中的ExecuteCode框,
可以像传统的事件生成模式一样,编译器为我们生成相应事件代码。
在codeActivity1中填写代码
Console.WriteLine("hello word!");
很好理解,表示工作流执行到CodeAcvity活动时,将会执行该函数。
我们的工作流怎么运行起来呢?
找到Program.cs文件,这是控制台应用程序main方法所在的类。我们可以看到如下代码
namespace WorkflowConsoleApplication1 { class Program { static void Main(string[] args) { using (WorkflowRuntime workflowRuntime = new WorkflowRuntime()) { AutoResetEvent waitHandle = new AutoResetEvent(false); //工作流正常结束时,将要调用的方法 //发出信号,告知工作流已经运行结束 workflowRuntime.WorkflowCompleted += delegate(object sender, WorkflowCompletedEventArgs e) { waitHandle.Set(); }; //工作流异常结束时将要调用的方法 workflowRuntime.WorkflowTerminated += delegate(object sender, WorkflowTerminatedEventArgs e) { Console.WriteLine(e.Exception.Message); waitHandle.Set();//发出信号,告知工作流已经运行结束 }; //由workflowruntime创建workflow实例 WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(WorkflowConsoleApplication1.Workflow1)); instance.Start();//启动实例,运行工作流 //由于工作流和当前的控制台并不在同一个线程中,所有要使用autoresetevent的通知机制, //以防止控制台结束时,工作流还没有完成。 waitHandle.WaitOne(); } } } }
暂时不需要做更改。
instance.Start();方法将会执行我们设计器中设计的工作流,从上而下执行。
运行,我们的hello word 正常运行。
可以看到我们的工作流workflow分为了两部分,一个是workflow.cs,一个是workflow.designer.cs。或许你已经明白,designer.cs是由编译器维护的,正是他,为我们完成了可视化的视图。我们只需要在前者中写我们所关注的代码即可。同样的,我们也可以采用另一种方式,效果是一样的。
添加一个sequential work flow (with code separation),文件的后缀将是xoml形式的。该文件也分为,workflow2.xoml,和workflow2.xoml.cs ,前者也是维护了可视化图形的代码。
我们同样的向工作流中拖入codeActivity,为其设置codeActivity1_ExecuteCode
namespace WorkflowConsoleApplication1 { public partial class Workflow2 : SequentialWorkflowActivity { private void codeActivity1_ExecuteCode(object sender, EventArgs e) { Console.WriteLine("Hello word!"); } } }
修改Program.cs中WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(WorkflowConsoleApplication1.Workflow1));为
WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(WorkflowConsoleApplication1.Workflow2));//构建workflow2实例。
运行亦可。
纯手工的helloword
接下来,我们全部使用完全代码编写的形式完成helloword。
新建一个空的工作流Project
点击确定,修改项目属性为控制台项目。
为项目添加Program.cs,workflow.xoml文件。
使用xml编辑打开Workflow.xoml文件。在里边输入如下代码。
<SequentialWorkflowActivity x:Class="EmptyWorkflow.Workflow" x:Name="Workflow" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/workflow"> <CodeActivity x:Name="codeActivity1"> </CodeActivity> </SequentialWorkflowActivity>
这样,我们就等同于向工作流中拖入了一个CodeActivity。当然我们还需要为其设置ExecuteCode属性(事件),修改为如下代码
<SequentialWorkflowActivity x:Class="EmptyWorkflow.Workflow" x:Name="Workflow" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/workflow"> <CodeActivity x:Name="codeActivity1" ExecuteCode="SayHello"> <x:Code> <![CDATA[ private void SayHello(object sender,EventArgs e) { Console.WriteLine("hello workflow!"); } ]]> </x:Code> </CodeActivity> </SequentialWorkflowActivity>
ExecuteCode属性指明了将要执行的方法。
Xoml 可以像aspx一样,使用内嵌代码的形式。我们将SayHello方法放在<x:code>标签中。然后,我们为项目添加Workflow.xoml.cs类文件,将其设为public,并使其继承自SequentialWorkflowActivity,并添加partial关键字
这样的化,将会和xoml中的x:Class="EmptyWorkflow.Workflow"指定的名词生成同一个类。这样我们就完成了工作流的主体。然后,我们向program中添加main方法。
namespace EmptyWorkflow { class Program { static void Main(string[] args) { using (WorkflowRuntime workflowRuntime = new WorkflowRuntime()) { AutoResetEvent resetEvent = new AutoResetEvent(false); workflowRuntime.WorkflowCompleted += delegate(object sender, WorkflowCompletedEventArgs e) { Console.WriteLine("工作流执行完毕!"); resetEvent.Set();//发出完成信号 }; workflowRuntime.WorkflowTerminated += delegate(object sender, WorkflowTerminatedEventArgs e) { Console.WriteLine(e.Exception.Message); resetEvent.Set(); }; WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(EmptyWorkflow.Workflow)); instance.Start();//启动工作流,按照xoml中的配置进行代码的执行 resetEvent.WaitOne(); } } } }
运行程序,可以看到应用程序正常运行。
Ok,这样我们就完成了我们工作流的第一个helloword应用。
另外大家也可以看看这个系列的文章,还是比较适合初学者的。
/article/4694746.html
相关文章推荐
- JavaWeb学习笔记——开发动态WEB资源(二)HelloWord
- hadoop 1.2.1 Eclipse mapreduce hello word 学习笔记
- google_v8学习笔记:NO2 第一个代码Hello_word
- 廖雪峰python学习笔记1:hello python
- Windows Workflow Foundation (wwf) 学习笔记(二)
- 【Go学习笔记】Hello Go!
- Java的中文处理学习笔记:Hello Unicode
- tensorflow学习笔记之word2vec
- easyUI学习记录(一)- Helloword&&easyloader介绍
- React-Native学习笔记——Hello,World
- C#学习笔记29——c#使用word、excel、pdf
- Lotus Workflow 学习笔记(1) 基本概念
- halcon学习笔记之(一)label_word_process_mlp.hdev
- Java的中文处理学习笔记:Hello Unicode
- 《征服c指针》学习笔记-----统计文本单词数目的程序word_count
- WPF Caliburn 学习笔记(五)HelloCaliburn
- Windows Workflow Foundation (wwf) 学习笔记(一)
- Adobe&nbsp;FLEX学习笔记(2)-Hello&nbsp;Wo…
- 【深度学习笔记】(二)Hello, Tensorflow!
- 【学习笔记】用Hadoop在MapReduce中WordCount简单程序运行详细流程