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相关推荐

  1. Android---如何返回上一Activity

    Android 代码用来返回上一个activity 调用onKeyDown()时发生java.lang.NullPointerException. 来自:CSDN博客推荐文章   |  时间:2012 ...

  2. activity 防止多次打开_Android开发Activity任务和返回栈

    任务是用户在执行某项工作时与之互动的一系列 Activity 的集合.这些 Activity 按照每个 Activity 打开的顺序排列在一个返回堆栈中.例如,电子邮件应用可能有一个 Activity ...

  3. 2020-09-22C++学习笔记之引用1(1.引用(普通引用)2.引用做函数参数 3.引用的意义 4.引用本质5.引用结论 6.函数返回值是引用(引用当左值)7测试代码)

    2020-09-22C++学习笔记之引用1(1.引用(普通引用)2.引用做函数参数 3.引用的意义 4.引用本质5.引用结论 6.函数返回值是引用(引用当左值)7测试代码) 1.引用(普通引用) 变量 ...

  4. JAVA接口返回面积_java – 将接口的返回值限制为实现类的范围

    我正在编写一个小型库,我有一些接口提供了一个返回值应该在指定范围内的方法.我如何明确禁止实现此方法的库的用户返回不在此范围内的值? 像这样的东西: //Library interface Favori ...

  5. c语言recv函数返回值,谈谈recv()函数的返回值

    网上某论坛有这样一个问题:当recv()函数的返回值为0时,能不能在接收端不关闭套接字,以便这条建立好的C/S通信下次可以直接使用? 我对这个问题的回答是:不能. 原因是:此时即使接收端不关闭套接字, ...

  6. return两个返回值_23.1 函数的返回值(二)

    函数的返回值格式 function 函数名(){return 需要返回的结果;}函数名(); 注意: (1)函数只是实现某种功能,最终的结果需要返回给函数的调用者函数名(),通过 return 实现. ...

  7. 获取存储过程返回值及代码中获取返回值

    获取存储过程返回值及代码中获取返回值 1.OUPUT参数返回值例: 向Order表插入一条记录,返回其标识 CREATE PROCEDURE [dbo].[nb_order_insert]( @o_b ...

  8. java json 返回null,[] Spring4 MVC 返回json格式时候 设置不返回null值属性的有关问题...

    [求助] Spring4 MVC 返回json格式时候 设置不返回null值属性的问题 本帖最后由 bighong0404 于 2015-10-06 12:45:38 编辑 背景: 使用@respon ...

  9. system函数的返回值和执行脚本的返回值

    1.先统一两个说法: (1)system返回值:指调用system函数后的返回值,比如上例中status为system返回值 (2)shell返回值:指system所调用的shell命令的返回值,比如 ...

最新文章

  1. LeetCode 137. Single Number II--三次异或消除相同的数--C++,Python解法
  2. 可爱的MicrosoftAjax.js精简版(47K)
  3. python datetime datetime_Python datetime.tzinfo方法代碼示例
  4. Android设计模式(九)--外观模式
  5. 华为云IoT提出泛在新联接,让万物皆可联
  6. Java IO流之文件流
  7. MFC模块的动态链接库DLL以及静态链接库LIB编译后的调用
  8. SAP UI5 应用开发教程之四十八 - 如何在 SAP UI5 应用里开发条形码扫描功能
  9. jar各个版本号的意义
  10. Spring Security 示例UserDetailsS​​ervice
  11. mysql 插入毫秒数据_【转载】怎样在mybatis里向mysql中插入毫秒数的时间?
  12. AutoFDO自动反馈式优化
  13. linux内存布局和地址空间布局随机化(ASLR)下的可分配地址空间
  14. UVa 401 - Palindromes
  15. JavaScript实现字符串的contains函数
  16. Applese 涂颜色(python解法)
  17. HDU 5855 Less Time, More profit 【最大流-最大权闭合子图】
  18. Google Earth Engine(GEE)——NASA-USDA增强型SMAP全球土壤水分数据以10公里的空间分辨率提供全球的土壤水分信息
  19. 门铃C语言设计程序,单片机C语言程序设计:用定时器设计的门铃
  20. LCD和OLED显示屏有什么区别?

热门文章

  1. goodFeaturesToTrack函数
  2. MATLAB 图像的傅里叶变换
  3. 模拟退火算法解决TSP(python实现 110+行代码)【gif生成】
  4. (深度卷积生成对抗神经网络)DCGANs论文阅读与实现pytorch
  5. 非计算机专业学习计算机
  6. Flex学习笔记(零)
  7. C#2.0泛型-Dictionary,List的用法
  8. UA MATH567 高维统计II 随机向量4 Frame、凸性与各向同性
  9. CODE 大全网站整站源码分享(带数据库)
  10. Cuda编程学习(一)