基于jeecg-boot的flowable流程自定义业务退回撤回或驳回到发起人后的再次流程提交

更多nbcio-boot功能请看演示系统

gitee源代码地址

后端代码: https://gitee.com/nbacheng/nbcio-boot

前端代码:https://gitee.com/nbacheng/nbcio-vue.git

在线演示(包括H5) : http://122.227.135.243:9888
 

     主要用户有些需求,需要自定义业务退回或撤回或驳回到发起人后能再次进行流程的提交,所以今天就解决这个问题。

    1、前端

      前端主要提供一个可以让用户进行选择再次提交的方法,同时检测是否是退回或撤回或驳回到发起人的节点

  




效果如下:

基于jeecg-boot的flowable流程自定义业务退回撤回或驳回到发起人后的再次流程提交_第1张图片

2、后端代码

   

 /**
    * 判断当前节点是否是第一个发起人节点(目前只针对自定义业务的驳回、撤回和退回操作)
    *
    * @param processInstanceId, actStatusType
    */
    @Override
	public boolean isFirstInitiator(String processInstanceId, String actStatusType) {
    	
    	if(StringUtils.equalsAnyIgnoreCase(actStatusType, ActStatus.reject) ||
    	    	   StringUtils.equalsAnyIgnoreCase(actStatusType, ActStatus.recall) ||
    	    	   StringUtils.equalsAnyIgnoreCase(actStatusType, ActStatus.retrun) ) {
    		if(StringUtils.isNotEmpty(processInstanceId)) {
    		    //  获取当前任务
                Task task = taskService.createTaskQuery().processInstanceId(processInstanceId).singleResult();
	    		BpmnModel bpmnModel = repositoryService.getBpmnModel(task.getProcessDefinitionId());
		        //  获取当前活动节点
		        FlowNode currentFlowNode = (FlowNode) bpmnModel.getMainProcess().getFlowElement(task.getTaskDefinitionKey());
		        // 输入连线
		        List inFlows = currentFlowNode.getIncomingFlows();
		        for (SequenceFlow sequenceFlow : inFlows) {
		        	FlowElement sourceFlowElement = sequenceFlow.getSourceFlowElement();
		        	// 如果上个节点为开始节点
		            if (sourceFlowElement instanceof StartEvent) {
		            	log.info("当前节点为发起人节点,上个节点为开始节点:id=" + sourceFlowElement.getId() + ",name=" + sourceFlowElement.getName());
		                return true;
		            }
		        }
    		}
    	}
		return false;	
    }

你可能感兴趣的:(nbcio-boot,java开发,jeecg-boot,flowable,java,vue)