【发布时间】:2009-10-16 10:59:06
【问题描述】:
在开发将执行大量工作项的自定义工作流程时,一个或多个工作项可能会在其例行程序中的任何时间失败,甚至可能引发异常。
在处理工作流管理器中的工作项引发的异常时,最佳实践是什么?
例如,工作流管理系统是否应该简单地记录错误然后直接死掉?工作流管理器是否应该简单地记录异常并继续执行其他工作项?
【问题讨论】:
在开发将执行大量工作项的自定义工作流程时,一个或多个工作项可能会在其例行程序中的任何时间失败,甚至可能引发异常。
在处理工作流管理器中的工作项引发的异常时,最佳实践是什么?
例如,工作流管理系统是否应该简单地记录错误然后直接死掉?工作流管理器是否应该简单地记录异常并继续执行其他工作项?
【问题讨论】:
我会说这是非常依赖上下文的。
Pack parcel
Dispatch parcel
第 1 步的失败肯定不能再执行第 2 步吗?
Check price with vendor A
Check price with vendor B
...
Check price with vendor Z
Buy cheapest
可能一些价格检查失败不应妨碍整体完成。
我认为您至少需要启用
Park this for human intervention
和
Sorry your request could not be actioned.
但这变得非常棘手。您可能需要启用补偿(撤消以前的工作)。例如预订酒店,尝试预订航班 - 失败,嗯不足以中止我们还需要取消预订该酒店。
您可能还需要启用
That failed, I'll retry a little later.
【讨论】: