# taskExtendJson 与监听器配置 ## 1. taskExtendJson 配置说明 taskExtendJson 控制审批节点的行为,以 JSON 字符串存储在 extensionElements 中: ```xml ``` | 字段 | 类型 | 默认值 | 说明 | |------|------|--------|------| | `sameMode` | int | `0` | 相同处理人模式:0=不跳过,1=跳过,2=草稿节点(首节点自动提交) | | `isSkipAssigneeEmpty` | bool | `false` | 审批人为空时是否自动跳过 | | `isSkipAssigneeOnePersion` | bool | `false` | 只有一人时是否自动跳过(常用于发起人=审批人场景) | | `isSkipApproval` | bool | `false` | 是否跳过审批(自动通过) | | `isAssignedByPreviousNode` | bool | `false` | 是否由上一节点指派审批人 | | `isEmptyAssignedByPreviousNode` | bool | `false` | 上一节点未指派时是否允许空 | | `isSkipApprovedOnCountersignReturn` | bool | `false` | 会签驳回时是否跳过已审批的人 | 使用 taskExtendJson 时,通常需要配合跳过审批监听器: ```xml ``` --- ## 2. 必需的监听器汇总 ### 2.1 流程级监听器(写在 process > extensionElements 中) ```xml ``` ### 2.2 节点级监听器(写在 userTask > extensionElements 中) ```xml ``` ### 2.3 结束节点监听器(按需) ```xml ``` --- ## 3. 系统预置监听器一览(ext_act_listener 表) 系统在 `ext_act_listener` 表中预置了所有可用的监听器,设计器界面从此表加载监听器列表供用户选择。 **listener_type:** 1=执行监听器(executionListener),2=任务监听器(taskListener) **listener_value_type:** `javaClass`=Java类,`expression`=表达式,`delegateExpression`=Spring委托表达式 ### 3.1 执行监听器(type=1,用于流程级/节点级) | 名称 | 事件 | 类型 | 完整类路径 | |------|------|------|-----------| | 平台通用流程结束监听 | end | javaClass | `org.jeecg.modules.extbpm.listener.execution.ProcessEndListener` | | 公文收文分发 | end | javaClass | `org.jeecg.modules.listener.easyoa.ReveicedStartListener` | | 子流程会签开始监听 | start | javaClass | `org.jeecg.modules.extbpm.listener.execution.SubProcessHqStartListener` | | 子流程开始监听 | start | javaClass | `org.jeecg.modules.extbpm.listener.execution.SubProcessStartListener` | | 信号启动流程监听 | start | javaClass | `org.jeecg.modules.extbpm.listener.execution.SignalProcessStartListener` | | 表单设计器生成自动编号 | start | javaClass | `org.jeecg.modules.designform.listener.DesformAutoNumberListener` | | 公文表单监听 | start | javaClass | `org.jeecg.modules.listener.easyoa.OaOfficialdocStartListener` | ### 3.2 任务监听器(type=2,用于 userTask 级) | 名称 | 事件 | 类型 | 完整类路径/表达式 | |------|------|------|-----------------| | 用户审核节点跳过规则监听 | create | javaClass | `org.jeecg.modules.extbpm.listener.task.TaskSkipApprovalListener` | | 首任务节点自动提交监听 | create | javaClass | `org.jeecg.modules.extbpm.listener.task.TaskCreatedAutoSubmitListener` | | 子流程 | create | expression | `${subProcessListener}` | | spring表达式监听 | create | delegateExpression | `${someJavaDelegateBean}` | | 节点监听更新业务数据到流程变量 | complete | javaClass | `org.jeecg.modules.extbpm.listener.task.TaskUpdateFormDataListener` | | 公告审核监听 | complete | javaClass | `org.jeecg.modules.listener.announcement.NoticeReviewEndListener` | | 新闻审核监听 | complete | javaClass | `org.jeecg.modules.listener.easyoa.NewsReviewEndListener` | | 公文发文分发 | complete | javaClass | `org.jeecg.modules.listener.easyoa.DistributeIssuedEndListener` | ### 3.3 常用监听器使用场景 | 监听器 | 使用场景 | 是否必需 | |--------|---------|---------| | `ProcessEndListener` | 所有流程都要挂,流程结束时更新业务状态 | 必需 | | `TaskSkipApprovalListener` | 使用 taskExtendJson 时挂载,实现跳过审批逻辑 | 配合 taskExtendJson 必需 | | `TaskCreatedAutoSubmitListener` | 草稿节点(sameMode=2),首次自动跳过 | 草稿节点必需 | | `TaskUpdateFormDataListener` | 节点完成时将表单数据同步到流程变量 | 按需 | | `SubProcessStartListener` | 子流程启动时的初始化 | 子流程必需 | | `SubProcessHqStartListener` | 子流程会签场景 | 子流程会签必需 | | `DesformAutoNumberListener` | DesForm 表单自动编号 | DesForm 自动编号时需要 | --- ## 4. 源码级监听器完整清单 以下从源码中扫描所有 `implements TaskListener` 和 `implements ExecutionListener` 的实现类。 ### 4.1 TaskListener 实现类(11个) #### 平台核心(jeecg-boot-module-bpm-flowable) | 完整类路径 | 事件 | 说明 | |-----------|------|------| | `org.jeecg.modules.extbpm.listener.task.TaskSkipApprovalListener` | create | 节点审批自动跳过(发起人=审批人跳过、审批人为空跳过、已审批免二次等) | | `org.jeecg.modules.extbpm.listener.task.TaskUpdateFormDataListener` | create | 同步表单字段到流程变量,更新业务标题,触发简流事件 | | `org.jeecg.modules.extbpm.listener.task.TaskCreatedAutoSubmitListener` | create | 草稿节点首次自动提交(sameMode=2),自动设置发起人并完成任务 | | `org.jeecg.modules.extbpm.listener.task.SubProcessListener` | create | 子流程启动时传递主流程标题和业务号 | #### 简流(jeecg-boot-module-mindesflow-flowable) | 完整类路径 | 事件 | 说明 | |-----------|------|------| | `org.jeecg.modules.listener.easyoa.TaskApprovalListener` | create | 简流版审批跳过监听 | | `org.jeecg.modules.extbpm.process.adapter.listener.ApproveResultBranchListener` | create | 审批结果分支标识变量设置 | | `org.jeecg.modules.extbpm.process.adapter.listener.BeforeEditListener` | create | 填写节点自定义表单数据ID设置 | #### 业务(jeecg-boot-module-joa-flowable) | 完整类路径 | 事件 | 说明 | |-----------|------|------| | `org.jeecg.modules.testListenerExpression.TestTaskListener` | create/assign/complete/delete | 测试用监听器,记录各事件日志 | | `org.jeecg.modules.listener.announcement.NoticeReviewEndListener` | complete | 公告审核完成自动发布 | | `org.jeecg.modules.listener.easyoa.DistributeIssuedEndListener` | complete | 公文发文分发,按抄送部门创建分发记录 | | `org.jeecg.modules.listener.easyoa.NewsReviewEndListener` | complete | 新闻审核完成自动发布 | ### 4.2 ExecutionListener 实现类(12个) #### 平台核心(jeecg-boot-module-bpm-flowable) | 完整类路径 | 事件 | 说明 | |-----------|------|------| | `org.jeecg.modules.extbpm.listener.execution.ProcessEndListener` | end | 流程结束更新状态、处理表单数据、清Redis缓存(**必需**) | | `org.jeecg.modules.extbpm.listener.execution.SignalProcessStartListener` | start | 信号启动流程初始化变量、获取表单数据、设置业务key | | `org.jeecg.modules.extbpm.listener.execution.SubProcessStartListener` | start | 子流程启动传递主流程标题、表单key、数据ID | | `org.jeecg.modules.extbpm.listener.execution.SubProcessHqStartListener` | start | 会签子流程启动传递主流程变量、表单URL和业务数据 | #### 简流(jeecg-boot-module-mindesflow-flowable) | 完整类路径 | 事件 | 说明 | |-----------|------|------| | `org.jeecg.modules.minides.listener.ProcessEndRemoveRedisListener` | end | 简流结束清Redis缓存 | | `org.jeecg.modules.minides.listener.MiniSubProcessStartListener` | start | 简流子流程启动初始化,传递流程变量 | | `org.jeecg.modules.extbpm.process.adapter.delegate.MiniCallActivityListener` | start | 简流调用活动参数传递,处理系统变量和工作表映射 | #### 业务(jeecg-boot-module-joa-flowable) | 完整类路径 | 事件 | 说明 | |-----------|------|------| | `org.jeecg.modules.designform.listener.DesformAutoNumberListener` | start | 表单设计器自动编号 | | `org.jeecg.modules.testListenerExpression.TestExecutionListener` | start/end | 测试用执行监听器 | | `org.jeecg.modules.listener.easyoa.ReveicedStartListener` | end | 公文收文分发,根据部门信息分发任务 | | `org.jeecg.modules.listener.easyoa.OaOfficialdocStartListener` | start | 公文表单监听,校验各节点意见字段 | | `org.jeecg.modules.extbpm.listener.execution.ProcessEndListener`(JOA副本) | end | OA模块流程结束处理(与平台核心同类名,不同模块) |