论坛首页 Java企业应用论坛

请教工作流问题

浏览 8143 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-11-27  
在现在做的一个请款审批的系统中用到了工作流。在设置工作流模板的时候遇到一个逻辑上的问题。为了说明这个问题,我先把大概的流程说一下。

一般在申请人申请一笔款项时,需要经过上级主管,再上级主管的层层审批,通过之后到财务领取请款。其中,审批节点设不同的审批角色,例如“部门主管”、“总经理”等。由于高层领导通常时间都很宝贵,对于一些金额较小的请款单,可以直接跳过“总经理”节点。这也没有问题,可以在节点上设置金额范围条件,只有在设定的金额范围内的请款单,才需要由该节点审批。

这里还有一个问题是,对于行政级别比较高的人员,他们可能拥有多个角色,有可能他们提交的申请单都由自己审批(在我的系统中,如果是这样的节点都会被跳过)。这样他们的申请单就被直接提交到了财务,这是非常不安全的。于是给某些节点再加上“备用审批角色”,工作流运行时,需要判断申请人是否同时是审批人,如果是的话,则检测是否设置了备用审批角色,同时把任务发送给对应的备用审批人。

问题在于,当碰到下面的请况时,还是会出现申请单被直接提交到财务的情况。
工作流模板:
①(申请人)→②(部门主管)→③(总经理)[金额为2000~5000][备用审批角色:总裁]→④(财务)

申请人a是总经理,他同时拥有部门主管的角色。a提交了一张1000块钱的申请单,他的这张单子被实例化为:
①(申请人:a)→②(部门主管:a、b)→③(总经理:a、c)[金额为2000~5000][备用审批人:d]→④(财务:e)

这时②会被跳过,而③根本不会走,因为只有金额在[2000~5000]的单子才会被处理,于是a的单子又被直接提交到财务。

对于这种高权限,低金额的情况是不是很常见呢,怎么控制比较好呢,应该会有通用的处理方法吧。

刚接触工作流,希望大家能帮扶一下。

   发表时间:2007-11-27  
anniewm 写道
在现在做的一个请款审批的系统中用到了工作流。在设置工作流模板的时候遇到一个逻辑上的问题。为了说明这个问题,我先把大概的流程说一下。

一般在申请人申请一笔款项时,需要经过上级主管,再上级主管的层层审批,通过之后到财务领取请款。其中,审批节点设不同的审批角色,例如“部门主管”、“总经理”等。由于高层领导通常时间都很宝贵,对于一些金额较小的请款单,可以直接跳过“总经理”节点。这也没有问题,可以在节点上设置金额范围条件,只有在设定的金额范围内的请款单,才需要由该节点审批。

这里还有一个问题是,对于行政级别比较高的人员,他们可能拥有多个角色,有可能他们提交的申请单都由自己审批(在我的系统中,如果是这样的节点都会被跳过)。这样他们的申请单就被直接提交到了财务,这是非常不安全的。于是给某些节点再加上“备用审批角色”,工作流运行时,需要判断申请人是否同时是审批人,如果是的话,则检测是否设置了备用审批角色,同时把任务发送给对应的备用审批人。

问题在于,当碰到下面的请况时,还是会出现申请单被直接提交到财务的情况。
工作流模板:
①(申请人)→②(部门主管)→③(总经理)[金额为2000~5000][备用审批角色:总裁]→④(财务)

申请人a是总经理,他同时拥有部门主管的角色。a提交了一张1000块钱的申请单,他的这张单子被实例化为:
①(申请人:a)→②(部门主管:a、b)→③(总经理:a、c)[金额为2000~5000][备用审批人:d]→④(财务:e)

这时②会被跳过,而③根本不会走,因为只有金额在[2000~5000]的单子才会被处理,于是a的单子又被直接提交到财务。

对于这种高权限,低金额的情况是不是很常见呢,怎么控制比较好呢,应该会有通用的处理方法吧。

刚接触工作流,希望大家能帮扶一下。

一段java代码就可以完全满足你的需要,
我们以前的工作流是由C/S工具生成的表。。。
有很强大的表现层生成技术。
所以没人敢改到内核里。。。的代码
我提议在数据表里加上约束,被否了。
之后不了了之了。
0 请登录后投票
   发表时间:2007-11-27  
楼上的大哥,能稍微讲明白点吗?

我没懂怎么解决这个问题呢。

之前,我想在③处加一个平行节点,其他内容一样,只是金额互斥,③Ⅱ(总经理)[0~2000][备选审批角色],但是这样的话,总经理不处理小额申请单的问题又回来了。这种方法被否定。。。

还有一种解决思路是,在判断节点条件时,加上“如果审批人里有申请人”,则不管金额范围,都由备选审批人处理,没有设置备选人的节点被跳过。

不知道楼上的大哥说的是不是这种方法?

请指教~~
0 请登录后投票
   发表时间:2007-11-27  
①(申请人)→②(部门主管)→③(总经理)[金额为2000~5000][备用审批角色:总裁]→④(财务)

能不能在3和4之间加一个节点,用于判断经过的审批人人数。如果为0,则将流程流转到一个特定的审批人。
0 请登录后投票
   发表时间:2007-11-28  
truesmile 写道
①(申请人)→②(部门主管)→③(总经理)[金额为2000~5000][备用审批角色:总裁]→④(财务)

能不能在3和4之间加一个节点,用于判断经过的审批人人数。如果为0,则将流程流转到一个特定的审批人。


这种方法的问题在于,这个插入的节点应该给谁审批呢?因为这和申请人的身份是有关系的。如果申请人是部门主管,那他应该给总经理,如果是总经理,则应该给总裁。

现在我采用的还是在工作流模板上设置角色类,实例化时结合申请人的机构ID将角色类转化为角色,工作流运行时再去找角色对应的人。这样在计算任务处理人时灵活性还是不是很好。

还是没有找到好的解决方法。
0 请登录后投票
   发表时间:2007-11-28  
奇怪,你的工作流没有分支节点的吗?在分支节点里可以插入自己的业务逻辑判断。
0 请登录后投票
   发表时间:2007-11-28  
ronghao 写道
奇怪,你的工作流没有分支节点的吗?在分支节点里可以插入自己的业务逻辑判断。


能解释一下吗?
分支节点是在模板上设的,还是在运行中新加的节点啊?

我刚接触工作流,不太懂怎样把业务逻辑比较灵活地插入。
0 请登录后投票
   发表时间:2007-11-28  
你的系统里审批节点的处理人是怎样确定的?不能写段代码过滤掉申请人吗?
0 请登录后投票
   发表时间:2007-11-28  
cbhyk 写道
你的系统里审批节点的处理人是怎样确定的?不能写段代码过滤掉申请人吗?


审批节点的处理人是在流转到该节点之前确定的,节点里存储的是处理角色,流转到该点时才去确定拥有这个角色的是哪些人,然后给这些人发任务。在流转前需要判断申请人是否拥有该节点的处理角色,如果有的话,则跳过这个节点。
0 请登录后投票
   发表时间:2007-11-28  
分支就是多加几个transition,每个transition上有不同的条件,满足那个就走哪个
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics