WF4B1 的有返回值的Activity,Bookmark,有返回值Bookmark
WF4B1 的有返回值的Activity,Bookmark,有返回值Bookmark
目录
1 NativeActivity<T> 1
1.1 定义有返回值的Activity 1
1.2 使用 1
2 Bookmark说明 2
3 Bookmark 2
3.1 定义Activity 2
3.2 定义工作流 2
3.3 宿主 3
3.4 结果 3
4 Bookmark(有返回值) 3
4.1 定义Activity 3
4.2 定义工作流 4
4.3 宿主 4
4.4 结果 5
NativeActivity<T>
类名:System.Activities.NativeActivity<TResult>
基类:System.Activities.WorkflowElement<TResult>
文件: System.Activities.dll
类型:abstract (void Execute(System.Activities.ActivityExecutionContext context))
定义有返回值的Activity
场景说明:有两个[Int]参数v1,v2,返回值为v1+v2
public class myActivity<T> : NativeActivity<int> { public System.Activities.InArgument<int> v1 { set; get; } public System.Activities.InArgument<int> v2 { set; get; } protected override void Execute(ActivityExecutionContext context) { int r =(int)v1.Get(context) + (int)v2.Get(context); this.Result.Set(context, r); } } |
说明:
当在设计器中添加有返回值的Activity时,会出现一个对话框,要求指定返回值的类型
使用
流程 |
|
宿主 |
WorkflowInstance myInstance = new WorkflowInstance(new Sequence1()); myInstance.Run(); System.Console.Read(); |
结果 |
Bookmark说明
Bookmark可使用流程Idle并触发流程的OnIdle
Bookmark
要定义具备Bookmark的Activit,可从 NativeActivity继承
类名:System.Activities.NativeActivity
基类:System.Activities.WorkflowElement
文件: System.Activities.dll
类型:abstract (void Execute(System.Activities.ActivityExecutionContext context))
定义Activity
public class myBookmark : NativeActivity { public string bookmarkName { get; set; } protected override void Execute(ActivityExecutionContext context) { context.CreateNamedBookmark(bookmarkName); } } |
定义工作流
<p:Activity mc:Ignorable="" x:Class="WorkflowConsoleApplication1.Sequence2" xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities" xmlns:w="clr-namespace:WorkflowConsoleApplication1;assembly=WorkflowConsoleApplication1" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" > <p:Sequence > <p:WriteLine DisplayName="WriteLine:begin">["begin"]</p:WriteLine> <w:myBookmark bookmarkName="mywait" /> <p:WriteLine DisplayName="WriteLine:end">["end"]</p:WriteLine> </p:Sequence> </p:Activity> |
宿主
<Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300"> <StackPanel> <Button Content="启动" Height="23" Name="button1" Width="75" Click="button1_Click" /> <Button Content="继续" Height="23" Name="button2" Width="75" Click="button2_Click" /> </StackPanel> </Window> |
WorkflowInstance myInstance; private void button1_Click(object sender, RoutedEventArgs e) { myInstance = new WorkflowInstance(new Sequence2()); myInstance.OnIdle += idel; myInstance.Run(); } IdleAction idel() { System.Console.WriteLine("等待提交....."); return IdleAction.Nothing; } private void button2_Click(object sender, RoutedEventArgs e) { myInstance.ResumeBookmark("mywait",null); } |
结果
Bookmark(有返回值)
要定义具备有返回值的Bookmark Activit,可从 NativeActivity<T>继承
类名:System.Activities.NativeActivity<TResult>
基类:System.Activities.WorkflowElement<TResult>
文件: System.Activities.dll
类型:abstract (void Execute(System.Activities.ActivityExecutionContext context))
定义Activity
public sealed class bookmark<T> : NativeActivity<T> { public bookmark() : base() { } public string bookmarkName { get; set; } protected override void Execute(ActivityExecutionContext context) { context.CreateNamedBookmark(bookmarkName, new BookmarkCallback(bookmarkCallback)); } void bookmarkCallback(ActivityExecutionContext context, Bookmark bookmark, object obj) { this.Result.Set(context, (T)obj); } } |
定义工作流
<p:Activity mc:Ignorable="" x:Class="myBookmarks.Sequence1" xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design" xmlns:m="clr-namespace:myBookmarks;assembly=myBookmarks" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <p:Sequence> <p:Sequence.Variables> <p:Variable x:TypeArguments="x:String" Name="rs" /> </p:Sequence.Variables> <p:WriteLine DisplayName="开始">["请提交意见"]</p:WriteLine> <m:bookmark x:TypeArguments="x:String" DisplayName="等待意见" Result="[rs]" bookmarkName="mywait" /> <p:WriteLine DisplayName="显示结果">[rs]</p:WriteLine> </p:Sequence> </p:Activity> |
宿主
<Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300"> <Canvas> <Button Canvas.Left="27" Canvas.Top="31" Content="启动流程" Height="23" Name="button1" Width="75" Click="button1_Click" /> <Button Canvas.Left="27" Canvas.Top="111" Content="继续" Height="23" Name="button2" Width="75" Click="button2_Click" /> <TextBox Canvas.Left="123" Canvas.Top="112.157" Height="23" Name="textBox1" Width="120" /> </Canvas> </Window> |
WorkflowInstance myInstance; private void button1_Click(object sender, RoutedEventArgs e) { myInstance = new WorkflowInstance(new Sequence1()); myInstance.OnIdle += idel; myInstance.Run(); } IdleAction idel() { System.Console.WriteLine("等待提交....."); return IdleAction.Nothing; } private void button2_Click(object sender, RoutedEventArgs e) { myInstance.ResumeBookmark("mywait", this.textBox1.Text); } |
结果
转载于:https://www.cnblogs.com/foundation/archive/2009/06/08/1498624.html
WF4B1 的有返回值的Activity,Bookmark,有返回值Bookmark相关推荐
- Android---如何返回上一Activity
Android 代码用来返回上一个activity 调用onKeyDown()时发生java.lang.NullPointerException. 来自:CSDN博客推荐文章 | 时间:2012 ...
- activity 防止多次打开_Android开发Activity任务和返回栈
任务是用户在执行某项工作时与之互动的一系列 Activity 的集合.这些 Activity 按照每个 Activity 打开的顺序排列在一个返回堆栈中.例如,电子邮件应用可能有一个 Activity ...
- 2020-09-22C++学习笔记之引用1(1.引用(普通引用)2.引用做函数参数 3.引用的意义 4.引用本质5.引用结论 6.函数返回值是引用(引用当左值)7测试代码)
2020-09-22C++学习笔记之引用1(1.引用(普通引用)2.引用做函数参数 3.引用的意义 4.引用本质5.引用结论 6.函数返回值是引用(引用当左值)7测试代码) 1.引用(普通引用) 变量 ...
- JAVA接口返回面积_java – 将接口的返回值限制为实现类的范围
我正在编写一个小型库,我有一些接口提供了一个返回值应该在指定范围内的方法.我如何明确禁止实现此方法的库的用户返回不在此范围内的值? 像这样的东西: //Library interface Favori ...
- c语言recv函数返回值,谈谈recv()函数的返回值
网上某论坛有这样一个问题:当recv()函数的返回值为0时,能不能在接收端不关闭套接字,以便这条建立好的C/S通信下次可以直接使用? 我对这个问题的回答是:不能. 原因是:此时即使接收端不关闭套接字, ...
- return两个返回值_23.1 函数的返回值(二)
函数的返回值格式 function 函数名(){return 需要返回的结果;}函数名(); 注意: (1)函数只是实现某种功能,最终的结果需要返回给函数的调用者函数名(),通过 return 实现. ...
- 获取存储过程返回值及代码中获取返回值
获取存储过程返回值及代码中获取返回值 1.OUPUT参数返回值例: 向Order表插入一条记录,返回其标识 CREATE PROCEDURE [dbo].[nb_order_insert]( @o_b ...
- java json 返回null,[] Spring4 MVC 返回json格式时候 设置不返回null值属性的有关问题...
[求助] Spring4 MVC 返回json格式时候 设置不返回null值属性的问题 本帖最后由 bighong0404 于 2015-10-06 12:45:38 编辑 背景: 使用@respon ...
- system函数的返回值和执行脚本的返回值
1.先统一两个说法: (1)system返回值:指调用system函数后的返回值,比如上例中status为system返回值 (2)shell返回值:指system所调用的shell命令的返回值,比如 ...
最新文章
- LeetCode 137. Single Number II--三次异或消除相同的数--C++,Python解法
- 可爱的MicrosoftAjax.js精简版(47K)
- python datetime datetime_Python datetime.tzinfo方法代碼示例
- Android设计模式(九)--外观模式
- 华为云IoT提出泛在新联接,让万物皆可联
- Java IO流之文件流
- MFC模块的动态链接库DLL以及静态链接库LIB编译后的调用
- SAP UI5 应用开发教程之四十八 - 如何在 SAP UI5 应用里开发条形码扫描功能
- jar各个版本号的意义
- Spring Security 示例UserDetailsS​​ervice
- mysql 插入毫秒数据_【转载】怎样在mybatis里向mysql中插入毫秒数的时间?
- AutoFDO自动反馈式优化
- linux内存布局和地址空间布局随机化(ASLR)下的可分配地址空间
- UVa 401 - Palindromes
- JavaScript实现字符串的contains函数
- Applese 涂颜色(python解法)
- HDU 5855 Less Time, More profit 【最大流-最大权闭合子图】
- Google Earth Engine(GEE)——NASA-USDA增强型SMAP全球土壤水分数据以10公里的空间分辨率提供全球的土壤水分信息
- 门铃C语言设计程序,单片机C语言程序设计:用定时器设计的门铃
- LCD和OLED显示屏有什么区别?