HandleExternalEventActivity
绑定外部事件(指工作流内部事件在宿主中触发)
1.InterfaceType要绑定到标记为[System.Workflow.Activities.ExternalDataExchange()]的一个接口上
2.EventName 要绑定到该接口声明的一个事件,事件格式最好与Invoked的事件签名一至
(object sender, ExternalDataEventArgs e) |
e参数可以通过重写ExternalDataEventArgs类进行括充,下例就重写了 (事件用的是2.0的写法,也可以使用传统写法) |
3.引擎中要加载ExternalDataExchange服务
4.ExternalDataExchange服务,要加载实现[1]所绑定接口类的实例
5.运行到HandleExternalEventActivity结点后,会进入idle状态,苏酲时间为
6.只有当宿主中触发绑定的事件后才会继续向下运行。
7.下例中如果所传的“InstanceId”与当前实例的[InstanceId]不一至时会报错
8.触发事件时的两个参数值会传入HandleExternalEventActivity的Invoked事件对应的参数,也会赋给参数映射中的设定
9.触发事件时 对象.触发事件("发送对象", 当前操作的实例.InstanceId ) 将要触发该事件的工作流实例的GUID号传入是非常重要的,因为引擎中可能有多个实例在等待该事件,发送工作流实例的GUID号可以告诉引擎是要触发那一个实例事件
Invoked事件
外部事件发生后发生该事件
private void handleExternalEvent_Invoked(object sender, ExternalDataEventArgs e) e.InstanceId e.Identity e.WaitForIdle e.WorkHandler e.WorkItem |
该事件中的两个参数与参数映射中的设定是一样的 可进行类型转换以得到自定义的扩充: (事件标志)e).自定义存值 |
图解:
将在工作流应用中对应用作具体说明
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构