首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 企业软件 > 行业软件 >

jBPM(2):jbpm4 请假demo

2013-09-28 
jBPM(二):jbpm4 请假demo一. 请假流程如下图,即:申请人申请--部门负责人审批--人事部审批--申请人归档

jBPM(二):jbpm4 请假demo
一. 请假流程如下图,即:申请人申请-->部门负责人审批-->人事部审批-->申请人归档

对应的xml文件为:



二. 管理员登录系统,设置部门与人员信息如下:
  
    张三(zhangsan) -- 研发部(员工)
    朱孝敏(zxm)     -- 研发部(负责人)
    周慧(zhouhui)  -- 人事部


三. 管理员部署程序:


      发起流程主要逻辑:
      (1)获取当前登录用户的信息,用于页面显示
      (2)启动流程时,将当前信息存入
      (3)根据当前节点,获得下一步的节点信息,以及下一步节点的参与者


       点击“处理”链接,进行流程审批,此处的逻辑是:

       (1)获得表单信息以及对应的审批信息
       (2)根据当前任务获得下一节点信息,取得对应的任务执行者
       (3)获得可退回节点信息(即已执行的节点信息)



      部门负责人输入审批意见后进行退回操作,页面如下图:

  

     提交之后,流程退回到张三处,张三登录系统,查看待办公文:



     进入之后,可以看到部门负责人的审批信息;然后其输入对应内容,再次提交到部门负责人处。



     步骤3:部门负责人登录之后,同意该请假,提交到人事部审批;

      步骤4:人事部(周慧)登录系统,可以查看到待办公文,并进行审批;



     步骤5:人事部同意请假之后,申请人(张三)进行归档操作,流程结束。





说明:

1. 流程中每一个Task都配置assignment-handler来动态设置参与者,所以在提交时需要将下一节点的参与者传入流程中。
EnvironmentImpl envImpl = ((EnvironmentFactory)processEngine).openEnvironment();          try {             //动态回退      Task task = getTaskService().getTask(taskId);          ExecutionImpl e = (ExecutionImpl)getExecutionService().findExecutionById(task.getExecutionId());            ActivityImpl currentActivityImpl = e.getActivity();                        ProcessDefinitionImpl processDefinitionImpl = currentActivityImpl.getProcessDefinition();                        //生成一个transition            ActivityImpl destActivityImpl = processDefinitionImpl.findActivity(backActivityName);   // 获取退回目的地的活动定义对象                     TransitionImpl backTransition = currentActivityImpl.createOutgoingTransition();            backTransition.setSource(currentActivityImpl);            backTransition.setDestination(destActivityImpl);                      //获得退回任务的历史参与者 (根据 jbpm4_hist_actinst /// jbpm4_hist_task 表获得 )          String user = getHistTaskUser(String.valueOf(e.getDbid()),backActivityName);          Map<String,Object> initData = new HashMap<String,Object>();     initData.put(Constants.FLOW_CUR_USER, user);                    getTaskService().completeTask(taskId,initData);      } catch (Exception e) {            e.printStackTrace();        }finally{            envImpl.close();        }  

热点排行