WF4.0 基础篇 (六) 数据的传递 Arguments 参数
2013-10-11 17:25
399 查看
本节主要介绍如何在WF4.0中使用参数,以及在流程启动时传入参数据在流程结束时读取参数
本文例子下载:
http://files.cnblogs.com/foundation/ArgumentsSample.rar
本文例子说明
![](https://oscdn.geek-share.com/Uploads/Images/Content/202005/05/6933a1f7fee3b5c49b5b59fb3cf86458.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202005/05/6c2085eb8a28675074d75c9343689b9c.png)
参数有如下属性:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202005/05/e7c0491b3cba0f4ae47e007f456d8357.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202005/05/fb7c8117b791aea9a13f1c0ade4cee34.png)
2. 在xaml中定义的[In参数],可以在该xaml中被其他Activity用表达式绑定
3. 可以用code方式在code Activity中定义[In参数]
4. 可以在属性框中, 将code Activity中定义的[In参数]绑定到参数或变量
可以用"表达式"方式赋值
5. 运行时,可以用启动参数的方式对[In参数]赋值(xaml与code两种方式都可以)
6. [In参数]不能在实例的[OnCompleted]事件中用[WorkflowApplicationCompletedEventArgs.Outputs]得到
7. 可以使用[Assign] 为 [In参数]赋值
1.在xaml格式的workFlow中定义三个[double]型的[In参数]v1,v2,v3
2.启动时为v1,v2赋值
3.在流程内部用[Assign]为v3赋予v1+v2
4.用WriteLine打印v3的值
例:Code方式的[In参数]使用
说明:
1. 定一个Activity名为[InArgumentActivity],其具有一个[string]类型 [In参数]myIn
2. 在xaml格式的workFlow中定义一个[string]型的[In参数]myValue
3. 启动时为myValue赋值
4. 在流程内部添加[InArgumentActivity],将[InArgumentActivity.myIn] 绑定到myValue
![](https://oscdn.geek-share.com/Uploads/Images/Content/202005/05/3c8459c22a4aa35cc343097239ec266e.png)
2. 在xaml中定义的[Out参数],可以在该xaml中被其他Activity用表达式绑定
3. 可以用code方式在code Activity中定义[Out参数]
4. 可以在属性框中, 将code Activity中定义的[Out参数]绑定到参数或变量
不能直接对[Out参数]赋值
5. 运行时,不能用启动参数的方式对[Out参数]赋值(xaml与code两种方式都不可以)
6. [Out参数]可在实例的[OnCompleted]事件中用[WorkflowApplicationCompletedEventArgs.Outputs]得到
7. 可以使用[Assign] 为 [Out参数]赋值
1.在xaml格式的workFlow中定义二个[double]型的[In参数]v1,v2
定义一个[double]型的[Out 参数]v3
2.启动时为v1,v2赋值
3.在流程内部用[Assign]为v3赋予v1+v2
4.在[completed]中打印v3的值
例:Code方式的[Out参数]使用
说明:
1. 定一个Activity名为[OutArgumentActivity],其具有一个[string]类型 [Out 参数]myOut
2. 在xaml格式的workFlow中定义一个[string]型的变量 myVariable
3. 在流程内部添加[OutArgumentActivity],将[OutArgumentActivity.myOut]绑定到myVariable
4. 添加[WriteLine],打印[myVariable]
![](https://oscdn.geek-share.com/Uploads/Images/Content/202005/05/a92dd323ea409c8d127cf3bb0a9f7169.png)
2. 在xaml中定义的[In/Out参数],可以在该xaml中被其他Activity用表达式绑定
3. 可以用code方式在code Activity中定义[In/Out参数]
4. 可以在属性框中, 将code Activity中定义的[In/Out参数]绑定到参数或变量
不能直接对[In/Out参数]赋值
5. 运行时, 可以用启动参数的方式对[In/Out参数]赋值(xaml与code两种方式都可以)
6. [In/Out参数]可在实例的[OnCompleted]事件中用[WorkflowApplicationCompletedEventArgs.Outputs]得到
7. 可以使用[Assign] 为 [In/Out参数]赋值
1.在xaml格式的workFlow中定义三个[string]型的[In/Out参数]v1,v2, v3
2.启动时为v1,v2,v3赋值
3.在流程内部用[Assign]为v3赋予v1 + v2 +v3
4.在[completed]中打印v3的值
1. 定一个Activity名为[InOutArgumentActivity],其具有一个[string]类型 [In参数]myInOut
2. 在xaml格式的workFlow中定义一个[string]型的变量 myVariable,默认值为"wxwinter"
3. 在流程内部添加[WriteLine],打印myVariable的值
4. 在流程内部添加[InOutArgumentActivity],将[InArgumentActivity. myInOut]绑定到流程的myVariable
5. 在流程内部再添加[WriteLine],打印myVariable的值
本文例子下载:
http://files.cnblogs.com/foundation/ArgumentsSample.rar
本文例子说明
![](https://oscdn.geek-share.com/Uploads/Images/Content/202005/05/6933a1f7fee3b5c49b5b59fb3cf86458.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202005/05/6c2085eb8a28675074d75c9343689b9c.png)
数据的传递 Arguments 参数
Arguments 参数概述
Arguments是WF的输出和输入接口,在同一个流程内,所有Activity共享一组参数.参数有如下属性:
Name | 参数的名子 |
Direction | 参数的类型 In Out In/Out Propery |
Argument type | 参数的数据类型 |
Default value | 参数的默认值 In:使用的是表达式 Out,In/Out :无默认值 Propery : 值类型 |
IsRequired | 是否必填 |
添加参数
![](https://oscdn.geek-share.com/Uploads/Images/Content/202005/05/e7c0491b3cba0f4ae47e007f456d8357.png)
In参数
System.Activities.InArgument<T>
![](https://oscdn.geek-share.com/Uploads/Images/Content/202005/05/fb7c8117b791aea9a13f1c0ade4cee34.png)
[In参数]使用说明
1. 可以用VS设计器在xaml中定义[In参数]2. 在xaml中定义的[In参数],可以在该xaml中被其他Activity用表达式绑定
3. 可以用code方式在code Activity中定义[In参数]
4. 可以在属性框中, 将code Activity中定义的[In参数]绑定到参数或变量
可以用"表达式"方式赋值
5. 运行时,可以用启动参数的方式对[In参数]赋值(xaml与code两种方式都可以)
6. [In参数]不能在实例的[OnCompleted]事件中用[WorkflowApplicationCompletedEventArgs.Outputs]得到
7. 可以使用[Assign] 为 [In参数]赋值
例:XAML方式的[In参数]使用
说明:1.在xaml格式的workFlow中定义三个[double]型的[In参数]v1,v2,v3
2.启动时为v1,v2赋值
3.在流程内部用[Assign]为v3赋予v1+v2
4.用WriteLine打印v3的值
流程 | ![]() |
宿主 | static void startValueInWorkflow() { System.Collections.Generic.Dictionary<string, object> dic = new System.Collections.Generic.Dictionary<string, object>(); dic.Add("v1",123.456); dic.Add("v2",456.789); WorkflowApplication myInstance = new WorkflowApplication(new StartValueInWorkflow(), dic); myInstance.Run(); } |
结果 | ![]() |
例:Code方式的[In参数]使用
说明: 1. 定一个Activity名为[InArgumentActivity],其具有一个[string]类型 [In参数]myIn
2. 在xaml格式的workFlow中定义一个[string]型的[In参数]myValue
3. 启动时为myValue赋值
4. 在流程内部添加[InArgumentActivity],将[InArgumentActivity.myIn] 绑定到myValue
InArgumentActivity | public sealed class InArgumentActivity : CodeActivity { public System.Activities.InArgument<string> myIn { get; set; } protected override void Execute(CodeActivityContext context) { string s1 = context.GetValue(this.myIn); string s2 = myIn.Get(context); System.Console.WriteLine(s1); System.Console.WriteLine(s2); } } |
流程 | ![]() |
宿主 | static void inArgumentWorkflow() { System.Collections.Generic.Dictionary<string, object> dic = new System.Collections.Generic.Dictionary<string, object>(); dic.Add("myValue","wxwinter wxd"); WorkflowApplication myInstance = new WorkflowApplication(new InArgumentWorkflow(), dic); myInstance.Run(); } |
结果 | ![]() |
Out参数
System.Activities.OutArgument<T>
![](https://oscdn.geek-share.com/Uploads/Images/Content/202005/05/3c8459c22a4aa35cc343097239ec266e.png)
[Out参数]使用说明
1. 可以用VS设计器在xaml中定义[Out参数]2. 在xaml中定义的[Out参数],可以在该xaml中被其他Activity用表达式绑定
3. 可以用code方式在code Activity中定义[Out参数]
4. 可以在属性框中, 将code Activity中定义的[Out参数]绑定到参数或变量
不能直接对[Out参数]赋值
5. 运行时,不能用启动参数的方式对[Out参数]赋值(xaml与code两种方式都不可以)
6. [Out参数]可在实例的[OnCompleted]事件中用[WorkflowApplicationCompletedEventArgs.Outputs]得到
7. 可以使用[Assign] 为 [Out参数]赋值
例:XAML方式的[Out参数]使用
说明:1.在xaml格式的workFlow中定义二个[double]型的[In参数]v1,v2
定义一个[double]型的[Out 参数]v3
2.启动时为v1,v2赋值
3.在流程内部用[Assign]为v3赋予v1+v2
4.在[completed]中打印v3的值
流程 | ![]() |
宿主 | static void startValueOutWorkflow() { System.Collections.Generic.Dictionary<string, object> dic = new System.Collections.Generic.Dictionary<string, object>(); dic.Add("v1", 123.456); dic.Add("v2", 456.789); WorkflowApplication myInstance = new WorkflowApplication(new StartValueOutWorkflow(), dic); myInstance.Completed = completed; myInstance.Run(); } |
static void completed(WorkflowApplicationCompletedEventArgs e) { System.Console.WriteLine(e.Outputs["v3"].ToString()); } | |
结果 | ![]() |
例:Code方式的[Out参数]使用
说明: 1. 定一个Activity名为[OutArgumentActivity],其具有一个[string]类型 [Out 参数]myOut
2. 在xaml格式的workFlow中定义一个[string]型的变量 myVariable
3. 在流程内部添加[OutArgumentActivity],将[OutArgumentActivity.myOut]绑定到myVariable
4. 添加[WriteLine],打印[myVariable]
OutArgumentActivity | public sealed class OutArgumentActivity : CodeActivity { public System.Activities.OutArgument<string> myOut { set; get; } protected override void Execute(CodeActivityContext context) { //1 string s1 = myOut.Get(context); myOut.Set(context, "wxd" + s1); //2 string s2 = context.GetValue(myOut); context.SetValue(myOut, "lzm" + s2); } } |
流程 | ![]() |
宿主 | static void outArgumentWorkflow() { WorkflowApplication myInstance = new WorkflowApplication(new OutArgumentWorkflow()); myInstance.Run(); } |
结果 | ![]() |
In/Out参数
System.Activities.InOutArgument<T>
![](https://oscdn.geek-share.com/Uploads/Images/Content/202005/05/a92dd323ea409c8d127cf3bb0a9f7169.png)
[In/Out参数]使用说明
1. 可以用VS设计器在xaml中定义[I民/Out参数]2. 在xaml中定义的[In/Out参数],可以在该xaml中被其他Activity用表达式绑定
3. 可以用code方式在code Activity中定义[In/Out参数]
4. 可以在属性框中, 将code Activity中定义的[In/Out参数]绑定到参数或变量
不能直接对[In/Out参数]赋值
5. 运行时, 可以用启动参数的方式对[In/Out参数]赋值(xaml与code两种方式都可以)
6. [In/Out参数]可在实例的[OnCompleted]事件中用[WorkflowApplicationCompletedEventArgs.Outputs]得到
7. 可以使用[Assign] 为 [In/Out参数]赋值
例:XAML方式的[In/Out参数]使用
说明:1.在xaml格式的workFlow中定义三个[string]型的[In/Out参数]v1,v2, v3
2.启动时为v1,v2,v3赋值
3.在流程内部用[Assign]为v3赋予v1 + v2 +v3
4.在[completed]中打印v3的值
流程 | ![]() |
宿主 | static void startValueInOutWorkflow() { System.Collections.Generic.Dictionary<string, object> dic = new System.Collections.Generic.Dictionary<string, object>(); dic.Add("v1", "wxd"); dic.Add("v2", "lzm"); dic.Add("v3", "wxwinter"); WorkflowApplication myInstance = new WorkflowApplication(new StartValueInOutWorkflow(), dic); myInstance.Completed = completed; myInstance.Run(); } |
static void completed(WorkflowApplicationCompletedEventArgs e) { System.Console.WriteLine(e.Outputs["v3"].ToString()); } | |
结果 | ![]() |
例:Code方式的[In/Out参数]使用
说明:1. 定一个Activity名为[InOutArgumentActivity],其具有一个[string]类型 [In参数]myInOut
2. 在xaml格式的workFlow中定义一个[string]型的变量 myVariable,默认值为"wxwinter"
3. 在流程内部添加[WriteLine],打印myVariable的值
4. 在流程内部添加[InOutArgumentActivity],将[InArgumentActivity. myInOut]绑定到流程的myVariable
5. 在流程内部再添加[WriteLine],打印myVariable的值
InOutArgumentActivity | public sealed class InOutArgumentActivity : CodeActivity { public System.Activities.InOutArgument<string> myInOut { set; get; } protected override void Execute(CodeActivityContext context) { //1 //string s1 = myInOut.Get(context); //myInOut.Set(context, "wxd:" + s1); //2 string s2 = context.GetValue(myInOut); context.SetValue(myInOut, "wxd:" + s2); } } |
流程 | ![]() |
宿主 | static void inOutArgumentWorkflow() { WorkflowApplication myInstance = new WorkflowApplication(new InOutArgumentWorkflow()); myInstance.Run(); } |
结果 | ![]() |
相关文章推荐
- WF4.0 基础篇 (六) 数据的传递 Arguments 参数
- WF4.0 基础篇 (六) 数据的传递 Arguments 参数
- [转]WF4.0 基础篇 (六) 数据的传递 Arguments 参数
- WF4.0 基础篇 (七) 数据的传递 变量与参数的使用
- WF4.0 基础篇 (七) 数据的传递 变量与参数的使用
- WF4.0 基础篇 (五) 数据的传递 Variable变量
- WF4.0 基础篇 (五) 数据的传递 Variable变量
- WF4.0 基础篇 (五) 数据的传递 Variable变量
- Activity传递参数——传递简单数据
- Windows Phone 7 MVVM模式数据绑定和传递参数
- 06_二维数组【四种格式、打印杨辉三角、Java中参数传递、数据加密案例】、面向对象【对象内存图】
- 由【JAVA中参数传递问题】引发除了基本数据类型和引用类型的思考
- Yii数据读取与跳转参数传递
- MVC基础——参数与值传递,提交数据
- 使用xmlhttp.send()方法的参数来传递大容量的数据
- 重读编程思想-初始化清理-基础数据类型参数传递给过载方法
- 用"堆栈区数据复制"理解Java赋值和参数传递?机制的心得
- winform程序访问一个web方法,传递参数,返回数据
- Springmvc中 同步/异步请求参数的传递以及数据的返回
- java程序设计--孙鑫java无难事Lesson5《java常用包、数据类型与引用类型、函数参数传递、克隆机制》