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

沈阳高端网站建设学seo如何入门

沈阳高端网站建设,学seo如何入门,住房和城乡建设部网站 投诉,卖普洱茶做网站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.cadmedia.cn/news/9042.html

相关文章:

  • 康定网站建设工作室企业宣传视频
  • 网站代建设费用十大场景营销案例
  • 网站建设申报方案成都网站制作费用
  • 重庆公司注销流程aso搜索优化
  • 找人做博彩网站百度代理查询系统
  • 网站建设网络推广常德seo
  • 东营网站建设关键字排名问题注册域名
  • 网站服务器错误怎么解决上海最专业的seo公司
  • 台州建设局网站建筑工程黑名单山西seo顾问
  • 企业门户网站需求分析2345网址导航大全
  • 营销型网站建设策划书怎么写百度指数查询网
  • 软件技术的就业方向泉州seo优化
  • 德阳市建设局网站关键词挖掘站长工具
  • 网站后台用什么做服务器南阳本地网络推广优化公司
  • wordpress 36氪主题广州seo推广优化
  • 贵阳市住房和城乡建设部网站世界军事新闻
  • 宁夏自治区住房与城乡建设厅网站外链seo
  • 山东军辉建设集团有限公司 公司网站网址百度排名优化软件
  • 社区居委会网站建设wp博客seo插件
  • 营销类图片整站seo怎么做
  • 洞头区网站建设收费百度竞价点击工具
  • 广告设计与制作专业技能南宁seo多少钱报价
  • 百度网站关键词百度西安
  • 上海市官方网站营销策略方案
  • 济南城乡建设官方网站网站提交工具
  • 重庆最新情况 最新消息前端seo怎么优化
  • 江苏建设工程网站seo核心技术排名
  • vs2017 网站开发环境网页搜索优化
  • 企业网站建设中存在的问题分析百度地图关键词优化
  • 关于政府网站建设工作讲话北京seo薪资