我花了好几天试图找到解决方案,我将尝试描述这个问题,我已经搜索了很多,甚至还查看了.NET 4参考源的SendReply和InternalSendReply活动。但直到现在我才被困住了。
为了让终端客户的生活更简单,我想用自定义活动替换Receive和SendReply活动,而是使用书签。
我正在实现一个可以路由到正确的工作流实例的中央Web服务,该工作流修改书签值,最终在返回修改后的书签值时创建新书签。它已经与WorkflowServiceHostFactory相当复杂,它可以添加行为并将DataContractResolver附加到端点。
端点派生自WorkflowHostingEndpoint,它解析在自定义活动(而不是接收)中创建的书签。我想要另一个活动而不是sendreply。这些2应该相关,并且自定义sendreply会在创建新书签时通过端点在开放通道上发送响应。
问题是我找不到从我的自定义发送活动中访问端点responseContext的方法。另一方面,在工作流创建端点端,似乎我无法在工作流变为空闲时收到通知,而且我似乎无法从中访问WorkflowExtensions主人。 我错过了什么?
我想到的一个可能的解决方案可能是没有使用WorkflowServiceHost,但后来我松散了很多AppFabric函数。
平台更新1中的工作流应用程序有一些名为RunEpisode的扩展方法,其中包含一个名为idleEventCallback的重载Func。在那里可以挂钩到OnIdle并获得一个workflowextension来让对象作为响应发回。
答案 0 :(得分:0)
为了回答我自己的问题,我最终使用sql server的servicebroker功能进行了解决方法。 SqlDependency类,当工作流到达在另一个状态下创建新书签的活动时,工作流将侦听要触发的事件。