导航

02_接管Activiti流程用户及用户组 - 源码学习

Posted on 2021-01-15 10:10  WinChance  阅读(255)  评论(0编辑  收藏  举报

1、流程设计时,指定负责人/角色

 

 

 2、任务监听器,要指定org.fh.controller.act.util.ManagerTaskHandler;则在办理任务时,Activiti会自动传入默认负责人;

 

 

 以下为监听器的具体实现,主要是指定下一任务代办人:

/**
 * 说明:指定下一任务待办人
 */
@SuppressWarnings("serial")
public class ManagerTaskHandler implements TaskListener {

    @Override
    public void notify(DelegateTask delegateTask) {
        Session session = Jurisdiction.getSession();
        session.setAttribute("TASKID", delegateTask.getId());            //任务ID
        session.setAttribute("YAssignee", delegateTask.getAssignee());    //默认待办人(用户ID/角色ID)
    }

}

3、在办理任务后,可手动指定下一任务代办人,否则使用步骤2的默认代办人

        String ASSIGNEE_ = pd.getString("ASSIGNEE_");                            //下一待办对象
        if(Tools.notEmpty(ASSIGNEE_)){
            setAssignee(session.getAttribute("TASKID").toString(),ASSIGNEE_);    //指定下一任务待办对象
        }else{
            Object os = session.getAttribute("YAssignee");
            if(null != os && !"".equals(os.toString())){
                ASSIGNEE_ = os.toString();                                        //没有指定就是默认流程的待办人
            }else{
                trySendSms(zmap,pd);             //没有任务监听时,默认流程结束,发送站内信给任务发起人
            }
        }
        zmap.put("ASSIGNEE_",ASSIGNEE_);        //用于给待办人发送新任务消息

4、下一代办人,将收到消息,自行查询待办任务后处理;

5、至此,已经将Activiti自带的用户/用户组接管了。无需使用其自带的服务及表;

 

 备注:即时通讯技术,后续会再做笔记。