Chinaunix首页 | 论坛 | 博客
  • 博客访问: 24302
  • 博文数量: 17
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 111
  • 用 户 组: 普通用户
  • 注册时间: 2014-01-10 14:33
文章分类

全部博文(17)

文章存档

2014年(17)

我的朋友
最近访客

分类: Java

2014-03-17 15:54:20

为了使用户可以在流程中产生逻辑异常(比如参与者设置为空)后,工作流引擎引入了异常补偿功能,通过这个功能,用户可以对流程产生的逻辑异常进行自定义的补偿。我们通过在流程中引入异常活动来完成客户的逻辑异常补偿自定义化的工作。

异常活动是一种新的活动类型,通过异常活动可以完成流程逻辑异常的补偿。异常活动不需要像其他活动一样设置其活动属性。通过后继转移线来完成异常的用户自定义补偿工作,如下图所示,在报销申请的时候,用户选择领导审批,当他没有选择领导直接提交工作项后,在领导审批的时候因为参与者为空则会产生逻辑异常,这是工作流引擎会激发流程中的异常活动,通过异常活动的后继活动完成用户的异常补偿工作。


                                                 工作流引擎中的异常活动实例

如果一个流程会产生多种不同的逻辑异常,我们可以通过异常活动的后继转移线来完成不同异常的补偿工作。我们包含以下几种逻辑异常:

参与者表达式异常:设置参与者有误产生的异常,比如参与者为空。

条件表达式异常:设置转移线表达式错误产生的异常。

后继条件不满足异常:流程流转完成某个活动后,该活动的后继转移线的条件都不满足,会抛出后继条件不满足异常。

调用应用程序出错异常:在调用应用程序出错时会产生该异常。

参与者函数异常:流程运转时,在调用用户的自定义参与者函数时候产生的异常。

下面是异常活动的后继转移线条件的设置面板:



                                    工作流引擎中的异常活动面板

 如果需要对不同的活动产生的异常进行异常补偿的话,可以通过激发异常活动的活动定义ID这个变量(ActivityID)来进行区分。比如流程中活动A(活动ID为1)和活动B(活动ID为2)都可能产生异常,但是活动A和活动B要进行不同的异常补偿。这时候可以在异常补偿活动后面设置两条转移线,通过ActivityID这个全局变量来设置转移线条件,异常活动的转移线条件和普通的转移线条件设置方式类似。

本文来源:时光·协同
阅读(563) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~