• activiti--事件监听


    一、activiti的监听器分为:全局监听、连线监听、节点监听。

    1、节点监听

        <userTask id="myTask" name="My Task" >
        <extensionElements>
        <activiti:taskListener event="create" class="org.activiti.MyTaskCreateListener" />
        </extensionElements>
        </userTask>

    activiti:taskListener 元素属性说明:

    • event (required): 事件类型.。支持的类型有:

      • create: 任务被创建,并且所有的属性都被设置好后。

      • assignment: 任务被委派给某人后.。注意: 当流程执行到达一个userTask时,会先触发一个assignment事件,再触发create事件。

      • complete:在任务完成后,且被从运行时数据(runtime data)中删除前触发。

      • delete: 在任务将要被删除之前发生。注意,当任务通过completeTask完成任务时,它也会被执行。

    • class: 必须调用的委托类。 一定要实现 org.activiti.engine.delegate.TaskListenerinterface接口。

    
    
    public class MyTaskListener implements TaskListener {
        
        public void notify(DelegateTask delegateTask) {
            String eventName = delegateTask.getEventName();
            if ("create".endsWith(eventName)) {
                System.out.println("create=========");
            }else if ("assignment".endsWith(eventName)) {
                System.out.println("assignment========"+delegateTask.getAssignee());
    
            }else if ("complete".endsWith(eventName)) {
                System.out.println("complete===========");
            }else if ("delete".endsWith(eventName)) {
                System.out.println("delete=============");
            }
        }
    }
     

    2、全局监听

    public class MyExecutionListener implements ExecutionListener {
    
        public void notify(DelegateExecution delegateExecution) throws Exception {
    
            String eventName = delegateExecution.getEventName();
            
            if ("start".equals(eventName)) {
                System.out.println("start=========");
            }else if ("end".equals(eventName)) {
                System.out.println("end=========");
            } else if ("take".equals(eventName)) {//连线监听
                System.out.println("take=========");
            }
        }
    }
    package com.example.linster;
    
    import org.activiti.engine.RepositoryService;
    import org.activiti.engine.TaskService;
    import org.activiti.engine.delegate.DelegateTask;
    import org.activiti.engine.delegate.TaskListener;
    import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl;
    import org.activiti.engine.impl.context.Context;
    
    public class MyTaskLinster implements TaskListener{
    
        private static final long serialVersionUID = 1L;
    
        @Override
        public void notify(DelegateTask delegateTask) {
            /**
             * 
                create: 任务被创建,并且所有的属性都被设置好后。
                assignment: 任务被委派给某人后.。注意: 当流程执行到达一个userTask时,会先触发一个assignment事件,再触发create事件。
                complete:在任务完成后,且被从运行时数据(runtime data)中删除前触发。
                delete: 在任务将要被删除之前发生。注意,当任务通过completeTask完成任务时,它也会被执行。
             */
            //获取流程引擎相关服务
            ProcessEngineConfigurationImpl processEngineConfiguration = Context.getProcessEngineConfiguration();
            RepositoryService repositoryService = processEngineConfiguration.getRepositoryService();
            TaskService taskService = processEngineConfiguration.getTaskService();
            
            System.out.println(repositoryService);
            String eventName = delegateTask.getEventName();
            //String[] empLoyees = {"冯小刚经纪人","范冰冰经纪人","冯小刚"};
            //delegateTask.addCandidateUsers(Arrays.asList(empLoyees));//完成多处理人的指定
            //获取流程参数
            //Map<String,Object> map = delegateTask.getVariables();
            System.out.println("任务事件--------------------------"+eventName);
            if ("create".endsWith(eventName)) {
                //
                System.out.println(delegateTask.getAssignee());
                //获取任务ID
                System.out.println(delegateTask.getId());
                //获取任务key
                //delegateTask.getTaskDefinitionKey()
                System.out.println("create=========");
            }else if ("assignment".endsWith(eventName)) {
                System.out.println("assignment========"+delegateTask.getAssignee());
            }else if ("complete".endsWith(eventName)) {
                System.out.println("complete===========");
            }else if ("delete".endsWith(eventName)) {
                System.out.println("delete=============");
            }
            
        }
    
    }

  • 相关阅读:
    关于 JAVA 中使用 Preferences 读写注册表时要注意的地方
    VS2010编译以前版本工程时 ERROR CVT1100:duplicate resource,type:MANIFEST解决办法
    在博客园安家了,同时献上刚汉化的 Code Snippet 插件!
    安装mariadb
    路飞学城部署方法
    配置supervisor工具
    使用uwsgi启动django项目
    nginx访问日志和压测命令
    nginx学习
    虚拟环境之virtualenvwrapper
  • 原文地址:https://www.cnblogs.com/jentary/p/13997897.html
Copyright © 2020-2023  润新知