Flowable监听器

执行监听器

可以在流程执行中发生特定的事件时,执行外部Java代码或计算表达式。需要实现org.flowable.engine.delegate.ExecutionListener接口。可以被捕获的事件有:

1、流程实例的启动和结束。

2、流程执行转移。

3、活动的启动和结束。

4、网关的启动和结束。

5、中间事件的启动和结束。

6、启动事件的结束,和结束事件的启动。

public class MyExecutionListener implements ExecutionListener {

    //流程设计器添加的参数
    private Expression param;


    @Override
    public void notify(DelegateExecution execution) throws FlowableException{
         
    }
}

执行监听器

  • event(事件)(必填):触发任务监听器的任务事件类型。可用的事件有:

    • create(创建):当任务已经创建,并且所有任务参数都已经设置时触发。

    • assignment(指派):当任务已经指派给某人时触发。请注意:当流程执行到达用户任务时,在触发create事件之前,会首先触发assignment事件。这顺序看起来不太自然,但是有实际原因的:当收到create事件时,我们通常希望能看到任务的所有参数,包括办理人。

    • complete(完成):当任务已经完成,从运行时数据中删除前触发。

    • delete(删除):在任务即将被删除前触发。请注意任务由completeTask正常完成时也会触发。

  • class:需要调用的委托类。这个类必须实现org.flowable.engine.delegate.TaskListener接口。

public class MyTaskListener implements TaskListener {
    @Override
    public void notify(DelegateTask delegateTask) {
        System.out.println("MyTaskListener");
    }
}

事件监听器

  • 对事件监听器的唯一要求,是要实现org.flowable.engine.delegate.event.FlowableEventListener接口。下面是一个监听器实现的例子,它将接收的所有事件打印至标准输出,并对作业执行相关的事件特别处理:

  • isFailOnException()方法决定了当事件分发后,onEvent(..)方法抛出异常时的行为。若返回false,忽略异常;若返回true,异常不会被忽略而会被上抛,使当前执行的命令失败。如果事件是API调用(或其他事务操作,例如作业执行)的一部分,事务将被回滚。如果事件监听器中并不是重要的业务操作,建议返回false

    Flowable提供了少量基础实现,以简化常用的事件监听器使用场景。它们可以被用作监听器的示例或基类:

  • org.flowable.engine.delegate.event.BaseEntityEventListener: 事件监听器基类,可用来监听实体(entity)相关事件,特定或所有实体的事件都可以。它隐藏了类型检测,提供了4个需要覆盖的方法:onCreate(..)onUpdate(..)onDelete(..)在实体创建、更新及删除时调用;对所有其他实体相关事件,onEntityEvent(..)会被调用。

  • 支持的事件类型

    下表列出引擎中的所有事件类型。每种类型对应org.flowable.engine.common.api.delegate.event.FlowableEventType中的一个枚举值。

@Component
public class ProcessEndListener implements FlowableEventListener {
    @Override
	public void onEvent(FlowableEvent event) {
		 
	}

	@Override
	public boolean isFailOnException() {
		return false;
	}

	/**
	 * @return true则配置,false在事务内触发
	 */
	@Override
	public boolean isFireOnTransactionLifecycleEvent() {
		return true;
	}

	@Override
	public String getOnTransaction() {
		//事务提交后触发
		return TransactionState.COMMITTED.name();
	}

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值