调用外部方法及工作流

调用外部方法及工作流

ID:30969086

大小:64.50 KB

页数:3页

时间:2019-01-04

调用外部方法及工作流_第1页
调用外部方法及工作流_第2页
调用外部方法及工作流_第3页
资源描述:

《调用外部方法及工作流》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、调用外部方法及工作流公开一个对象,来从执行的工作流中传给宿主应用程序,或者从宿主应用程序传给工作流不就行了吗?其实,使用现有的串行化技术,女口.NETRemoting或者XMLWeb服务,就可完成这些事。串行化,也叫序列化,它可把数据从原冇的形式转换成合适的形式,以在不同进程甚至不同计算机Z间进行传输。学习完本章,你将掌握:1•创建并调用你的工作流外部的本地数据服务2•理解怎样使用接口来为宿主进程和你的工作流Z间进行通信。3•使用设计的外部方法在你的T作流和宿主应用程序之间传输数据。4•在一个正执行的工作流小调用其它工作流在写前面

2、的章节时,我白己不断地思考,“我不能再等了,我要弄清楚在哪里可把(工作流中的)真实数据返回到宿主应用程序中!”为什么?做了这么多的活动和工作流的演示,但都没冇实际返回某些感兴趣的东西给宿主应用程序。我不知写过多少我们感兴趣的工作流的实例和演示,但至多只是仅仅处理过数据的初始化(就像第一章・WF简介中你看过的邮政编码的例子)。但事情变得更加有趣,坦率地说,当我们启动工作流,然后从外部源中寻找并处理数据、返回处理后的数据给我们的主应用程序耍更加接近现实。为什么不这样呢?公开一个对彖,來从执行的工作流中传给宿主应用程序,或者从宿主应用程

3、序传给工作流不就行了吗?其实,使用现有的串行化技术,如.NETRemoting或者XMLWeb服务,就可完成这些事。串行化,也叫序列化,它可把数据从原有的形式转换成合适的形式,以在不同进程英至不同计算机之间进行传输。为什么谈到序列化呢?因为你的工作流是在你的宿主进程屮的不同线程上执行,不同线程Z间传送数据,如不进行适当的序列化,将会引发灾难,具体原因超出了本书的讨论范围。其实,你的工作流能在一个持久化的状态下发送它的数据。这并没有在不同线程上,甚至它不在执行中。但我们想在我们的工作流和正控制该工作流的宿主进程间传送数据时,使用.N

4、ETRemoting或者XMLWeb服务这样的技术为什么并没冇认为是多余的呢?其实这绝对冇必要!我们将创建local通信,木章将以此出发。我们将搭建必须的体系来满足线程数据序列化,以进行计算机Z间或进程之间的数据传输。创建ExternalDataService服务当工作流和它的宿主进行通信时,在它发送和接收数据的时候,工作流要使用队列和消息。WF为我们做的越多,我们就可把重点更多的放到应用中特定任务的解决上。工作流内部进程通信对于简单的通信任务,WF使用“abstractionlayer”来在工作流和宿主之间进行缓冲。抽象层像一个

5、黑盒,你为它提供输入,它会执行一些神奇的任务,然后信息流出到另一边。但我们不用知道它是如何工作的。在这种情形下,该黑盒就是一个知名的“localcommunication”服务。和WF术语中的任何一种服务一样,它也是另一种可插拔服务。区别是它不像WF屮的那些已预先创建好的服务,你需要写出这个服务的一部分。为什么呢?因为你在宿主应用程序和你的工作流Z间传递的数据有一定的特殊性。更进一步说,你可创建各种各样的数据传输方法,伤何使用你设计的各种方法从宿主应用程序发送数据,然后在工作流中接收数据。备注:这里有些事情你需要进行关注,那就是对

6、象或集合的共亨问题。因为宿主应用程序和工作流运行时在同一个应用程序域执行,因此引用类型的对象和集合就是通过引用而不是值进行传递。这意味着猪主应用程序和工作流实例在同一时间会访问和使用同一个对象,多线程环境下这会产生bug,出现数据并发访问错谋。因此,对于可能要进行并发访问的对象或集介,你可考虑传递一个对象或集介的副木,或许这可通过实现ICIoneable接口,或者考虑亲口序列化该对彖或集合并传递序列化后的版本。你可写这种localservice,把它插进工作流,然后打开连接,发送数据。这些数据可以是字符串,DataSet对彖,甚至

7、可以是你设计的任何可被序列化的自定义对彖。通信可以是双向的,尽管在本章我没有演示它。(这里,我仅仅是把数据从工作流屮传回给宿主应用程序。)从工作流的角度來说,我们使用工具生成活动的冃的是发送和接收数据。从宿主应用程序的角度来说,接收数据等同于一个事件,而发送数据就是在一个服务对象上的方法的简单调用。备注:我们在后面儿章看到更多的活动后还会重温该双向数据传输的概念。工作流活动从宿主应用程序屮接收数据基于一个HandleExternalEvent活动,我们将在第10章“Event活动”屮看到。我们也需要更深入地了解这些概念间的相互关系

8、,这在第17章“宿主通信”屮将进行介绍。对于当前,我们只是在工作流实例完成它的任务后,简单地返回复合数据给宿主。我们需要做的还不仅仅是这一点,我们最终需耍添加ExternalDataService服务到我们的工作流运行时屮。ExternalData

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。