WF4.0 基础篇 (二十六) Interop调用WF3.X的Activity
来源:互联网 发布:淘宝运营每日工作内容 编辑:程序博客网 时间:2024/05/29 15:37
本节主要介绍Interop调用WF3.X的Activity
本文例子下载:
http://files.cnblogs.com/foundation/InteropSample.rar
本文例子说明
Interop调用WF3.X的Activity
类名
System.Activities.Statements.Interop
文件
System.Workflow.Runtime.dll
结构说明
继承 NativeActivity, ICustomTypeDescriptor
是一个 sealed类
override 了 [CacheMetadata方法] 与 [Cancel方法] 与[Execute方法]
override 了 [CanInduceIdle属性]
[ActivityMetaProperties]属性的类型为[IDictionary<string, object>]
[ActivityProperties]属性的类型为[IDictionary<string, object>]
[ActivityType]属性的类型为[Type]
功能说明
[ActivityType属性]用于指定要调用的WF3.5的Activity的类型
当指定WF3.5的Activity的类型后,在设计器中会自动为WF3.5的Activity的绑定生成两个参数一个为[属性名],另一个为[属性名Out]
使用说明
默认有WF4.0项目为[.NET Framework 4 Client Profile],要使用Interop,应将项目改为[.NET Framework 4 ]
Interop默认没出现在工具栏中,需要添加
[ActivityType属性]用于指定要调用的WF3.5的Activity的类型
当指定WF3.5的Activity的类型后,在设计器中会自动为WF3.5的Activity的绑定生成两个参数一个为[属性名],另一个为[属性名Out]
例子1:调用WF3.X的Activity
说明:
1.创建一WF3.X的Activity,有一绑定属性[printText]
Activity在[ Execute]方法中打印[printText]的值,并为[printText]赋予一新值
2.创建一WF4的工作流,用[Interop]调用WF3.X的Activity,为[printText]传入值,并打印通过[printText]的返回值
WF3.X的Activity
publicpartial class myActivity : Activity
{
public myActivity()
{
InitializeComponent();
}
[System.Diagnostics.DebuggerNonUserCode]
[System.CodeDom.Compiler.GeneratedCode("","")]
privatevoid InitializeComponent()
{
this.Name ="myActivity";
}
publicstatic readonly DependencyProperty printTextProperty = DependencyProperty.Register("printText",typeof(string), typeof(myActivity));
publicstring printText
{
get
{
return (string)base.GetValue(printTextProperty);
}
set
{
base.SetValue(printTextProperty,value);
}
}
protectedoverride ActivityExecutionStatus Execute(ActivityExecutionContext context)
{
Console.WriteLine(this.printText);
this.printText = printText +":wxd";
returnActivityExecutionStatus.Closed;
}
}
WF4的工作流
宿主
staticvoid test1()
{
WorkflowInvoker.Invoke(newtestWorkflow());
}
结果
例2:代码操作
staticvoid test2()
{
Variable<string> myVariable =new Variable<string>() { Default ="wxwinter" };
Sequence root =new Sequence()
{
Variables = { myVariable },
Activities =
{
newInterop()
{
ActivityType =typeof(myActivity),
ActivityProperties =
{
{ "printText", new InArgument<string>(myVariable) }
,
{ "printTextOut", new OutArgument<string>(myVariable) }
},
ActivityMetaProperties =
{
// Provide a value for the Name meta-property of the WriteLine
{ "Name", "myActivity" }
}
}
,
newWriteLine{ Text=myVariable}
}
};
WorkflowInvoker.Invoke(root);
}
- WF4.0 基础篇 (二十六) Interop调用WF3.X的Activity
- WF4.0与WF3.X区别
- WF4.0 基础篇 (二) Activity介绍及WriteLine Activity的使用
- WF4.0 基础篇 (二) Activity介绍及WriteLine Activity的使用
- WF4.0 基础篇 (十六) CompensableActivity 补偿
- WF4.0 基础篇 (二十三) 范型Activity
- WF4.0 基础篇 (二十四) Async Activity
- WF4.0 基础篇 (二十八) WF调用PowerShell
- WF4.0 基础篇 (二十一) WorkflowInvoker
- WF4.0 基础篇 (二十二) Tracking
- WF4.0 基础篇 (二十九) WorkflowInspectionServices
- WF4.0 基础篇 (二十) ActivityWithResult 有返回值Activity
- WF4.0 基础篇 (八) 控制流Activity
- WF4.0 基础篇 (八) 控制流Activity
- WF4.0 基础篇 (九) 控制流Activity
- WF4.0 基础篇 (十三) InvokeMethod 调用方法
- WF4.0 基础篇 (二十五) ActivityAction 与 InvokeAction
- WF4.0 基础篇 (二十五)(补充) ActivityFunc 与 InvokeFunc
- Java中数组与List相互转换
- WF4.0 基础篇 (二十五)(补充) ActivityFunc 与 InvokeFunc
- AJAX 异步请求
- HTML5游戏技术开发难点分析
- 疯狂java
- WF4.0 基础篇 (二十六) Interop调用WF3.X的Activity
- Linux环境下Navicat 11无限制使用的办法
- Xcode学习笔记---如何学好Objective C
- 简单的正则表达式匹配 Regular Expression Matching
- iPad必备学习应用推荐
- Java程序员必知道的八大排序算法(一 )
- (DP6.1.4.2)POJ 1088 滑雪
- Ext4 创建类 Ext.define
- EBS 财务辅助工具开发手记--类设计