写这篇博客的目的正是由于这个receive和send使用一直很困惑,有应用程序的多个实例,但整体感觉很模糊认识。每一次遇到,再要弄清楚。如今将这send和receive结合我们之前做的实例(未使用WCF)来理解,事实上这两个看似深奥的东东,和我们已经掌握的工作流知识没有什么大的区别!

以下就结合着之前的工作流的知识和send,receive来对照一下:

由于一个流程不可能是不间断的运行,再次启动时须要从当时的断点继续

实现方式两种:

对照:

1,Receive

当我们client调用Receive的方法时。就可以继续进行这个流程。

2,BookMark

client调用WorkFlowProcess.RunInstance(info),就可以继续进行,可是我们在暂停之前须要运行Wait流,即创建BookMark。下次从书签处继续运行这个流程

以下简介一下Receive的使用方式,对于BookMark的创建在申请审批中已经有所介绍:

Receive中的方法,代理类会自己主动生成该方法---client调用代理类生成的方法---相当于启动receive的方法

receive的返回(命令窗体的返回):调用的方法会传guid等參数,然后将这写參数赋给工作流定义的变量_guid

或者receive返回到client:

与Receive相应的另一个Send:

Send中的方法。能够调用webService或WCF服务中的方法,以下的这个说明调用的是webService中的提供的方法,在服务端创建了接口和对应的实现类

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGVqaW5neXVhbjY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

返回值后缀+result

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGVqaW5neXVhbjY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

client:

 private void button1_Click(object sender, RoutedEventArgs e)
{
IDictionary<string, object> results = WorkflowInvoker.Invoke(new WFProject.Activity1());
string result = results["returnView"].ToString();
MessageBox.Show(result); }

对照:

1,send方式:消息

2。代码活动(CodeActivity):用户自己定义的活动结点

通过上述的说明,我们不难发现事实上这个Send的使用方式和我们之前自己写的CodeActivity(代码结点)没什么差别。仅仅是它是以消息的方式传递而已。

总结:就像我在文章开头所说的,对于新的知识我们总是非常难掌握,这时就须要和我们已有的知识相关联(编制知识网),拿send和receive来说,由于和已有的知识进行了比較学习,这样当再次遇到的时候我们就能够非常好的理解,也就不会出现每次都当做新的知识去学习一遍!

学习不不过知识的罗列,而在于对知识的总结过程!

版权声明:本文博客原创文章。博客,未经同意,不得转载。

[WF4.0 现实] WF4.0 Receive &amp;&amp; Send的更多相关文章

  1. centos7.2环境elasticsearch-5.0.1+kibana-5.0.1+zookeeper3.4.6+kafka_2.9.2-0.8.2.1部署详解

    centos7.2环境elasticsearch-5.0.1+kibana-5.0.1+zookeeper3.4.6+kafka_2.9.2-0.8.2.1部署详解 环境准备: 操作系统:centos ...

  2. SATA1.0,2.0,3.0区别

    外观没区别,接口都一样,线也一样,就是传输速率不一样,控制芯片不一样SATA1.0理论传输速度为1.5Gbit/s SATA2.0理论传输速度为3Gbit/sSATA2.0理论传输速度为6Gbit/s ...

  3. vue cli3.0 结合echarts3.0和地图的使用方法

    echarts 提供了直观,交互丰富,可高度个性化定制的数据可视化图表.而vue更合适操纵数据. 最近一直忙着搬家,就没有更新博客,今天抽出空来写一篇关于vue和echarts的博客.下面是结合地图的 ...

  4. [转]localhost、127.0.0.1和0.0.0.0和本机IP的区别

    一.IP地址是什么 首先,我们要知道网络中的相互访问其实就是在进行两者间的数据传递.就如同送快递一样,快递发出只有知道你的住址信息,才能将快递送到你的手中.而在网络访问时,只有知道你在网络中的地址信息 ...

  5. Webx.0-Web3.0:Web3.0

    ylbtech-Webx.0-Web3.0:Web3.0 Web3.0只是由业内人员制造出来的概念词语,最常见的解释是,网站内的信息可以直接和其他网站相关信息进行交互,能通过第三方信息平台同时对多家网 ...

  6. 创建或打开解决方案时提示"DotNetCore.1.0.1-SDK.1.0.0.Preview2-003131-x86"错误的解决方案

    提示"DotNetCore.1.0.1-SDK.1.0.0.Preview2-003131-x86"错误的解决方案: 1.检查是否有C:\Program Files (x86)\d ...

  7. Android requires compiler compliance level 5.0 or 6.0. Found '1.4' instead的解决办法

    今天在导入工程进Eclipse的时候竟然出错了,控制台输出的是: [2013-02-04 22:17:13 - takepicture] Android requires compiler compl ...

  8. 字符串数组初始化0 与memset 0 效率的分析

    转自:http://www.xuebuyuan.com/1722207.html 结合http://blog.sina.com.cn/s/blog_59d470310100gov8.html来看. 最 ...

  9. bootstrap2.0与3.0的区别

    在阅读这篇bootstrap2.0与3.0的区别的文章之前,大家一定要先了解什么是响应式网站设计?推荐大家看看这篇"教你快速了解响应式网站设计" . 我觉得bootstrap的可视 ...

随机推荐

  1. POJ 2002 点hash

    Squares Time Limit: 3500MS   Memory Limit: 65536K Total Submissions: 15489   Accepted: 5864 Descript ...

  2. Java中对不变的 data和object reference 使用 final

    Java中对不变的 data和object reference 使用 final 许多语言都提供常量数据的概念,用来表示那些既不会改变也不能改变的数据,java关键词final用来表示常量数据.例如: ...

  3. Redis 安装与简单示例(转)

    本文转载自:http://www.cnblogs.com/kissdodog/p/3570984.html Redis的安装 Redis下载地址如下:https://github.com/dmajki ...

  4. 采用Bash脚本性能监控过程

    为一个Linux过程监控,采用Bash脚本. 采用ps命令的过程监控,使用周期加上连续监测的睡眠时间. 使用方法: psmonitor.sh -p [pid] -d [interval] -n [st ...

  5. WPF遮蔽层的实现

    在一些项目中,难免会有耗时的加载,如果加载时没有提示,给人一种假死的感觉,很不友好,那么现在福利来啦,WPF版的模态窗体,先上效果图 实际效果指针是转动的,话不多说,一大批干货来袭 XMAL的代码 W ...

  6. 【OC加强】NSDate的使用方法——日期时间在实际开发中比較有用

    (1)日期的最主要知识点就是日期转换成字符串格式化输出,相反就是依照某个格式把字符串转换成日期. (2)一般关于时区的设置非常少用到,仅仅要了解就可以. #import <Foundation/ ...

  7. 带鉴权信息的SIP呼叫

    带鉴权信息的SIP呼叫 INVITE sip:1000@192.168.50.34SIP/2.0 Via: SIP/2.0/UDP192.168.50.32:2445;branch=z9hG4bK-d ...

  8. ActiveMQ相关背景(转)

    概述 介绍中间件.MOM.JMS.ActiveMQ,及相互的关系. 中间件 由于业务的不同.技术的发展.硬件和软件的选择有所差别,导致了异构组件或应用并存的局面.要使这些异构的组件协同工作,一个有效的 ...

  9. Effective C++规定45 附加代码

    这部分是额外的代码的博客.键45条款想法已经实现. #include<iostream> using namespace std; template<typename T> c ...

  10. 即时编译和打包您的 Groovy 脚本(转)

    在本文中将会涉及到: 使用 CliBuilder 来实现对命令行选项的支持,脚本执行时所需要的参数将通过命令行选项的方式传递. 使用 GroovyClassLoader 加载 Groovy class ...