这一阵子在研究工作流理论中的异常,将心得拿出来和大家一起分享,并且希望大家多提宝贵意见。
1、工作流中的异常是不能和错误划等号的,异常只不过是正常的流程之外的流程,不一定都会成为错误,而且,在某些情况下,特别是流程正在向无法挽回的错误的方向进行的时候,我们要让系统抛出异常,从而使系统通过异常处理器和恢复机制回到正常的流程之中。
2、异常可以分为可以预见的异常和不可预见的异常。对于前一种,我们可以通过在设计过程分析、建立异常的模型来解决,并且,在实现的时候通过ECA(Event-Condition-Action)规则来实现对特定异常的自动处理。而对于后面的一种,处理起来就比较麻烦,在一些工作流管理系统中设置直接将其发给与用户交互的模块,让用户自己来选择如何进行处理。
3、对异常的处理有两个级别,一个是任务级别上的处理,另一个是工作流级别。
4、在任务级别上我们可以使用重试、设置副本,设置还原点三种方式来处理,但是我们应该看到,这三种方式的实现都是有一定的难度的。拿副本为例, 首先有不同的副本,就会造成资源上的浪费,我们不得不为每一个副本都分配一定的能够保证其正常运行的资源。其次,因为是副本,那么这个流程的完成是以其中任何一个完成为标准的,那么如果其中一个完成了之后,其它的流程都应该中止,否则就会出现问题,而在中止的时候,必定会产生另外的一个异常,而且,这个时候就涉及到对资源的回收问题。这也将是一个很难解决的问题。再次,创建了副本,那么客观上流程的数目就增多了,那么产生错误的几率不就也增大了吗?
由此看来,对于异常的处理,工作流还有许多值得研究的问题。
n
本文地址:http://com.8s8s.com/it/it33419.htm