activiti实现超时监听业务代码添加

监听类extend ExecutionListener 或者extend TaskListener

每次上个节点,或者连线的时候总是不能获取到下个节点任务的生成,就算自己手动提交也不能正确的获取。这样的话就不能实现自己后续业务的开发。监听前面的不行,  那就只能监听目标节点的create事件;(这里说明下为什么只能监听create事件,不能监听assignee事件。因为有些任务节点没有配置代理人(assignee),就不会触发assignee事件。);在触发create事件的时候判断是否任务超时,是的话就执行notify中的后续代码, 不是就安正常业务代码走就可以。

下面是部分代码的实现(继承的是taskListener):

@Override public void notify(DelegateTask delegateTask)
    {
        logger.info("............................."+ delegateTask.getId());
        if (delegateTask.getId() != null && !"".equals(delegateTask.getId()))
        {
//            logger.info(" 进入............................."+ delegateTask.getId());
        //上个节点任务
            Task task = this.taskService.createTaskQuery().processInstanceId(delegateTask.getProcessInstanceId())
                    .singleResult();
//            logger.info(" 进入............................."+ task.getId());
            Long timeOut = this.actRuJobService.queryTimeOut(task.getProcessInstanceId(), task.getExecutionId(), new Date());
//            logger.info(" 进入超时数量............................."+ timeOut+".实例.."+task.getProcessInstanceId()+"....执行."+task.getExecutionId()+"...时间."+new Date());
            if (null != timeOut && timeOut > 0)
            {
         //目标节点任务
                String taskId = delegateTask.getId();
                //修改历史任务扩展表(已完成)
                this.modifyHitaskExt(delegateTask);
                //
                taskExtService.deleteTaskById(task.getId());
                //添加历史数据
                this.addHiTaskExt(delegateTask);
                //添加当前任务数据
                this.addTaskExt(delegateTask);

            }

        }
    }


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页