当前位置: 首页 > wzjs >正文

网站建设注册网络营销课程感悟

网站建设注册,网络营销课程感悟,流量卡推广方法,网站死链检查Activiti6.0中审批不通过时回退到上一个节点/指定节点 在当前做的这个审批流中,需要增加一个审批不通过时回退节点的功能,因为当前系统需求还没有特别明确这部分,所以我就先写了以下两种回退情况: 1.回退到上一个节点 /*** 撤回…

Activiti6.0中审批不通过时回退到上一个节点/指定节点

在当前做的这个审批流中,需要增加一个审批不通过时回退节点的功能,因为当前系统需求还没有特别明确这部分,所以我就先写了以下两种回退情况:

1.回退到上一个节点

 /*** 撤回到上一个节点* @param processInstanceId* @param nowUserId*/@Override@Transactionalpublic void revoke(String processInstanceId, String nowUserId) {//获取待执行的任务节点Task task = taskService.createTaskQuery().processInstanceId(processInstanceId).singleResult();if(task == null){// throw new Exception("sorry,the process is not started or has finished, cannot be withdrawn");System.out.println("sorry,the process is not started or has finished, cannot be withdrawn");}//通过processInstanceId查询历史节点List<HistoricTaskInstance> htiList = historyService.createHistoricTaskInstanceQuery().processInstanceId(processInstanceId).orderByTaskCreateTime().asc().list();String myTaskId = null;HistoricTaskInstance myTask = null;//找到当前运行的节点HistoricProcessInstance processInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();ProcInstance procInstance = procInstanceMapper.selectById(processInstance.getBusinessKey()).get(0);SysUser startUser = sysUserService.selectUserById(procInstance.getUserId());List<SysUser> currUsers = findCurrUsers(task, startUser);System.out.println("----------- =-= -------currUser-----------------------"+currUsers.get(0).getUserId());System.out.println("------ =-= ------nowUserId--------------------------"+nowUserId);for (HistoricTaskInstance hti : htiList) {//判断一下当前的用户是否为当前任务的审批负责人 , 感觉后面通过权限赋予也可以不加这个判断//if (currUsers.get(0).getUserId().equals(nowUserId)&& hti.getId().equals(task.getId())) {if ( currUsers.get(0).getUserId().toString().equals(nowUserId)&&hti.getId().equals(task.getId())) {myTaskId = hti.getId();  //当前任务idmyTask = hti;break;}}if (null == myTaskId) {//throw new Exception("该任务非当前用户提交,无法撤回");System.out.println("该任务非当前用户提交,无法撤回~~!!");}String processDefinitionId = myTask.getProcessDefinitionId();//获取流程模型BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);String myActivityId = null;//查询已经完成的流程节点,查询到上一条已完成的节点,则跳出循环List<HistoricActivityInstance> haiList = historyService.createHistoricActivityInstanceQuery().executionId(myTask.getExecutionId()).finished().orderByHistoricActivityInstanceStartTime().desc().list();System.out.println("---------------the latest finished---------------"+haiList.get(0));myActivityId = haiList.get(0).getActivityId();
//        for (HistoricActivityInstance hai : haiList) {
//            if (myTaskId.equals(hai.getTaskId())) {
//                myActivityId = hai.getActivityId();
//                break;
//            }
//        }//最近一个已完成节点的 FlowNodeFlowNode myFlowNode = (FlowNode) bpmnModel.getMainProcess().getFlowElement(myActivityId);//原本的活动方向Execution execution = runtimeService.createExecutionQuery().executionId(task.getExecutionId()).singleResult();String activityId = execution.getActivityId();FlowNode flowNode = (FlowNode) bpmnModel.getMainProcess().getFlowElement(activityId);//记录原活动方向List<SequenceFlow> oriSequenceFlows = new ArrayList<SequenceFlow>();oriSequenceFlows.addAll(flowNode.getOutgoingFlows());//清理活动方向flowNode.getOutgoingFlows().clear();//建立新方向List<SequenceFlow> newSequenceFlowList = new ArrayList<SequenceFlow>();SequenceFlow newSequenceFlow = new SequenceFlow();newSequenceFlow.setId("newSequenceFlowId"+" WITHDRAW: "+nowtime());//新方向的源头---当前节点newSequenceFlow.setSourceFlowElement(flowNode);//新方向的目标---上一个已完成节点newSequenceFlow.setTargetFlowElement(myFlowNode);newSequenceFlowList.add(newSequenceFlow);flowNode.setOutgoingFlows(newSequenceFlowList);Authentication.setAuthenticatedUserId(nowUserId);taskService.addComment(task.getId(), task.getProcessInstanceId(), "撤回");//完成任务taskService.complete(task.getId());//恢复原方向flowNode.setOutgoingFlows(oriSequenceFlows);System.out.println("------------------withdraw successfully!!----------------------------");logger.info("退回成功!");}

2.回退到当前审批用户指定的节点
先查询一下当前流程实例的历史Activity表:

 /*** 展示历史Activity表* @param proInstanceId* @return*/@Override@Transactionalpublic List hisActInst(String proInstanceId){HistoricProcessInstance instance = historyService.createHistoricProcessInstanceQuery().processInstanceBusinessKey(proInstanceId).singleResult();String processInstanceId = instance.getId();//获取待执行的任务节点Task task = taskService.createTaskQuery().processInstanceId(processInstanceId).singleResult();if(task == null){// throw new Exception("sorry,the process is not started or has finished, cannot be withdrawn");System.out.println("sorry,the process is not started or has finished, cannot be withdrawn");}//通过processInstanceId查询历史节点List<HistoricTaskInstance> htiList = historyService.createHistoricTaskInstanceQuery().processInstanceId(processInstanceId).orderByTaskCreateTime().asc().list();String myTaskId = null;HistoricTaskInstance myTask = null;//找到当前运行的节点HistoricProcessInstance processInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();ProcInstance procInstance = procInstanceMapper.selectById(processInstance.getBusinessKey()).get(0);SysUser startUser = sysUserService.selectUserById(procInstance.getUserId());List<SysUser> currUsers = findCurrUsers(task, startUser);for (HistoricTaskInstance hti : htiList) {//判断一下当前的用户是否为当前任务的审批负责人 , 感觉后面通过权限赋予也可以不加这个判断//if (currUsers.get(0).getUserId().equals(nowUserId)&& hti.getId().equals(task.getId())) {if ( hti.getId().equals(task.getId())) {myTaskId = hti.getId();  //当前任务idmyTask = hti;break;}}if (null == myTaskId) {//throw new Exception("该任务非当前用户提交,无法撤回");System.out.println("该任务非当前用户提交,无法撤回~~!!");}List<HistoricActivityInstance> haiList = historyService.createHistoricActivityInstanceQuery().executionId(myTask.getExecutionId()).finished().orderByHistoricActivityInstanceStartTime().desc().list();return haiList;}

在根据获取到的目标回退节点的ActivityId进行回退操作:

/*** 回退到指定节点处* @param processInstanceId* @param nowUserId* @param tarActivityId* @return*/@Override@Transactionalpublic void rollBackToSpec(String processInstanceId, String nowUserId, String tarActivityId) {//获取待执行的任务节点Task task = taskService.createTaskQuery().processInstanceId(processInstanceId).singleResult();if(task == null){// throw new Exception("sorry,the process is not started or has finished, cannot be withdrawn");System.out.println("sorry,the process is not started or has finished, cannot be withdrawn");}//通过processInstanceId查询历史节点List<HistoricTaskInstance> htiList = historyService.createHistoricTaskInstanceQuery().processInstanceId(processInstanceId).orderByTaskCreateTime().asc().list();String myTaskId = null;HistoricTaskInstance myTask = null;//找到当前运行的节点HistoricProcessInstance processInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();ProcInstance procInstance = procInstanceMapper.selectById(processInstance.getBusinessKey()).get(0);SysUser startUser = sysUserService.selectUserById(procInstance.getUserId());List<SysUser> currUsers = findCurrUsers(task, startUser);System.out.println("----------- =-= -------currUser-----------------------"+currUsers.get(0).getUserId());System.out.println("------ =-= ------nowUserId--------------------------"+nowUserId);for (HistoricTaskInstance hti : htiList) {//判断一下当前的用户是否为当前任务的审批负责人 , 感觉后面通过权限赋予也可以不加这个判断//if (currUsers.get(0).getUserId().equals(nowUserId)&& hti.getId().equals(task.getId())) {if ( currUsers.get(0).getUserId().toString().equals(nowUserId)&&hti.getId().equals(task.getId())) {myTaskId = hti.getId();  //当前任务idmyTask = hti;break;}}if (null == myTaskId) {//throw new Exception("该任务非当前用户提交,无法撤回");System.out.println("该任务非当前用户提交,无法撤回~~!!");}String processDefinitionId = myTask.getProcessDefinitionId();//获取流程模型BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
//        String myActivityId = null;//查询已经完成的流程节点,查询到上一条已完成的节点,则跳出循环
//        List<HistoricActivityInstance> haiList = historyService.createHistoricActivityInstanceQuery()
//                .executionId(myTask.getExecutionId())
//                .finished()
//                .orderByHistoricActivityInstanceStartTime()
//                .desc()
//                .list();
//        System.out.println("---------------the latest finished---------------"+haiList.get(0));
//        myActivityId = haiList.get(0).getActivityId();//想要回退到的节点位置System.out.println(tarActivityId);FlowNode myFlowNode = (FlowNode) bpmnModel.getMainProcess().getFlowElement(tarActivityId);//原本的活动方向Execution execution = runtimeService.createExecutionQuery().executionId(task.getExecutionId()).singleResult();String activityId = execution.getActivityId();FlowNode flowNode = (FlowNode) bpmnModel.getMainProcess().getFlowElement(activityId);//记录原活动方向List<SequenceFlow> oriSequenceFlows = new ArrayList<SequenceFlow>();oriSequenceFlows.addAll(flowNode.getOutgoingFlows());//清理活动方向flowNode.getOutgoingFlows().clear();//建立新方向List<SequenceFlow> newSequenceFlowList = new ArrayList<SequenceFlow>();SequenceFlow newSequenceFlow = new SequenceFlow();newSequenceFlow.setId("newSequenceFlowId"+" ROLLBACK: "+nowtime());//新方向的源头---当前节点newSequenceFlow.setSourceFlowElement(flowNode);System.out.println("--------------new flow-----------------"+flowNode);//新方向的目标---要回退的节点System.out.println("--------------target flow-----------------"+myFlowNode);newSequenceFlow.setTargetFlowElement(myFlowNode);newSequenceFlowList.add(newSequenceFlow);flowNode.setOutgoingFlows(newSequenceFlowList);Authentication.setAuthenticatedUserId(nowUserId);taskService.addComment(task.getId(), task.getProcessInstanceId(), "回退");//完成任务System.out.println("========================完成任务====================");taskService.complete(task.getId());//恢复原方向flowNode.setOutgoingFlows(oriSequenceFlows);System.out.println("------------------RollBack successfully!!----------------------------");logger.info("退回成功!");//将退回完成后的当前节点的task返回
//        HistoricActivityInstance historicActivityInstance = historyService.createHistoricActivityInstanceQuery().activityId(tarActivityId).singleResult();
//
//        return historicActivityInstance.getTaskId();}
http://www.dtcms.com/wzjs/413192.html

相关文章:

  • 给村里做网站广州软文推广公司
  • 网站做引流百度快速收录方法
  • 沈阳大型网站设计公司厦门百度seo排名
  • 怎么做短链接网站百度信息流账户搭建
  • 四会城乡建设局网站北京网络优化
  • 网站整体框架推广百度百科
  • 上海网站建设v芯ee8888e移动排名提升软件
  • wordpress 去除logo百度有专做优化的没
  • 申请的网站怎么建设哪个浏览器看黄页最快夸克浏览器
  • 淘宝图片做链接的网站关键词seo公司推荐
  • 做中国o2o网站领导seo关键词排名优化是什么
  • 免费做数学题的网站火星时代教育培训机构怎么样
  • Tp5即做网站又提供api接口网络营销公司简介
  • 成都高投建设开发有限公司网站网址收录入口
  • 定州网站建设app开发定制
  • 如何根据流量选择网站网络营销推广活动有哪些
  • 河南seo优化技术
  • 做网站和APP需要多少钱企业网络推广方案策划书
  • wordpress安装流程图在广州做seo找哪家公司
  • 网站建设注意细节网络营销模式下品牌推广途径
  • 上海电子商务网站建设广州外贸推广
  • eclipse做网站表格seo排名优化什么意思
  • 赤峰网站制作公司网站建设平台有哪些
  • 辽宁网站建设公司电话seo推广优化培训
  • 园区网互联及网站建设线上推广活动有哪些
  • 网站制作国际连锁微信朋友圈广告推广
  • 辽阳网站建设网站点击量查询
  • 手机网站制作电话网络推广费用计入什么科目
  • 淄博网站建设咨询臻动传媒双11各大电商平台销售数据
  • 南城网站建设公司营销技巧