Activiti之流程通过、驳回、会签、转办、中止、挂起等核心操作封装(Activiti5.9)

这个博客详细介绍了Activiti流程引擎中的核心操作,包括流程的通过、驳回、会签、转办、中止和挂起等。提供了一系列的方法实现这些操作,如`findBackAvtivity`用于查找可驳回的任务节点,`passProcess`处理审批通过,`backProcess`实现驳回,`callBackProcess`支持取回流程,`endProcess`用于中止流程,以及`jointProcess`处理会签。此外,还包含了一些辅助方法,用于处理流程的转向和节点遍历。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.famousPro.process.service.impl;  
      
    import java.util.ArrayList;  
    import java.util.HashMap;  
    import java.util.List;  
    import java.util.Map;  
      
    import org.activiti.engine.FormService;  
    import org.activiti.engine.HistoryService;  
    import org.activiti.engine.RepositoryService;  
    import org.activiti.engine.RuntimeService;  
    import org.activiti.engine.TaskService;  
    import org.activiti.engine.history.HistoricActivityInstance;  
    import org.activiti.engine.impl.RepositoryServiceImpl;  
    import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;  
    import org.activiti.engine.impl.persistence.entity.TaskEntity;  
    import org.activiti.engine.impl.pvm.PvmTransition;  
    import org.activiti.engine.impl.pvm.process.ActivityImpl;  
    import org.activiti.engine.impl.pvm.process.ProcessDefinitionImpl;  
    import org.activiti.engine.impl.pvm.process.TransitionImpl;  
    import org.activiti.engine.runtime.ProcessInstance;  
    import org.activiti.engine.task.Task;  
      
    import com.famousPro.common.service.impl.BaseServiceImp;  
    import com.famousPro.common.util.IDGenerator;  
    import com.famousPro.common.util.StringUtil;  
    import com.famousPro.process.service.ProcessCoreService;  
    import com.famousPro.process.service.ProcessOtherService;  
      
    /** 
     * 流程操作核心类<br> 
     * 此核心类主要处理:流程通过、驳回、会签、转办、中止、挂起等核心操作<br> 
     *  
     * @author wangfuwei 
     *  
     */  
    public class ProcessCoreServiceImpl extends BaseServiceImp implements  
            ProcessCoreService {  
        protected RepositoryService repositoryService;  
      
        protected RuntimeService runtimeService;  
      
        protected TaskService taskService;  
      
        protected FormService formService;  
      
        protected HistoryService historyService;  
      
        protected ProcessOtherService processOtherService;  
      
        /** 
         * 根据当前任务ID,查询可以驳回的任务节点 
         *  
         * @param taskId 
         *            当前任务ID 
         */  
        public List<ActivityImpl> findBackAvtivity(String taskId) throws Exception {  
            List<ActivityImpl> rtnList = null;  
            if (processOtherService.isJointTask(taskId)) {// 会签任务节点,不允许驳回  
                rtnList = new ArrayList<ActivityImpl>();  
            } else {  
                rtnList = iteratorBackActivity(taskId, findActivitiImpl(taskId,  
                        null), new ArrayList<ActivityImpl>(),  
                        new ArrayList<ActivityImpl>());  
            }  
            return reverList(rtnList);  
        }  
      
        /** 
         * 审批通过(驳回直接跳回功能需后续扩展) 
         *  
         * @param taskId 
         *            当前任务ID 
         * @param variables 
         *            流程存储参数 
         * @throws Exception 
         */  
        public void passProcess(String taskId, Map<String, Object> variables)  
                throws Exception {  
            List<Task> tasks = taskService.createTaskQuery().parentTaskId(taskId)  
                    .taskDescription("jointProcess").list();  
            for (Task task : tasks) {// 级联结束本节点发起的会签任务  
                commitProcess(task.getId(), null, null);  
            }  
            commitProcess(taskId, variables, null);  
        }  
      
        /** 
         * 驳回流程 
         *  
         * @param taskId 
         *            当前任务ID 
         * @param activityId 
         *            驳回节点ID 
         * @param variables 
         *            流程存储参数 
         * @throws Exception 
         */  
        public void backProcess(String taskId, String activityId,  
                Map<String, Object> variables) throws Exception {  
            if (StringUtil.isNull(activityId)) {  
                throw new Exception("驳回目标节点ID为空!");  
            }  
      
            // 查询本节点发起的会签任务,并结束  
            List<Task> tasks = taskService.createTaskQuery().parentTaskId(taskId)  
                    .taskDescription("jointProcess").list();  
            for (Task task : tasks) {  
                commitProcess(task.getId(), null, null);  
            }  
      
            // 查找所有并行任务节点,同时驳回  
            List<Task> taskList = findTaskListByKey(findProcessInstanceByTaskId(  
                    taskId).getId(), findTaskById(taskId).getTaskDefinitionKey());  
            for (Task task : taskList) {  
                commitProcess(task.getId(), variables, activityId);  
            }  
        }  
      
        /** 
         * 取回流程 
         *  
         * @param taskId 
         *            当前任务ID 
         * @param activityId 
         *            取回节点ID 
         * @throws Exception 
         */  
        public void callBackProcess(String taskId, String activityId)  
                throws Exception {  
            if (StringUtil.isNull(activityId)) {  
                throw new Exception("目标节点ID为空!");  
            }  
      
            // 查找所有并行任务节点,同时取回  
            List<Task> taskList = findTaskListByKey(findProcessInstanceByTaskId(  
                    taskId).getId(), findTaskById(taskId).getTaskDefinitionKey());  
            for (Task task : taskList) {  
                commitProcess(task.getId(), null, activityId);  
            }  
        }  
      
        /** 
         * 中止流程(特权人直接审批通过等) 
         *  
         * @param taskId 
         */  
        public void endProcess(String taskId) throws Exception {  
            ActivityImpl endActivity = findActivitiImpl(taskId, "end");  
            commitProc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值