springboot+flowable第四节(设置监听事件)

springboot+flowable第四节(设置监听事件),第1张

目录
    • 1. 执行监听事件写法
    • 2. 任务监听事件写法
    • 3. 创建流程
    • 4. 事件执行类
    • 5. 启动流程

监听事件分为:执行监听、任务监听。

1. 执行监听事件写法
<flowable:executionListener class="" expression="表达式"  delegateExpression="委托表达式" event="事件">
          <flowable:field name="参数名" stringValue="字符串" expression="表达式" />
flowable:executionListener>


2. 任务监听事件写法
<flowable:taskListener class="" expression="表达式"  delegateExpression="委托表达式" event="事件">
          <flowable:field name="参数名" stringValue="字符串" expression="表达式" />
flowable:taskListener>


3. 创建流程

目的,创建一个(开始—>审核—>结束)流程,并在审核节点设置一个【任务监听】事件。

xml内容:


<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
             xmlns:flowable="http://flowable.org/bpmn"
             targetNamespace="http://www.flowable.org/processdef">

  <process id="process_audit3" name="审核流程">

    <startEvent id="startNode1" name="开始">
      <outgoing>Flow_0ksehsmoutgoing>
    startEvent>

    <endEvent id="Event_08rzeth" name="结束">
      <incoming>Flow_18upiqxincoming>
    endEvent>

    <sequenceFlow id="Flow_0ksehsm" sourceRef="startNode1" targetRef="Activity_0ipmowu" />
    <sequenceFlow id="Flow_18upiqx" sourceRef="Activity_0ipmowu" targetRef="Event_08rzeth" />

    <userTask id="Activity_0ipmowu" name="审核" flowable:assignee="1">
      <extensionElements>
        <flowable:taskListener class="org.flowable.audit.TaskEvent" event="complete">
          <flowable:field name="message" stringValue="执行完成" />
        flowable:taskListener>
      extensionElements>

      <incoming>Flow_1huwgzmincoming>
      <outgoing>Flow_18upiqxoutgoing>
    userTask>

  process>

definitions>

4. 事件执行类

注意xml文件中的任务执行类,需要在项目中相应位置建立。


任务执行类需要实现TaskListener

package org.flowable.audit;

import org.flowable.engine.impl.el.FixedValue;
import org.flowable.task.service.delegate.DelegateTask;
import org.flowable.task.service.delegate.TaskListener;
import org.springframework.stereotype.Component;

@Component
public class TaskEvent implements TaskListener {

    // 名称要与流程定义中的参数名称一致
    private FixedValue message;

    @Override
    public void notify(DelegateTask delegateTask) {
        // 获取监听事件中的参数
        String val = message.getExpressionText();
        System.out.println("获取到的任务执行参数为:" + val);
    }
}

5. 启动流程

启动项目后,启动流程

现在流程到达了审核节点

然后根据taskId审批通过此节点

查看控制台

可以看到审批通过时,执行了监听事件。

完事。

下一节写啥呢 ?

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/720022.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存