如何在任意步骤中输入工作流程

时间:2011-11-09 16:43:28

标签: workflow-foundation-4

我有一个工作流服务,它将Workflow Foundation 4流程与应用程序数据库相关联,该应用程序数据库存储记录,显示用户下一步必须完成的步骤。如果工作流中出现不可恢复的错误,则会使工作流无法恢复,但应用程序中的数据库条目仍然存在,因此工作流状态与工作流之间存在“断开连接”。我们的申请状态。

我想要做的是创建失败工作流的另一个实例,但要使其与应用程序数据库条目同步。这将需要根据存在的应用程序数据库条目转到工作流中的任意入口点。

有可能这样做吗?这样做有什么陷阱吗?是否有更好的方法来管理应用程序依赖的工作流程?

工作流程看起来像这样:

  1. 启动工作流程。这将创建一个跟踪进程进度的应用程序db记录和一个显示用户下一步需要完成的操作的db记录。
  2. 用户“工作”该步骤,该步骤调用工作流服务(使用receive / sendreply),使用工作结果更新db记录,然后转到工作流程的下一步。
  3. 步骤2重复执行创建db记录的所有各个步骤,然后使用正在处理的结果更新这些记录并创建要处理的新db记录,直到该过程完成。
  4. 我试图回答的问题是,如果用户进入流程中的某个步骤并且工作流引擎失败,以便工作流实例无法恢复,那么我如何使用应用程序数据库条目来“重新启动”重新进入流程的过程,跳到故障点(假设我们已经解决了导致故障的问题)。这将消除用户必须“重做”已经完成的工作,并保持这个过程。

    我认为如果有一种方法可以查看已创建的应用程序数据库记录以确定进程已死亡的位置,是否可以“跳过”之前已完成的步骤并移至工作流程中的那一点基于这些db记录失败,我可以“恢复”进程(从用户的角度来看),而不会导致返工。

2 个答案:

答案 0 :(得分:2)

我刚刚开始使用Workflow,我一直在MSDN上的channel9上观看一些视频,但我遇到了一个可以帮助你的视频。 它讨论了使用书签和Ron Jacobs的一些基于任务的API。

请查看:Workflow TV - WF4 Workflow Episodes - a Task Based API

答案 1 :(得分:0)

听起来你想要实现的是补偿 - 即在事务中内置的自定义回滚功能。以下是交易和补偿活动文档的开头:

http://msdn.microsoft.com/en-us/library/ee358756.aspx

您可以使用Compensate活动在事务失败后进行数据库清理。