JBPM4关于Assignee动态获取------OA系统工作流环节问题

今天在完善OA系统工作流的过程中,对于一直没有处理的动态指定assignee的问题进行了一个处理,因为去网上查了很多资料,但是都不太符合要求,或者感觉可能不太懂,于是自己想了一种方法,如果有什么更好的方法,请大家指导一下我,对于jbpm我也是初学。

首先说一下我的工程以及对于jbpm的需求。现在有一张表,Form,用来存储申请信息,这里可以是请假申请,可以是财务申请,对于这些具体分类,我用额外的表来存储相关的数据。

Form表主要存储的字段有

public class Form {

	/** 表单状态常量:审批中 **/
	public static final String STATUS_RUNNING = "审批中";

	/** 表单常量:已通过 **/
	public static final String STATUS_APPROVED = "已通过";

	/** 表单常量:未通过 **/
	public static final String STATUS_REJECTED = "未通过";

	private Long id;
	private ApplicationTemplate applicationTemplate; // 申请所用的文档模板
	private Set<ApproveInfo> approveInfos = new HashSet<ApproveInfo>();
	private User applicant; // 申请人

	private String title; // 标题
	private Date applyTime; // 申请时间
	private String path; // 文档的存储路径
	private LeaveFormInfo leaveFormInfo;  // 对应请假表信息序号
<pre name="code" class="java">

 这里我只做了请假表,具体的以后还需要完善。 

jbpm的xml是这样的

<?xml version="1.0" encoding="UTF-8"?>

<process name="员工请假流程" xmlns="http://jbpm.org/4.4/jpdl">
   <start g="264,32,48,48" name="start1">
      <transition g="-69,-22" name="to 提交申请" to="提交申请"/>
   </start>
   <end g="264,364,48,48" name="end1"/>
   <task g="242,112,92,52" name="提交申请" assignee="#{user.department.name}">
      <transition g="-93,-22" name="to 部门经理审批" to="部门经理审批"/>
   </task>
   <task assignee="zs" g="242,196,92,52" name="部门经理审批">
      <transition g="-81,-22" name="to 分公司总经理审批" to="分公司总经理审批"/>
   </task>
   <task assignee="ls" g="242,280,92,52" name="分公司经理审批">
      <transition g="-50,-22" name="to end1" to="end1"/>
   </task> 
</process>

这里指定的审批人是固定的,所以对于实际使用的OA系统来说,很不方便。

我采用的方法是,在form的表后面加几个字段。

private String bossMax; // 最高领导
private String bossMin; // 第一审批
private String bossSec; // 第二审批
private String bossThi; // 第三审批
private String bossFou; // 第四审批

 

那么这几个字段的用处就在于指定审批人,然后每次发起任务申请的时候,将审批人存入form表中,这样xml中就可以这样写

<?xml version="1.0" encoding="UTF-8"?>

<process name="员工请假流程" xmlns="http://jbpm.org/4.4/jpdl">
   <start g="264,32,48,48" name="start1">
      <transition g="-69,-22" name="to 提交申请" to="提交申请"/>
   </start>
   <end g="264,364,48,48" name="end1"/>
   <task g="242,112,92,52" name="提交申请" assignee="#{user.department.name}">
      <transition g="-93,-22" name="to 部门经理审批" to="部门经理审批"/>
   </task>
   <task assignee="#{form.bossMin}" g="242,196,92,52" name="部门经理审批">
      <transition g="-81,-22" name="to 分公司总经理审批" to="分公司总经理审批"/>
   </task>
   <task assignee="#{form.bossSec}" g="242,280,92,52" name="分公司经理审批">
      <transition g="-50,-22" name="to end1" to="end1"/>
   </task> 
</process>

如果有更多的审批,可以继续添加,然后在java中动态指定对应的人即可。

这样做的好处是根据不同的部门对应的不同的领导,发起申请时,都可以确定对应的审批人。

java中的代码实现方法很多,我这里说下我的思路,涉及几个表不太好发出,

department表中,有一个部门序号路径,由当前最高级departmentId到当前departmentId的序列,由“-”隔开,然后通过对序列的处理,可以找出本部门对应的上级领导。从而确定审批人。这个思路是刚相出的,还不完善,大家有什么好的方法,万望不吝赐教。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值