我正在构建一个应用程序来管理员工的假期请求,Windows Workflow Foundation处理核心逻辑。我想开发一个简单的工作流程,该工作流程将在创建请求时启动,并根据请求是被批准还是被拒绝来执行任务。
创建请求后,工作流会发出通知电子邮件,然后停止执行,等待做出决定(通过HandleExternalEvent活动)。我有一个名为RequestDecisionMonitor的服务类,它实现了IRequestDecisionMonitor,它标有[ExternalDataExchange]并引发一个包含ExternalDataEventArgs的事件。
服务只是按设定的时间间隔轮询数据库,检查自上次检查后是否已批准或拒绝任何请求。如果有,则应该引发事件,然后重新激活工作流程。
我遇到的问题是,在提升事件时我需要传递工作流的instanceId,以便运行时可以找到需要激活的工作流。但是,我不知道ID是什么,因为它没有存储在任何地方。
我是否需要在数据库中保留工作流ID以及其假期请求的链接?我可以做到这一点,但这个问题让我想到也许我的整个方法都是错误的。
WF大师的任何建议都会受到赞赏。
答案 0 :(得分:0)
使用WorkflowEnvironment.WorkflowInstanceId,您可以在活动调用服务时获取instanceId。保存,或将其与请求一起发送,您可以稍后使用它来提升工作流程的事件。