创建工作流控制台应用程序 helloworkflow
2012-09-14 09:18
417 查看
创建应用程序HelloWorkflow
1:创建应用程序HelloWorkflow:![](http://img.my.csdn.net/uploads/201209/14/1347585747_2223.jpg)
2:制作WF程序
首先,从工具箱中拖一个Sequence活动到设计器,接着拖一个WriteLine活动到Sequence活动中,最后输入在WriteLine中输入”Hello,Workflow”,并查看我们退拽控件后生成的xaml代码。我们可以看到下面的截图:
![](http://img.my.csdn.net/uploads/201209/14/1347585752_3604.jpg)
3:运行:
按Ctrl+F5
运行程序,结果如下:
![](http://img.my.csdn.net/uploads/201209/14/1347585757_9470.jpg)
它是怎样工作的…
当我们按Ctrl+F5的时候,Visual Studio就保存了当前项目
namespace HelloWorkflow
{
class
Program
{
static
void Main(string[] args)
{
WorkflowInvoker.Invoke(newWorkflow1());
}
}
}
Main 方法中的WorkflowInvoker启动了工作流,接着WriteLine活动输出”Hello Workflow”.
我们在WF设计器中创建的实际上是XML文件,我们可以使用XML编辑器来打开它
右键点击 Workflow1.xaml,接着点击 Open With…,选择XML Editor来打开Workflow1.xaml
使用C#代码来创建WF应用程序
1:创建Console Application项目:创建一个控制台项目,命名为HelloCodeWorkflow.
![](http://img.my.csdn.net/uploads/201209/14/1347585967_1575.jpg)
2: 添加对System.Activities程序集的引用
默认的,一个新的控制台程序并不会应用System.Activities程序集。
3:编写定义Workflow的代码。
using System.Activities;
using System.Activities.Statements;
namespace HelloCodeWorkflow {
class Program {
static void Main(string[] args) {
WorkflowInvoker.Invoke(new HelloWorkflow());
}
}
public class HelloWorkflow:Activity {
public HelloWorkflow() {
this.Implementation = () => new Sequence {
Activities = {
newWriteLine(){Text="Hello Workflow"}
}
};
}
}
}
4:运行它:
设置HelloCodeWorkflow作为启动项目,按Ctrl+F5,和期望的一样,结果和前面的结果一样。
它是怎么工作的。。。
我们使用下面的命名空间:
using System.Activities;
using System.Activities.Statements;
因为WorkflowInvoker类属于System.Activities命名空间,Sequence活动,WriteLine活动属于System.Activities.Statements命名空间。
public class HelloWorkflow:Activity {
public HelloWorkflow() {
this.Implementation = () => new Sequence {
Activities = {
newWriteLine(){Text="Hellow Workflow"}
}
};
}
}
通过实现继承自Activity的一个类,我们通过C#代码定义了Workflow。
WorkflowInvoker.Invoke(s);
上面的代码加载了一个工作流实例,并且自动的运行它,WorkflowInvoker.Invoke方法是同步的,这也就是说它使用调用者的线程来执行workflow.
还有更多。。
WF4 也提供了一个类DynamicActivity,通过它我们可以在运行时动态的来定义工作流实例,换句话说,通过使用DynamicActivity,我们没有必要在工作流的初始化之前就定义工作流。下面是一些样例代码:
public static DynamicActivity GetWF() {
return new DynamicActivity() {
Implementation = () => new Sequence() {
Activities ={
newWriteLine(){Text="Hello Workflow"}
}
}
};
}
使用InArguments
来初始化WF程序。
在这个任务中,我们创建一个可以接收参数的工作流程序,我们使用InArguments来定义工作流需要的参数。
总结:代码创建工作流的方式比xaml间接创建更轻巧、更快捷、更清晰。
相关文章推荐
- 如何创建状态机工作流控制台应用程序
- 4.3 创建控制台应用程序
- .net使编译器创建可执行 (EXE) 的控制台应用程序(转自MSDN)
- 《WF编程》系列之1 - Hello,Workflow & 创建工作流解决方案
- C#学习之一---创建控制台应用程序
- 使用C#创建SQLite控制台应用程序
- Windows workflow foundation之旅(四)——指南2(创建状态机工作流)(下)
- WF学习系列之四:顺序工作流控制台应用程序模板介绍
- 创建一个控制台应用程序
- Visual Studio 2015专业版创建Win32控制台应用程序,C,C++源文件
- 使用C#创建WCF服务控制台应用程序
- C# 创建控制台应用程序
- Win32应用程序中创建控制台窗口
- Hello Activiti 创建工作流的三种方式
- 如何:创建 C# 控制台应用程序
- 创建一个控制台应用程序
- Visual Studio 2010 ——C#中创建控制台应用程序
- 4.3 创建控制台应用程序
- 9_9_5创建一个控制台应用程序项目Traffic,它引用Vehicles.dll
- [转帖]Windows Workflow Foundation之旅(二)——指南1(创建顺序工作流)