[b]1.1对于工作流总体概貌的理解[/b]
这几天一直在看MSDN,整理下自己的思路。
在.net工作流中,进程通过WorkflowRuntime创建和维护WorkflowInstance.除此而外,WorkflowRuntime可以创建自定义的服务和本地服务(为工作流处理对象设计服务),可以控制从内存中加载和卸载工作流(配合sqlWorkflowPersistenceService就可以实现工作流的持久化)等等。
现在理解下进程中workflowRuntime,workflowInstance和服务的关系(见附件)。
这是MSDN中描述服务在workflowRuntime中的执行情况,不过从侧面反映了:
1.workflowInstance由workflowRuntime创建。
2.服务由addservice()加载入workflowRuntime中,而与workflowInstance实例无关。
3.workflowInstance在创建后,自动流动触发activity。在activity中触发service中的事件,转而由workflowRuntime将事件转化为接口上的事件调用(EventHandle)。
从上面的分析,举个例子来说,就是workflowInstance相当于公司中文档批复的业务流程,而服务就是需要批复的文档以及在文档上要做的操作。而workflowRuntime则是跳出流程和文档,调整两者连接的部门(虚拟,假设有此部门)。
[b]1.2 对ExternalDataExchangeService服务的理解[/b]
诚如MSDN所说,一个必须添加到工作流运行时引擎才能启用本地服务通信的服务。若要正确地初始化和注册这些服务([color=red]我觉得应该是添加到workflowRuntime里服务于workflowInstance的服务[/color]),必需将本地服务添加到ExternalDataExchangeService中。
因此workflowRuntime,workflowInstance,ExternalDataExchangeService和本地服务的关系是:workflowRuntime承载workflowInstance,ExternalDataExchangeService被添加到workflowRuntime,本地服务被添加到ExternalDataExchangeService中以实现对于譬如SqlWorkflowPersistenceService的初始化。
[color=red]还有,就是本地服务必须实现使用 ExternalDataExchangeAttribute 进行修饰的接口。[/color]本地服务中的需要定义方法和事件(需要实现ExternalDataEventArgs)供CallExternalMethodActivity和HandleExternalEventActivity使用。
前者用于工作流实例从外部接收信息,后者用于处理由本地服务引发的事件的工作流通信活动。workflowRuntime会将本地服务上的方法调用转化为workflowInstance上的Event触发。
这几天一直在看MSDN,整理下自己的思路。
在.net工作流中,进程通过WorkflowRuntime创建和维护WorkflowInstance.除此而外,WorkflowRuntime可以创建自定义的服务和本地服务(为工作流处理对象设计服务),可以控制从内存中加载和卸载工作流(配合sqlWorkflowPersistenceService就可以实现工作流的持久化)等等。
现在理解下进程中workflowRuntime,workflowInstance和服务的关系(见附件)。
这是MSDN中描述服务在workflowRuntime中的执行情况,不过从侧面反映了:
1.workflowInstance由workflowRuntime创建。
2.服务由addservice()加载入workflowRuntime中,而与workflowInstance实例无关。
3.workflowInstance在创建后,自动流动触发activity。在activity中触发service中的事件,转而由workflowRuntime将事件转化为接口上的事件调用(EventHandle)。
从上面的分析,举个例子来说,就是workflowInstance相当于公司中文档批复的业务流程,而服务就是需要批复的文档以及在文档上要做的操作。而workflowRuntime则是跳出流程和文档,调整两者连接的部门(虚拟,假设有此部门)。
[b]1.2 对ExternalDataExchangeService服务的理解[/b]
诚如MSDN所说,一个必须添加到工作流运行时引擎才能启用本地服务通信的服务。若要正确地初始化和注册这些服务([color=red]我觉得应该是添加到workflowRuntime里服务于workflowInstance的服务[/color]),必需将本地服务添加到ExternalDataExchangeService中。
因此workflowRuntime,workflowInstance,ExternalDataExchangeService和本地服务的关系是:workflowRuntime承载workflowInstance,ExternalDataExchangeService被添加到workflowRuntime,本地服务被添加到ExternalDataExchangeService中以实现对于譬如SqlWorkflowPersistenceService的初始化。
[color=red]还有,就是本地服务必须实现使用 ExternalDataExchangeAttribute 进行修饰的接口。[/color]本地服务中的需要定义方法和事件(需要实现ExternalDataEventArgs)供CallExternalMethodActivity和HandleExternalEventActivity使用。
前者用于工作流实例从外部接收信息,后者用于处理由本地服务引发的事件的工作流通信活动。workflowRuntime会将本地服务上的方法调用转化为workflowInstance上的Event触发。
本文探讨了.NET工作流中的关键概念,包括WorkflowRuntime、WorkflowInstance及其与服务的交互方式。特别关注了ExternalDataExchangeService的作用及其实现本地服务通信的方法。
--暂告一段落&spm=1001.2101.3001.5002&articleId=83227403&d=1&t=3&u=1a3f94f27fe54b708ca020d66dd84ec8)
2336

被折叠的 条评论
为什么被折叠?



