From de012b69fb209a0464215c881677dbe7e255453e Mon Sep 17 00:00:00 2001
From: wangli <274027703@qq.com>
Date: Fri, 5 Sep 2025 11:25:22 +0800
Subject: [PATCH 01/10] =?UTF-8?q?fix=20-=20=E8=B0=83=E6=95=B4=20xxljob?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 6 ++++
workflow-engine-server/pom.xml | 4 +++
.../server/xxljob/NodeAlterJobHandler.java | 30 +++++++++++++++++++
3 files changed, 40 insertions(+)
create mode 100644 workflow-engine-server/src/main/java/cn/axzo/workflow/server/xxljob/NodeAlterJobHandler.java
diff --git a/pom.xml b/pom.xml
index b9cc62063..fe575363e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -32,6 +32,7 @@
2.0.0
2.5.0
0.0.1-SNAPSHOT
+ 2.0.1-SNAPSHOT
@@ -179,6 +180,11 @@
doc-api
${axzo-dependencies.version}
+
+ cn.axzo.infra
+ adapter
+ ${adapter.version}
+
diff --git a/workflow-engine-server/pom.xml b/workflow-engine-server/pom.xml
index 10cae3ff8..dc7817d5c 100644
--- a/workflow-engine-server/pom.xml
+++ b/workflow-engine-server/pom.xml
@@ -154,6 +154,10 @@
cn.axzo.nanopart
doc-api
+
+ cn.axzo.infra
+ adapter
+
diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/xxljob/NodeAlterJobHandler.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/xxljob/NodeAlterJobHandler.java
new file mode 100644
index 000000000..836e09668
--- /dev/null
+++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/xxljob/NodeAlterJobHandler.java
@@ -0,0 +1,30 @@
+package cn.axzo.workflow.server.xxljob;
+
+import cn.axzo.infra.xxl220to250.IJobHandler;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+/**
+ * TODO
+ *
+ * @author wangli
+ * @since 2025-09-05 11:19
+ */
+@Component
+@RequiredArgsConstructor
+@Slf4j
+public class NodeAlterJobHandler extends IJobHandler {
+ @XxlJob("nodeAlterJobHandler")
+ @Override
+ public ReturnT execute(String param) throws Exception {
+// log.info();
+ XxlJobHelper.log("request param: {}", param);
+
+
+ return null;
+ }
+}
From f4168959e75f3bf7b9469fe3b76c0223add7695c Mon Sep 17 00:00:00 2001
From: wangli <274027703@qq.com>
Date: Fri, 5 Sep 2025 17:10:23 +0800
Subject: [PATCH 02/10] =?UTF-8?q?fix=20-=20=E5=A2=9E=E5=8A=A0=E4=B8=80?=
=?UTF-8?q?=E5=BC=A0=E6=96=B0=E8=A1=A8=E6=9D=A5=E6=94=AF=E6=92=91=E4=B8=9A?=
=?UTF-8?q?=E5=8A=A1=E8=8A=82=E7=82=B9=E5=91=8A=E8=AD=A6=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../model/dto/TermNodeAddTimerJobDTO.java | 2 +
.../core/conf/FlowableConfiguration.java | 3 +-
.../core/engine/cmd/CustomAddTimerJobCmd.java | 34 ++----
...BpmnActivityEventListener_lo_Listener.java | 2 +
.../repository/entity/ExtAxNodeAlterJob.java | 48 ++++++++
.../mapper/ExtAxNodeAlterJobMapper.java | 22 ++++
.../service/ExtAxNodeAlterJobService.java | 17 +++
.../impl/ExtAxNodeAlterJobServiceImpl.java | 31 ++++++
.../server/controller/web/JobHttpHandler.java | 28 +++++
.../server/xxljob/NodeAlterJobHandler.java | 103 +++++++++++++++++-
10 files changed, 261 insertions(+), 29 deletions(-)
create mode 100644 workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/entity/ExtAxNodeAlterJob.java
create mode 100644 workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/mapper/ExtAxNodeAlterJobMapper.java
create mode 100644 workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/ExtAxNodeAlterJobService.java
create mode 100644 workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/ExtAxNodeAlterJobServiceImpl.java
create mode 100644 workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/JobHttpHandler.java
diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/dto/TermNodeAddTimerJobDTO.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/dto/TermNodeAddTimerJobDTO.java
index c5e955d78..dd1790730 100644
--- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/dto/TermNodeAddTimerJobDTO.java
+++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/dto/TermNodeAddTimerJobDTO.java
@@ -21,7 +21,9 @@ import java.io.Serializable;
@Builder
public class TermNodeAddTimerJobDTO implements Serializable {
private String processInstanceId;
+ private String processDefinitionId;
private String activityId;
+ private String activityName;
private Integer delayTime;
private String timeUnit;
}
diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/conf/FlowableConfiguration.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/conf/FlowableConfiguration.java
index b65829847..565d0dd4a 100644
--- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/conf/FlowableConfiguration.java
+++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/conf/FlowableConfiguration.java
@@ -20,7 +20,6 @@ import cn.axzo.workflow.core.engine.job.AsyncExtTaskInstJobHandler;
import cn.axzo.workflow.core.engine.job.AsyncRejectTaskJobHandler;
import cn.axzo.workflow.core.engine.job.AsyncRemindTaskJobHandler;
import cn.axzo.workflow.core.engine.job.AsyncResetApproversUserTaskJobHandler;
-import cn.axzo.workflow.core.engine.job.AsyncTermNodeAlterJobHandler;
import cn.axzo.workflow.core.engine.job.AsyncTransferUserTaskJobHandler;
import cn.axzo.workflow.core.engine.job.NextActivityConfigCheckJobHandler;
import cn.axzo.workflow.core.engine.job.exception.handle.CustomAsyncJobLogClearTraceExceptionHandler;
@@ -114,7 +113,7 @@ public class FlowableConfiguration {
configuration.addCustomJobHandler(new AsyncExtTaskInstJobHandler(extAxHiTaskInstService));
configuration.addCustomJobHandler(new AsyncRejectTaskJobHandler(extAxHiTaskInstService));
configuration.addCustomJobHandler(new AsyncTransferUserTaskJobHandler());
- configuration.addCustomJobHandler(new AsyncTermNodeAlterJobHandler(refreshProperties));
+// configuration.addCustomJobHandler(new AsyncTermNodeAlterJobHandler(refreshProperties));
configuration.addCustomJobHandler(new AsyncCountersignUserTaskJobHandler(extAxHiTaskInstService));
configuration.addCustomJobHandler(new AsyncActivityLeaveJobHandler(bpmnProcessActivityService));
configuration.addCustomJobHandler(new AsyncActivityCallbackJobHandler());
diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomAddTimerJobCmd.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomAddTimerJobCmd.java
index 8e44f1ba2..4a73e1529 100644
--- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomAddTimerJobCmd.java
+++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomAddTimerJobCmd.java
@@ -1,16 +1,13 @@
package cn.axzo.workflow.core.engine.cmd;
import cn.axzo.workflow.common.model.dto.TermNodeAddTimerJobDTO;
-import cn.axzo.workflow.core.engine.job.AsyncTermNodeAlterJobHandler;
+import cn.axzo.workflow.core.common.utils.SpringContextUtils;
+import cn.axzo.workflow.core.repository.entity.ExtAxNodeAlterJob;
+import cn.axzo.workflow.core.service.ExtAxNodeAlterJobService;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.flowable.common.engine.impl.interceptor.CommandContext;
-import org.flowable.engine.ManagementService;
-import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl;
-import org.flowable.engine.impl.util.CommandContextUtil;
-import org.flowable.job.service.TimerJobService;
-import org.flowable.job.service.impl.persistence.entity.TimerJobEntity;
import java.io.Serializable;
import java.util.Date;
@@ -37,10 +34,7 @@ public class CustomAddTimerJobCmd extends AbstractCommand implements Seria
@Override
public Void executeInternal(CommandContext commandContext) {
log.info("CustomAddTimerJobCmd start. instanceId: {}, activityId: {}, delayTime: {}, timeUnit: {}", dto.getProcessInstanceId(), dto.getActivityId(), dto.getDelayTime(), dto.getTimeUnit());
- ProcessEngineConfigurationImpl processEngineConfiguration =
- CommandContextUtil.getProcessEngineConfiguration(commandContext);
- ManagementService managementService = processEngineConfiguration.getManagementService();
Date alterTime;
switch (dto.getTimeUnit()) {
case "M":
@@ -54,20 +48,14 @@ public class CustomAddTimerJobCmd extends AbstractCommand implements Seria
break;
}
- managementService.executeCommand(context -> {
- TimerJobService timerJobService = CommandContextUtil.getTimerJobService();
- TimerJobEntity timerJobEntity = timerJobService.createTimerJob();
- timerJobEntity.setJobType("timer");
- timerJobEntity.setJobHandlerType(AsyncTermNodeAlterJobHandler.TYPE); // 这里填写你自定义的 JobHandler 类型
- timerJobEntity.setProcessInstanceId(dto.getProcessInstanceId());
- timerJobEntity.setExecutionId(null);
- timerJobEntity.setDuedate(alterTime); // 立即执行
- timerJobEntity.setRepeat(null); // 不重复
- timerJobEntity.setRetries(1);
- timerJobEntity.setJobHandlerConfiguration(dto.getActivityId()); // 可选,传递参数
- timerJobService.scheduleTimerJob(timerJobEntity);
- return null;
- });
+ ExtAxNodeAlterJobService service = SpringContextUtils.getBean(ExtAxNodeAlterJobService.class);
+ ExtAxNodeAlterJob job = new ExtAxNodeAlterJob();
+ job.setProcessInstanceId(dto.getProcessInstanceId());
+ job.setProcessDefinitionId(dto.getProcessDefinitionId());
+ job.setActivityId(dto.getActivityId());
+ job.setActivityName(dto.getActivityName());
+ job.setAlterTime(alterTime);
+ service.save(job);
return null;
}
diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/listener/impl/InternalBpmnActivityEventListener_lo_Listener.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/listener/impl/InternalBpmnActivityEventListener_lo_Listener.java
index cde40df9d..346e7198a 100644
--- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/listener/impl/InternalBpmnActivityEventListener_lo_Listener.java
+++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/listener/impl/InternalBpmnActivityEventListener_lo_Listener.java
@@ -89,7 +89,9 @@ public class InternalBpmnActivityEventListener_lo_Listener extends AbstractBpmnE
TermNodeAddTimerJobDTO addTimerJobDTO = new TermNodeAddTimerJobDTO();
addTimerJobDTO.setProcessInstanceId(execution.getProcessInstanceId());
+ addTimerJobDTO.setProcessDefinitionId(execution.getProcessDefinitionId());
addTimerJobDTO.setActivityId(execution.getCurrentActivityId());
+ addTimerJobDTO.setActivityName(flowElement.getName());
addTimerJobDTO.setDelayTime(refreshProperties.getAlterInterval());
addTimerJobDTO.setTimeUnit(timeUnit);
diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/entity/ExtAxNodeAlterJob.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/entity/ExtAxNodeAlterJob.java
new file mode 100644
index 000000000..ef6ec0c7f
--- /dev/null
+++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/entity/ExtAxNodeAlterJob.java
@@ -0,0 +1,48 @@
+package cn.axzo.workflow.core.repository.entity;
+
+import cn.axzo.framework.data.mybatisplus.model.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+import java.util.Date;
+
+/**
+ * 业务节点告警任务表
+ *
+ * @author wangli
+ * @since 2025-09-05 13:43
+ */
+@EqualsAndHashCode(callSuper = true)
+@TableName(value = "ext_ax_node_alter_job", autoResultMap = true)
+@Data
+@ToString(callSuper = true)
+public class ExtAxNodeAlterJob extends BaseEntity {
+ private static final long serialVersionUID = 461756492937079852L;
+
+ /**
+ * 流程实例 ID
+ */
+ private String processInstanceId;
+ /**
+ * 流程定义 ID
+ */
+ private String processDefinitionId;
+ /**
+ * 活动节点 ID
+ */
+ private String activityId;
+ /**
+ * 活动节点名称
+ */
+ private String activityName;
+ /**
+ * 告警事件
+ */
+ private Date alterTime;
+ /**
+ * 异常信息
+ */
+ private String exception;
+}
diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/mapper/ExtAxNodeAlterJobMapper.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/mapper/ExtAxNodeAlterJobMapper.java
new file mode 100644
index 000000000..710206ab6
--- /dev/null
+++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/mapper/ExtAxNodeAlterJobMapper.java
@@ -0,0 +1,22 @@
+package cn.axzo.workflow.core.repository.mapper;
+
+import cn.axzo.workflow.core.repository.entity.ExtAxNodeAlterJob;
+import org.apache.ibatis.annotations.Delete;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface ExtAxNodeAlterJobMapper extends BaseMapperX {
+
+ @Delete({
+ ""
+ })
+ int physicsDeleteBatchIds(@Param("ids") List ids);
+}
diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/ExtAxNodeAlterJobService.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/ExtAxNodeAlterJobService.java
new file mode 100644
index 000000000..6ac3218f6
--- /dev/null
+++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/ExtAxNodeAlterJobService.java
@@ -0,0 +1,17 @@
+package cn.axzo.workflow.core.service;
+
+import cn.axzo.workflow.core.repository.entity.ExtAxNodeAlterJob;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * 业务节点告警表操作服务
+ *
+ * @author wangli
+ * @since 2024/4/3 10:40
+ */
+public interface ExtAxNodeAlterJobService extends IService {
+
+ boolean deleteByIds(List ids);
+}
diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/ExtAxNodeAlterJobServiceImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/ExtAxNodeAlterJobServiceImpl.java
new file mode 100644
index 000000000..041aea474
--- /dev/null
+++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/ExtAxNodeAlterJobServiceImpl.java
@@ -0,0 +1,31 @@
+package cn.axzo.workflow.core.service.impl;
+
+import cn.axzo.workflow.core.repository.entity.ExtAxNodeAlterJob;
+import cn.axzo.workflow.core.repository.mapper.ExtAxNodeAlterJobMapper;
+import cn.axzo.workflow.core.service.ExtAxNodeAlterJobService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * 业务节点告警表操作服务实现类
+ *
+ * @author wangli
+ * @since 2025-09-05 13:50
+ */
+@Service
+@Slf4j
+public class ExtAxNodeAlterJobServiceImpl extends ServiceImpl implements ExtAxNodeAlterJobService {
+ @Resource
+ private ExtAxNodeAlterJobMapper extAxNodeAlterJobMapper;
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public boolean deleteByIds(List ids) {
+ return extAxNodeAlterJobMapper.physicsDeleteBatchIds(ids) > 0;
+ }
+}
diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/JobHttpHandler.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/JobHttpHandler.java
new file mode 100644
index 000000000..f9a66bf17
--- /dev/null
+++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/JobHttpHandler.java
@@ -0,0 +1,28 @@
+package cn.axzo.workflow.server.controller.web;
+
+import com.alibaba.fastjson.JSONObject;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.executor.XxlJobExecutor;
+import com.xxl.job.core.handler.IJobHandler;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author yanglin
+ */
+@RestController
+public class JobHttpHandler {
+
+ @PostMapping("/jobs/{jobName}")
+ ReturnT exec(@PathVariable String jobName,
+ @RequestBody(required = false) JSONObject paramObj) throws Exception {
+ IJobHandler jobHandler = XxlJobExecutor.loadJobHandler(jobName);
+ if (jobHandler == null)
+ return new ReturnT<>(ReturnT.FAIL_CODE, String.format("找不到job: %s", jobName));
+ jobHandler.execute();
+ return ReturnT.SUCCESS;
+ }
+
+}
\ No newline at end of file
diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/xxljob/NodeAlterJobHandler.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/xxljob/NodeAlterJobHandler.java
index 836e09668..eb86d63c0 100644
--- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/xxljob/NodeAlterJobHandler.java
+++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/xxljob/NodeAlterJobHandler.java
@@ -1,15 +1,43 @@
package cn.axzo.workflow.server.xxljob;
+import cn.axzo.basics.common.util.NumberUtil;
+import cn.axzo.framework.jackson.utility.JSON;
import cn.axzo.infra.xxl220to250.IJobHandler;
+import cn.axzo.workflow.common.model.dto.AlterDTO;
+import cn.axzo.workflow.common.model.response.category.CategoryItemVO;
+import cn.axzo.workflow.core.common.utils.SpringContextUtils;
+import cn.axzo.workflow.core.conf.SupportRefreshProperties;
+import cn.axzo.workflow.core.listener.Alter;
+import cn.axzo.workflow.core.repository.entity.ExtAxNodeAlterJob;
+import cn.axzo.workflow.core.service.CategoryService;
+import cn.axzo.workflow.core.service.ExtAxNodeAlterJobService;
+import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.flowable.engine.RuntimeService;
+import org.flowable.engine.TaskService;
+import org.flowable.engine.runtime.ProcessInstance;
+import org.flowable.spring.SpringProcessEngineConfiguration;
+import org.flowable.task.api.Task;
import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+import static cn.axzo.workflow.common.constant.BpmnConstants.BPM_MODEL_CATEGORY;
/**
- * TODO
+ * 调度业务节点告警定时任务
*
* @author wangli
* @since 2025-09-05 11:19
@@ -18,13 +46,80 @@ import org.springframework.stereotype.Component;
@RequiredArgsConstructor
@Slf4j
public class NodeAlterJobHandler extends IJobHandler {
+
+ private final ExtAxNodeAlterJobService extAxNodeAlterJobService;
+ private final CategoryService categoryService;
+ private final SpringProcessEngineConfiguration processEngineConfiguration;
+ private final SupportRefreshProperties refreshProperties;
+
@XxlJob("nodeAlterJobHandler")
@Override
public ReturnT execute(String param) throws Exception {
-// log.info();
- XxlJobHelper.log("request param: {}", param);
+ List jobs = extAxNodeAlterJobService.list(new LambdaQueryWrapper()
+ .le(ExtAxNodeAlterJob::getAlterTime, new Date()));
+ if (CollectionUtils.isEmpty(jobs)) {
+ XxlJobHelper.log("没有需要处理的业务节点告警任务");
+ return ReturnT.SUCCESS;
+ }
+ List executedJobs = new ArrayList<>();
+ RuntimeService runtimeService = processEngineConfiguration.getRuntimeService();
+ TaskService taskService = processEngineConfiguration.getTaskService();
+ jobs.forEach(e -> {
+ XxlJobHelper.log("start execution of job: {}", JSON.toJSONString(e));
+ ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(e.getProcessInstanceId()).singleResult();
+ if (Objects.isNull(processInstance)) {
+ executedJobs.add(e);
+ return;
+ }
+ List tasks = taskService.createTaskQuery()
+ .processInstanceId(e.getProcessInstanceId())
+ .taskDefinitionKey(e.getActivityId())
+ .active().list();
- return null;
+ StringBuilder sb = new StringBuilder();
+ tasks.forEach(t -> {
+ sb.append("id:").append(e.getId()).append(", assignee: ").append(t.getAssignee());
+ });
+ XxlJobHelper.log("tasks size:{}, info: {}", tasks.size(), com.alibaba.fastjson.JSON.toJSONString(sb));
+ if (CollectionUtils.isEmpty(tasks) || tasks.size() > 1 || hasAssignee(tasks.get(0).getAssignee())) {
+ executedJobs.add(e);
+ return;
+ }
+
+ Optional category = categoryService.get(BPM_MODEL_CATEGORY, processInstance.getProcessDefinitionKey());
+
+// sendAlter(processInstance, category, e, tasks.get(0));
+
+ executedJobs.add(e);
+ XxlJobHelper.log("end execution of job: {}", JSON.toJSONString(e));
+ });
+
+ extAxNodeAlterJobService.deleteByIds(executedJobs.stream().map(ExtAxNodeAlterJob::getId).collect(Collectors.toList()));
+ return ReturnT.SUCCESS;
+ }
+
+ private void sendAlter(ProcessInstance processInstance, Optional category, ExtAxNodeAlterJob job, Task task) {
+ // 发送告警对象
+ Alter alter = SpringContextUtils.getBean(Alter.class);
+ AlterDTO alterDTO = new AlterDTO();
+ alterDTO.setProcessDefinitionKey(processInstance.getProcessDefinitionKey());
+ alterDTO.setProcessDefinitionName(category.orElse(new CategoryItemVO()).getLabel());
+ alterDTO.setProcessInstanceId(job.getProcessInstanceId());
+ alterDTO.setActivityId(job.getActivityId());
+ alterDTO.setTaskId(task.getId());
+ alterDTO.setStartTime(task.getCreateTime());
+ alterDTO.setPrettyStartTime(DateUtil.formatDateTime(task.getCreateTime()));
+ if (Boolean.TRUE.equals(refreshProperties.getAlterSendDingTalk())) {
+ alter.invoke(alterDTO);
+ }
+ }
+
+ private Boolean hasAssignee(String assignee) {
+ if (!StringUtils.hasText(assignee)) {
+ return false;
+ }
+ String[] split = assignee.split("\\|");
+ return split.length == 2 && NumberUtil.isPositiveNumber(Long.valueOf(split[1]));
}
}
From ffbf2709486a438c7ae5949b655ba968121b5dcf Mon Sep 17 00:00:00 2001
From: wangli <274027703@qq.com>
Date: Fri, 5 Sep 2025 17:22:12 +0800
Subject: [PATCH 03/10] =?UTF-8?q?fix=20-=20=E5=A2=9E=E5=8A=A0=E4=B8=80?=
=?UTF-8?q?=E5=BC=A0=E6=96=B0=E8=A1=A8=E6=9D=A5=E6=94=AF=E6=92=91=E4=B8=9A?=
=?UTF-8?q?=E5=8A=A1=E8=8A=82=E7=82=B9=E5=91=8A=E8=AD=A6=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../workflow/core/engine/cmd/CustomActivityTriggerCmd.java | 4 ----
1 file changed, 4 deletions(-)
diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomActivityTriggerCmd.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomActivityTriggerCmd.java
index 2a930c561..3eb2e4b14 100644
--- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomActivityTriggerCmd.java
+++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomActivityTriggerCmd.java
@@ -12,7 +12,6 @@ import org.flowable.common.engine.impl.interceptor.CommandContext;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl;
import org.flowable.engine.impl.util.CommandContextUtil;
-import org.flowable.job.service.TimerJobService;
import org.flowable.engine.impl.util.ProcessDefinitionUtil;
import org.flowable.task.service.impl.persistence.entity.TaskEntity;
import org.slf4j.Logger;
@@ -66,9 +65,6 @@ public class CustomActivityTriggerCmd extends AbstractCommand implements S
addComment(commandContext, task, COMMENT_TYPE_OPERATION_DESC, "已同意");
RuntimeService runtimeService = processEngineConfiguration.getRuntimeService();
- // 告警节点生产的定时任务需要删除,否则会因为外键约束导致触发功能会重试,并抛出触发节点不存在的问题
- TimerJobService timerJobService = CommandContextUtil.getTimerJobService();
- timerJobService.findTimerJobsByProcessInstanceId(task.getProcessInstanceId()).forEach(timerJobService::deleteTimerJob);
runtimeService.trigger(dto.getTriggerId());
return null;
}
From 972557b32c7c17204561dbb8a9f156c9046bcd69 Mon Sep 17 00:00:00 2001
From: wangli <274027703@qq.com>
Date: Fri, 5 Sep 2025 17:51:37 +0800
Subject: [PATCH 04/10] =?UTF-8?q?fix=20-=20=E6=B7=BB=E5=8A=A0=E8=8A=82?=
=?UTF-8?q?=E7=82=B9=E5=91=8A=E8=AD=A6=E9=80=BB=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../workflow/core/conf/SupportRefreshProperties.java | 10 ++++++++++
.../InternalBpmnActivityEventListener_lo_Listener.java | 8 +++++++-
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/conf/SupportRefreshProperties.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/conf/SupportRefreshProperties.java
index cfac43c61..e7b9974ef 100644
--- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/conf/SupportRefreshProperties.java
+++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/conf/SupportRefreshProperties.java
@@ -41,6 +41,16 @@ public class SupportRefreshProperties {
@Value(value = "${workflow.alter.enable:false}")
private Boolean alterEnable;
+ /**
+ * 是否全量业务 ID 都开启告警功能
+ */
+ @Value(value = "${workflow.alter.allDefinitionKey:false}")
+ private Boolean alterAllDefinitionKey;
+ /**
+ * 需要开启告警功能的业务 ID 列表
+ */
+ @Value(value = "${workflow.alter.definitionKeys:}")
+ private List alterDefinitionKeys;
/**
* 节点卡住多久才告警,单位分钟
*/
diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/listener/impl/InternalBpmnActivityEventListener_lo_Listener.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/listener/impl/InternalBpmnActivityEventListener_lo_Listener.java
index 346e7198a..77ce5a30d 100644
--- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/listener/impl/InternalBpmnActivityEventListener_lo_Listener.java
+++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/listener/impl/InternalBpmnActivityEventListener_lo_Listener.java
@@ -11,6 +11,7 @@ import cn.axzo.workflow.core.listener.AbstractBpmnEventListener;
import cn.axzo.workflow.core.listener.BpmnActivityEventListener;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.ListUtils;
import org.flowable.bpmn.model.BpmnModel;
import org.flowable.bpmn.model.FlowElement;
import org.flowable.common.engine.impl.cfg.TransactionState;
@@ -60,11 +61,16 @@ public class InternalBpmnActivityEventListener_lo_Listener extends AbstractBpmnE
if (!Boolean.TRUE.equals(refreshProperties.getAlterEnable())) {
return;
}
+ BpmnModel bpmnModel = ProcessDefinitionUtil.getBpmnModel(execution.getProcessDefinitionId());
+ if (!refreshProperties.getAlterAllDefinitionKey()) {
+ if (!ListUtils.emptyIfNull(refreshProperties.getAlterDefinitionKeys()).contains(bpmnModel.getMainProcess().getId())) {
+ return;
+ }
+ }
ProcessEngineConfigurationImpl processEngineConfiguration = CommandContextUtil.getProcessEngineConfiguration();
RuntimeService runtimeService = processEngineConfiguration.getRuntimeService();
TermNodePausingDTO dto = new TermNodePausingDTO(execution.getProcessInstanceId(), execution.getCurrentActivityId(), 0);
runtimeService.setVariable(execution.getProcessInstanceId(), BIZ_NODE_ALTER + execution.getCurrentActivityId(), dto);
- BpmnModel bpmnModel = ProcessDefinitionUtil.getBpmnModel(execution.getProcessDefinitionId());
FlowElement flowElement = bpmnModel.getFlowElement(execution.getCurrentActivityId());
BpmnMetaParserHelper.getNodeType(flowElement).ifPresent(e -> {
if (Objects.equals(BpmnFlowNodeType.NODE_BUSINESS, e)) {
From 7e5a140ed40568ba0ca1e0643d6aab3e0c1eaaea Mon Sep 17 00:00:00 2001
From: wangli
Date: Sat, 6 Sep 2025 11:17:54 +0800
Subject: [PATCH 05/10] =?UTF-8?q?fix=20-=20=E8=B0=83=E6=95=B4=E8=AE=BE?=
=?UTF-8?q?=E7=BD=AE=E5=AE=A1=E6=89=B9=E4=BA=BA=E7=9A=84=E6=A0=A1=E9=AA=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../core/engine/cmd/CustomBizSpecifyAssigneeToTaskCmd.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomBizSpecifyAssigneeToTaskCmd.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomBizSpecifyAssigneeToTaskCmd.java
index 4446489b9..112ea35f6 100644
--- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomBizSpecifyAssigneeToTaskCmd.java
+++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomBizSpecifyAssigneeToTaskCmd.java
@@ -89,12 +89,13 @@ public class CustomBizSpecifyAssigneeToTaskCmd extends AbstractCommand
* @param assigners
*/
public static void validate(RuntimeService runtimeService, String executionId, Task task, List assigners) {
+ validTask(task, executionId);
+
BpmnModel bpmnModel = ProcessDefinitionUtil.getBpmnModel(task.getProcessDefinitionId());
boolean present = assigners.stream().anyMatch(assigner -> !StringUtils.hasText(assigner.getNodeId()));
if (present && getCategoryVersion(bpmnModel.getMainProcess()).orElse(0) > 0) {
throw new WorkflowEngineException(ASSIGNEE_NODE_ID_NOT_EXISTS, "审批人");
}
- validTask(task, executionId);
//校验审批人数量是否超过限制
validTaskAssignerCount(runtimeService, (TaskEntity) task, assigners);
}
From f566fb0009b19caa5c725d1211d31c78c05ddeea Mon Sep 17 00:00:00 2001
From: wangli
Date: Sat, 6 Sep 2025 11:31:06 +0800
Subject: [PATCH 06/10] =?UTF-8?q?fix=20-=20=E8=B0=83=E6=95=B4=E8=AE=BE?=
=?UTF-8?q?=E7=BD=AE=E5=9B=A0=E6=95=B0=E6=8D=AE=E5=AD=97=E6=AE=B5=E4=BF=AE?=
=?UTF-8?q?=E6=94=B9=E4=B8=BA=E4=B8=8D=E8=83=BD=E4=B8=BA=E7=A9=BA=E5=90=8E?=
=?UTF-8?q?=E5=BC=95=E8=B5=B7=E7=9A=84=E5=BC=82=E5=B8=B8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../cn/axzo/workflow/core/engine/cmd/CustomAddTimerJobCmd.java | 1 +
.../cn/axzo/workflow/server/xxljob/NodeAlterJobHandler.java | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomAddTimerJobCmd.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomAddTimerJobCmd.java
index 4a73e1529..08c18a822 100644
--- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomAddTimerJobCmd.java
+++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomAddTimerJobCmd.java
@@ -55,6 +55,7 @@ public class CustomAddTimerJobCmd extends AbstractCommand implements Seria
job.setActivityId(dto.getActivityId());
job.setActivityName(dto.getActivityName());
job.setAlterTime(alterTime);
+ job.setException("");
service.save(job);
return null;
diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/xxljob/NodeAlterJobHandler.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/xxljob/NodeAlterJobHandler.java
index eb86d63c0..f3c95a685 100644
--- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/xxljob/NodeAlterJobHandler.java
+++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/xxljob/NodeAlterJobHandler.java
@@ -89,7 +89,7 @@ public class NodeAlterJobHandler extends IJobHandler {
Optional category = categoryService.get(BPM_MODEL_CATEGORY, processInstance.getProcessDefinitionKey());
-// sendAlter(processInstance, category, e, tasks.get(0));
+ sendAlter(processInstance, category, e, tasks.get(0));
executedJobs.add(e);
XxlJobHelper.log("end execution of job: {}", JSON.toJSONString(e));
From 7c60c3c179d9e3e186cf04c16a4e8c750d124d68 Mon Sep 17 00:00:00 2001
From: wangli <274027703@qq.com>
Date: Mon, 8 Sep 2025 11:28:48 +0800
Subject: [PATCH 07/10] =?UTF-8?q?fix=20-=20=E6=B7=BB=E5=8A=A0=E8=8A=82?=
=?UTF-8?q?=E7=82=B9=E5=91=8A=E8=AD=A6=E9=80=BB=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../cn/axzo/workflow/core/engine/cmd/CustomAddTimerJobCmd.java | 2 +-
.../workflow/server/common/config/XxlJobConfiguration.java | 3 +--
2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomAddTimerJobCmd.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomAddTimerJobCmd.java
index 08c18a822..99edf3998 100644
--- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomAddTimerJobCmd.java
+++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomAddTimerJobCmd.java
@@ -38,7 +38,7 @@ public class CustomAddTimerJobCmd extends AbstractCommand implements Seria
Date alterTime;
switch (dto.getTimeUnit()) {
case "M":
- alterTime = DateUtil.offsetDay(new Date(), dto.getDelayTime());
+ alterTime = DateUtil.offsetMinute(new Date(), dto.getDelayTime());
break;
case "H":
alterTime = DateUtil.offsetHour(new Date(), dto.getDelayTime());
diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/config/XxlJobConfiguration.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/config/XxlJobConfiguration.java
index 42c4500b3..dedea0c35 100644
--- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/config/XxlJobConfiguration.java
+++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/config/XxlJobConfiguration.java
@@ -1,6 +1,5 @@
package cn.axzo.workflow.server.common.config;
-import cn.azxo.framework.common.annotation.OnlyPodsEnvironment;
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -14,7 +13,7 @@ import org.springframework.context.annotation.Configuration;
* @author wangli
* @since 2024/4/28 14:02
*/
-@OnlyPodsEnvironment
+//@OnlyPodsEnvironment
@Configuration
public class XxlJobConfiguration {
Logger logger = LoggerFactory.getLogger(XxlJobConfiguration.class);
From 0600c5c65b8e0e19ef793eb029eafe5329ecc61b Mon Sep 17 00:00:00 2001
From: wangli <274027703@qq.com>
Date: Mon, 8 Sep 2025 11:29:05 +0800
Subject: [PATCH 08/10] =?UTF-8?q?fix=20-=20=E6=B7=BB=E5=8A=A0=E8=8A=82?=
=?UTF-8?q?=E7=82=B9=E5=91=8A=E8=AD=A6=E9=80=BB=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../workflow/server/common/config/XxlJobConfiguration.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/config/XxlJobConfiguration.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/config/XxlJobConfiguration.java
index dedea0c35..42c4500b3 100644
--- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/config/XxlJobConfiguration.java
+++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/config/XxlJobConfiguration.java
@@ -1,5 +1,6 @@
package cn.axzo.workflow.server.common.config;
+import cn.azxo.framework.common.annotation.OnlyPodsEnvironment;
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -13,7 +14,7 @@ import org.springframework.context.annotation.Configuration;
* @author wangli
* @since 2024/4/28 14:02
*/
-//@OnlyPodsEnvironment
+@OnlyPodsEnvironment
@Configuration
public class XxlJobConfiguration {
Logger logger = LoggerFactory.getLogger(XxlJobConfiguration.class);
From 7d75eccfc2716608af12e2f855bb40857cc54eac Mon Sep 17 00:00:00 2001
From: wangli <274027703@qq.com>
Date: Mon, 8 Sep 2025 11:44:42 +0800
Subject: [PATCH 09/10] =?UTF-8?q?fix=20-=20=E6=B7=BB=E5=8A=A0=E8=8A=82?=
=?UTF-8?q?=E7=82=B9=E5=91=8A=E8=AD=A6=E9=80=BB=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../axzo/workflow/server/xxljob/NodeAlterJobHandler.java | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/xxljob/NodeAlterJobHandler.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/xxljob/NodeAlterJobHandler.java
index f3c95a685..6b0944db4 100644
--- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/xxljob/NodeAlterJobHandler.java
+++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/xxljob/NodeAlterJobHandler.java
@@ -18,6 +18,7 @@ import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.ListUtils;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.TaskService;
import org.flowable.engine.runtime.ProcessInstance;
@@ -68,6 +69,12 @@ public class NodeAlterJobHandler extends IJobHandler {
jobs.forEach(e -> {
XxlJobHelper.log("start execution of job: {}", JSON.toJSONString(e));
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(e.getProcessInstanceId()).singleResult();
+ if (!refreshProperties.getAlterAllDefinitionKey()) {
+ if (!ListUtils.emptyIfNull(refreshProperties.getAlterDefinitionKeys()).contains(processInstance.getProcessDefinitionKey())) {
+ XxlJobHelper.log("skip alter by config");
+ return;
+ }
+ }
if (Objects.isNull(processInstance)) {
executedJobs.add(e);
return;
From d14696f8d68cf6555021f0cde83a952fd4ddd0d9 Mon Sep 17 00:00:00 2001
From: wangli <274027703@qq.com>
Date: Fri, 12 Sep 2025 10:20:15 +0800
Subject: [PATCH 10/10] =?UTF-8?q?fix=20-=20=E5=A4=84=E7=90=86XXL=E2=80=94?=
=?UTF-8?q?=E2=80=94JOB=20=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E7=9A=84?=
=?UTF-8?q?=E9=80=BB=E8=BE=91=E5=A4=84=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../axzo/workflow/server/xxljob/NodeAlterJobHandler.java | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/xxljob/NodeAlterJobHandler.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/xxljob/NodeAlterJobHandler.java
index 6b0944db4..8b30ea034 100644
--- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/xxljob/NodeAlterJobHandler.java
+++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/xxljob/NodeAlterJobHandler.java
@@ -69,16 +69,16 @@ public class NodeAlterJobHandler extends IJobHandler {
jobs.forEach(e -> {
XxlJobHelper.log("start execution of job: {}", JSON.toJSONString(e));
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(e.getProcessInstanceId()).singleResult();
+ if (Objects.isNull(processInstance)) {
+ executedJobs.add(e);
+ return;
+ }
if (!refreshProperties.getAlterAllDefinitionKey()) {
if (!ListUtils.emptyIfNull(refreshProperties.getAlterDefinitionKeys()).contains(processInstance.getProcessDefinitionKey())) {
XxlJobHelper.log("skip alter by config");
return;
}
}
- if (Objects.isNull(processInstance)) {
- executedJobs.add(e);
- return;
- }
List tasks = taskService.createTaskQuery()
.processInstanceId(e.getProcessInstanceId())
.taskDefinitionKey(e.getActivityId())