WF4.0 基础篇 (三) 流程实例WorkflowApplication与设计WF程序的基本原则

 

通过本节,可以初步了解WF程序的特性,为以后的WF类应用开发提供一个初步的感性认识

 

目录

1    流程实例WorkflowApplication与设计WF程序的基本原则    1

1.1    流程实例WorkflowApplication    1

1.2    设计WF程序的基本原则    3

1.2.1    第一步: 用WPF创建一个用于运行流程的宿主    4

1.2.2    第二步:创建一个Xaml的工作流    5

1.2.3    第三步:运行流程    6

1.3 WF4.0与WF3.X 的运行环境对比说明(如果对WF3.X不熟悉可以忽略本节)    7

 

 

本文的两个例子

 

http://files.cnblogs.com/foundation/LoadXamlSample.rar

 

http://files.cnblogs.com/foundation/WorkflowApplicationSample.rar

流程实例WorkflowApplication与设计WF程序的基本原则

流程实例WorkflowApplication

我在[开始使用WF4.0.]中创建一个"hello wxwinter"屏幕的输出的工作流的例子

 

在这个例子中我们使用如下方式启动了该流程

class Program

{

static void Main(string[] args)

{

WorkflowInvoker.Invoke(new Workflow1());

}

}

 

在实际应用中,我并不使用WorkflowInvoker.Invoke方式创建工作流(WorkflowInvoker的功能我会在以后的文章中详细介绍),我会用WorkflowApplication创建工作流实例, WorkflowApplication用于跟踪和管理单个工作流实例,先看一下WorkflowApplication的结构:

 

类名

System.Activities.WorkflowApplication

文件

System.Activities.dll

结构说明

继承 WorkflowInstance

是一个 sealed类

功能说明

通过从构造函数传入Activity对象,创建一个工作流的实例

 

 

WorkflowApplication提供了很多管理实例的属性与方法,今天先介绍一下Completed属性

Action<WorkflowApplicationCompletedEventArgs> Completed { get; set; }

当工作流完成时,会调用该属性所指定的System.Action<T>委托

 

委托参数WorkflowApplicationCompletedEventArgs:

ActivityInstanceState CompletionState

IDictionary<string, object> Outputs

Exception TerminationException

Guid InstanceId

IEnumerable<T> GetInstanceExtensions<T>() where T :

 

下面的代码使用WorkflowApplication方式运行流程

class Program

{

static void Main(string[] args)

{

// WorkflowInvoker.Invoke(new Workflow1());

 

//创建实例

WorkflowApplication instance = new WorkflowApplication(new Workflow1());

 

//当实例运行完成时调用的方法

instance.Completed = new Action<WorkflowApplicationCompletedEventArgs>(workflowCompleted);

 

//打印实例ID

System.Console.WriteLine(instance.Id);

 

//启动实例

instance.Run();

 

System.Console.Read();

}

 

static void workflowCompleted(WorkflowApplicationCompletedEventArgs e)

{

System.Console.WriteLine("状态:{0}",e.CompletionState.ToString());

System.Console.WriteLine("实例编号:{0}", e.InstanceId);

}

}

 

设计WF程序的基本原则

很多时候,初学者学习WF时都使用[Workflow Console Application]这个项目模板

 

以至于学习了很久,许多Activity也使用的很熟练了,但就是无法理解WF究竟该怎样应用到实际项目中.

 

其实[Workflow Console Application]这个项目模板仅仅是用于初学者练习的,WF有两种创建流程的方式:

1.用类创建流程,[Workflow Console Application]这个项目模板就是这种方式

2. 用XML格式字符串创建流程

由于WF设计的目的就是灵活,所以用XML格式字符串创建流程的方式才能体现这一点,下面我就用一个例子来演示一下用XML格式字符串创建流程的方式,

 

 

 

 

 

 

 

第一步: 用WPF创建一个用于运行流程的宿主

 

建立一个[WFHost]的WFP项目,将解决方案命名为[LoadXamlSample]

 

添加[System.Activities]类的引用

 

添加一个名为[run]的文本框(AcceptsReturn="True"),添加一个名为[runButton]的按钮, 为[runButton]添加[Click]事件

private void runButton_Click(object sender, RoutedEventArgs e)

{

System.Text.UTF8Encoding utf8 = new System.Text.UTF8Encoding();

 

byte[] bs = utf8.GetBytes(this.xamlTextBox.Text);

 

System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(bs);

 

Activity activity = ActivityXamlServices.Load(memoryStream);

 

WorkflowApplication myInstance = new WorkflowApplication(activity);

 

myInstance.Run();

}

 

为了能看到控制台输出,要将项目的输出类型设为[Console Application]

 

第二步:创建一个Xaml的工作流

用文本文件创建Xaml工作流是痛苦的工作,在没为大家讲解开发流程设计器之前,我们先用VS2010创建一个流程

创建一个名为[wxwinterWorkflow]的[Activity Library]项目

 

设计一个如下流程

 

得到流程的xaml字串

 

第三步:运行流程

运行[WFHost]程序,将上步得到的xaml字符串粘贴到文本框中,点击[run]按钮,会在控制台看到"hello wxwinter"的输出

 

将文本框中的<WriteLine Text="hello wxwiter" />改为<WriteLine Text="hello wxd" />,点击[run]按钮,会在控制台看到"hello wxd"的输出

 

WF4.0与WF3.X 的运行环境对比说明(如果对WF3.X不熟悉可以忽略本节)

WF3.X与WF4运行环境最明显的变化是,在WF3.X中要创建实例要使用WorkflowRuntimeCreateWorkflow方法.

而在WF4中,不需要显示创建一个[WorkflowRuntime],而是直接使用[WorkflowInstance (bate1中)] 创建,这也是到了bate2中将[WorkflowInstance ]改名为[WorkflowApplication]的原因

class Program

{

static void Main(string[] args)

{

WorkflowRuntime workflowRuntime = new WorkflowRuntime();

WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(wxwinterActivity));

instance.Start();

System.Console.Read();

}

}

public class wxwinterActivity : System.Workflow.ComponentModel.Activity

{

protected override System.Workflow.ComponentModel.ActivityExecutionStatus Execute(System.Workflow.ComponentModel.ActivityExecutionContext executionContext)

{

System.Console.WriteLine("wxd");

return base.Execute(executionContext);

}

}

 

 

Excel Report BuilderExcel Report 万能报表平台Excel 使用WEB服务(webservice)访问远程数据库使用本软件可以使你的应用系统(数据库)和excel相连。可以把它嵌入到你的应用系统里,做为应用系统的外挂程序。可以利用excel强大的编辑功能,随心所欲地开发出精美的报表。本软件基于Web Service(Web服务)新技术,所以它支持web网络,可以通过Internet访问远程数据。只要你稍懂SQL,就可以在Excel Report 万能报表平台上设计报表。通过设置字段,参数等信息来设计报表。BI智能报表,支持透视表。提供存储过程接口,便于用户二次开发。有用户管理,报表权限的管理。支持多语种。 软件环境: 客户端: Windows 2000及以上版本,Microsoft Office 2000及以上版本 服务器端:Windows和Linux都可以,jsdk1.4,tomcat5 数据库:支持Oracle, SQL Server 等数据库。下载地址: http://203.208.248.203:81/pan/Excel/Excel_Report_Setup.rar相关软件下载地址: Jdk 1.4:http://203.208.248.203:81/pan/Excel/j2sdk-1_4_2_06-windows-i586-p.exeTomcat5:http://203.208.248.203:81/pan/Excel/jakarta-tomcat-5.0.27.exe SQL Server SP3:http://203.208.248.203:81/pan/Excel/sql2ksp3.exeSQL Server SP4:http://download.microsoft.com/download/9/b/f/9bff6646-2cdb-4069-ada0-548be9cb9338/SQL2000-KB884525-SP4-x86-CHS.EXE联系方式: http://pansoft.ik8.com QQ: 10124900MSN: bear_pan@hotmail.comE_Mail: bear_pan@163.comExcel Report BuilderExcel Report Builder is an easy and convenient tool for the creation and customization of reports which takes advantage of the formatting and presentation capabilities of Microsoft Excel. The program allows the rapid construction of reports.A GUI style design environment, which allows the user to design their reports visually inside MS Excel. Reports can be saved and then viewed and printed as pure Excel documents. The reports are created and printed rapidly.In fact, it is by harnassing the power of Excel that gives Excel Report Builder these abilities.No technical knowledge is needed in order for the user to customise his or her own reports. Key Features of the Database Report Builder for Excel include: Report creation using Microsoft Excel Get data through webservice,so you can get remote data Support of the SQL-queries for the data sets creation Calling of the stored procedures for the data sets creation Creation of the reports with parameters Work with the Microsoft Excel macros Charts creation in a reportSoftware: Client: Windows 2000 or above,Microsoft Office 2000 or above Server: jsdk1.4,tomcat5 Database: Oracle or SQL Server Download: http://203.208.248.203:81/pan/Excel/Excel_Report_Setup.rarOther Softwares: Jdk 1.4:http://203.208.248.203:81/pan/Excel/j2sdk-1_4_2_06-windows-i586-p.exeTomcat5:http://203.208.248.203:81/pan/Excel/jakarta-tomcat-5.0.27.exeSQL Server SP3:http://203.208.248.203:81/pan/Excel/sql2ksp3.exeSQL Server SP4:http://download.microsoft.com/download/9/b/f/9bff6646-2cdb-4069-ada0-548be9cb9338/SQL2000-KB884525-SP4-x86-CHS.EXEContact: http://pansoft.ik8.com QQ: 10124900MSN: bear_pan@hotmail.comE_Mail: bear_pan@163.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值