You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@inlong.apache.org by he...@apache.org on 2022/08/05 02:40:46 UTC

[inlong] branch master updated: [INLONG-4750][Manager] Merge the workflow util classes into one class (#5343)

This is an automated email from the ASF dual-hosted git repository.

healchow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/inlong.git


The following commit(s) were added to refs/heads/master by this push:
     new 9ded14ad9 [INLONG-4750][Manager] Merge the workflow util classes into one class (#5343)
9ded14ad9 is described below

commit 9ded14ad9f23e12ecc6d6c49683e5bb90bdcc895
Author: healchow <he...@gmail.com>
AuthorDate: Fri Aug 5 10:40:41 2022 +0800

    [INLONG-4750][Manager] Merge the workflow util classes into one class (#5343)
---
 .../pages/AccessDashboard/ExecutionLogModal.tsx    |   4 +-
 .../manager/pojo/workflow/ListenerExecuteLog.java  |  73 ++++++
 .../manager/pojo/workflow/TaskExecuteLog.java      |  59 +++++
 .../manager/pojo/workflow/WorkflowExecuteLog.java  |  57 +++++
 .../pojo/workflow/WorkflowOperationRequest.java}   |  26 +--
 .../service/workflow/WorkflowExecuteLog.java       | 172 --------------
 .../manager/service/workflow/WorkflowService.java  |   1 +
 .../service/workflow/WorkflowServiceImpl.java      |  59 +++--
 .../ApplyConsumptionProcessHandler.java            |   6 +-
 .../manager/service/sort/DisableZkForSortTest.java |   4 +-
 .../source/listener/StreamSourceListenerTest.java  |   6 +-
 .../service/workflow/WorkflowServiceImplTest.java  |  10 +-
 .../manager/web/controller/WorkflowController.java |  16 +-
 .../core/impl/WorkflowContextBuilderImpl.java      |  15 +-
 .../core/impl/WorkflowQueryServiceImpl.java        |  10 +-
 .../manager/workflow/util/WorkflowBeanUtils.java   | 161 -------------
 .../workflow/util/WorkflowFormParserUtils.java     |  85 -------
 .../manager/workflow/util/WorkflowUtils.java       | 254 +++++++++++++++++++++
 18 files changed, 512 insertions(+), 506 deletions(-)

diff --git a/inlong-dashboard/src/pages/AccessDashboard/ExecutionLogModal.tsx b/inlong-dashboard/src/pages/AccessDashboard/ExecutionLogModal.tsx
index 2bc083f64..86bfe5b8c 100644
--- a/inlong-dashboard/src/pages/AccessDashboard/ExecutionLogModal.tsx
+++ b/inlong-dashboard/src/pages/AccessDashboard/ExecutionLogModal.tsx
@@ -136,7 +136,7 @@ const Comp: React.FC<Props> = ({ inlongGroupId, ...modalProps }) => {
     },
     {
       title: t('pages.AccessDashboard.ExecutionLogModal.ExecuteLog'),
-      dataIndex: 'listenerExecutorLogs',
+      dataIndex: 'listenerExecuteLogs',
       width: 400,
       render: text =>
         text?.length ? (
@@ -192,7 +192,7 @@ const Comp: React.FC<Props> = ({ inlongGroupId, ...modalProps }) => {
                     columns,
                     rowKey: 'taskId',
                     size: 'small',
-                    dataSource: item.taskExecutorLogs,
+                    dataSource: item.taskExecuteLogs,
                   }}
                 />
               </Panel>
diff --git a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/ListenerExecuteLog.java b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/ListenerExecuteLog.java
new file mode 100644
index 000000000..7891cbe4f
--- /dev/null
+++ b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/ListenerExecuteLog.java
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.inlong.manager.pojo.workflow;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+/**
+ * Workflow listener execution log
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ListenerExecuteLog {
+
+    @ApiModelProperty("id")
+    private Integer id;
+
+    @ApiModelProperty("Event type")
+    private String eventType;
+
+    @ApiModelProperty("Event")
+    private String event;
+
+    @ApiModelProperty("Listener name")
+    private String listener;
+
+    @ApiModelProperty("Status")
+    private Integer status;
+
+    @ApiModelProperty("Is it synchronized")
+    private Integer async;
+
+    @ApiModelProperty("Execute IP")
+    private String ip;
+
+    @ApiModelProperty("Start time")
+    private Date startTime;
+
+    @ApiModelProperty("End time")
+    private Date endTime;
+
+    @ApiModelProperty("Execution result information")
+    private String remark;
+
+    @ApiModelProperty("Exception")
+    private String exception;
+
+    @ApiModelProperty("Description")
+    private String description;
+
+}
diff --git a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/TaskExecuteLog.java b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/TaskExecuteLog.java
new file mode 100644
index 000000000..65e3b2e94
--- /dev/null
+++ b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/TaskExecuteLog.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.inlong.manager.pojo.workflow;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Workflow task execution log
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class TaskExecuteLog {
+
+    @ApiModelProperty("Task type")
+    private String taskType;
+
+    @ApiModelProperty("Task ID")
+    private Integer taskId;
+
+    @ApiModelProperty("Task name")
+    private String taskDisplayName;
+
+    @ApiModelProperty("Execution status, such as complete: COMPLETE; failure: FAILED; processing: PENDING")
+    private String status;
+
+    @ApiModelProperty("Start time")
+    private Date startTime;
+
+    @ApiModelProperty("End time")
+    private Date endTime;
+
+    @ApiModelProperty("Listener execution logs")
+    private List<ListenerExecuteLog> listenerExecuteLogs;
+
+}
diff --git a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/WorkflowExecuteLog.java b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/WorkflowExecuteLog.java
new file mode 100644
index 000000000..e61cdef5b
--- /dev/null
+++ b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/WorkflowExecuteLog.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.inlong.manager.pojo.workflow;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Workflow task execution log
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class WorkflowExecuteLog {
+
+    @ApiModelProperty("Process ID")
+    private Integer processId;
+
+    @ApiModelProperty("Process name")
+    private String processDisplayName;
+
+    @ApiModelProperty("Process status: same task status, such as processing: PROCESSING, "
+            + "completed: COMPLETED, rejected: REJECTED, cancelled: CANCELED, terminated: TERMINATED")
+    private String status;
+
+    @ApiModelProperty("Start time")
+    private Date startTime;
+
+    @ApiModelProperty("End time")
+    private Date endTime;
+
+    @ApiModelProperty("Task execution logs")
+    private List<TaskExecuteLog> taskExecuteLogs;
+
+}
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowOperation.java b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/WorkflowOperationRequest.java
similarity index 73%
rename from inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowOperation.java
rename to inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/WorkflowOperationRequest.java
index ac8717458..2c6f1d20d 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowOperation.java
+++ b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/WorkflowOperationRequest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.inlong.manager.service.workflow;
+package org.apache.inlong.manager.pojo.workflow;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -24,31 +24,21 @@ import org.apache.inlong.manager.common.enums.ProcessName;
 import org.apache.inlong.manager.pojo.workflow.form.process.BaseProcessForm;
 
 /**
- * Workflow operation
+ * Workflow operation request
  */
 @Data
-@ApiModel("Workflow operation parameters")
-public class WorkflowOperation {
+@ApiModel("Workflow operation request")
+public class WorkflowOperationRequest {
 
-    /**
-     * WorkflowProcess name-KEY
-     */
-    @ApiModelProperty(value = "WorkflowProcess name", notes = "Specify the process name when initiating the process")
+    @ApiModelProperty(value = "Process name", notes = "Specify the process name when initiating the process")
     public ProcessName name;
-    /**
-     * Applicant
-     */
-    @ApiModelProperty(value = "Applicant", notes = "Nominate applicants when initiating the process")
+
+    @ApiModelProperty(value = "Applicant name", notes = "Nominate applicants when initiating the process")
     public String applicant;
-    /**
-     * Remarks information
-     */
+
     @ApiModelProperty(value = "Remarks information", notes = "Submit remarks when operating a flow sheet or task sheet")
     public String remark;
 
-    /**
-     * Form information
-     */
     @ApiModelProperty(value = "Form information", notes = "When initiating a process or approving task, "
             + "submit the form information that needs to be submitted")
     public BaseProcessForm form;
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowExecuteLog.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowExecuteLog.java
deleted file mode 100644
index cf887705b..000000000
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowExecuteLog.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.inlong.manager.service.workflow;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import org.apache.inlong.manager.dao.entity.WorkflowEventLogEntity;
-import org.apache.inlong.manager.dao.entity.WorkflowTaskEntity;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
-
-/**
- * Workflow system task execution log
- */
-@Data
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class WorkflowExecuteLog {
-
-    @ApiModelProperty("WorkflowProcess ID")
-    private Integer processId;
-
-    @ApiModelProperty("WorkflowProcess name")
-    private String processDisplayName;
-
-    @ApiModelProperty("WorkflowProcess status: same task status, such as processing: PROCESSING, "
-            + "completed: COMPLETED, rejected: REJECTED, cancelled: CANCELED, terminated: TERMINATED")
-    private String status;
-
-    @ApiModelProperty("Start time")
-    private Date startTime;
-
-    @ApiModelProperty("End time")
-    private Date endTime;
-
-    @ApiModelProperty("WorkflowTask execution log")
-    private List<TaskExecutorLog> taskExecutorLogs;
-
-    @Data
-    @Builder
-    @NoArgsConstructor
-    @AllArgsConstructor
-    static class TaskExecutorLog {
-
-        @ApiModelProperty("WorkflowTask type")
-        private String taskType;
-
-        @ApiModelProperty("WorkflowTask ID")
-        private Integer taskId;
-
-        @ApiModelProperty("WorkflowTask name")
-        private String taskDisplayName;
-
-        @ApiModelProperty("Execution status: same task status, such as "
-                + "complete: COMPLETE; failure: FAILED; processing: PENDING")
-        private String status;
-
-        @ApiModelProperty("Start time")
-        private Date startTime;
-
-        @ApiModelProperty("End time")
-        private Date endTime;
-
-        @ApiModelProperty("Listener execution log")
-        private List<ListenerExecutorLog> listenerExecutorLogs;
-
-        public static TaskExecutorLog buildFromTaskInst(WorkflowTaskEntity workflowTaskEntity) {
-            return TaskExecutorLog.builder()
-                    .taskType(workflowTaskEntity.getType())
-                    .taskId(workflowTaskEntity.getId())
-                    .taskDisplayName(workflowTaskEntity.getDisplayName())
-                    .status(workflowTaskEntity.getStatus())
-                    .startTime(workflowTaskEntity.getStartTime())
-                    .endTime(workflowTaskEntity.getEndTime())
-                    .build();
-        }
-    }
-
-    @Data
-    @Builder
-    @NoArgsConstructor
-    @AllArgsConstructor
-    static class ListenerExecutorLog {
-
-        @ApiModelProperty("id")
-        private Integer id;
-
-        @ApiModelProperty("Event type")
-        private String eventType;
-
-        @ApiModelProperty("Event")
-        private String event;
-
-        @ApiModelProperty("Listener name")
-        private String listener;
-
-        @ApiModelProperty("Status")
-        private Integer status;
-
-        @ApiModelProperty("Is it synchronized")
-        private Integer async;
-
-        @ApiModelProperty("Execute IP")
-        private String ip;
-
-        @ApiModelProperty("Start time")
-        private Date startTime;
-
-        @ApiModelProperty("End time")
-        private Date endTime;
-
-        @ApiModelProperty("Execution result information")
-        private String remark;
-
-        @ApiModelProperty("Exception")
-        private String exception;
-
-        @ApiModelProperty("Description")
-        private String description;
-
-        /**
-         * Get listener executor log.
-         */
-        public static ListenerExecutorLog fromEventLog(WorkflowEventLogEntity workflowEventLogEntity) {
-            ListenerExecutorLog executorLog = ListenerExecutorLog.builder()
-                    .id(workflowEventLogEntity.getId())
-                    .eventType(workflowEventLogEntity.getEventType())
-                    .event(workflowEventLogEntity.getEvent())
-                    .listener(workflowEventLogEntity.getListener())
-                    .status(workflowEventLogEntity.getStatus())
-                    .async(workflowEventLogEntity.getAsync())
-                    .ip(workflowEventLogEntity.getIp())
-                    .startTime(workflowEventLogEntity.getStartTime())
-                    .endTime(workflowEventLogEntity.getEndTime())
-                    .remark(workflowEventLogEntity.getRemark())
-                    .exception(workflowEventLogEntity.getException())
-                    .build();
-            executorLog.buildDescription();
-            return executorLog;
-        }
-
-        private void buildDescription() {
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-            String sb = sdf.format(startTime) + " ~ " + sdf.format(endTime) + " [" + listener + "] "
-                    + "event: [" + event + "], executed [" + (status == 1 ? "success" : "failed") + "], "
-                    + "remark: [" + remark + "], exception: [" + exception + "]";
-            this.setDescription(sb);
-        }
-    }
-
-}
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowService.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowService.java
index 86fb7f2e7..a37c5138a 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowService.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowService.java
@@ -29,6 +29,7 @@ import org.apache.inlong.manager.pojo.workflow.TaskLogRequest;
 import org.apache.inlong.manager.pojo.workflow.TaskRequest;
 import org.apache.inlong.manager.pojo.workflow.TaskResponse;
 import org.apache.inlong.manager.pojo.workflow.TaskCountResponse;
+import org.apache.inlong.manager.pojo.workflow.WorkflowExecuteLog;
 import org.apache.inlong.manager.pojo.workflow.WorkflowResult;
 import org.apache.inlong.manager.pojo.workflow.form.process.ProcessForm;
 import org.apache.inlong.manager.pojo.workflow.form.task.TaskForm;
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowServiceImpl.java
index 49af706f4..ec20712dd 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowServiceImpl.java
@@ -24,7 +24,11 @@ import com.github.pagehelper.PageInfo;
 import com.google.common.collect.Maps;
 import org.apache.inlong.manager.common.enums.ProcessName;
 import org.apache.inlong.manager.common.enums.TaskStatus;
+import org.apache.inlong.manager.common.util.Preconditions;
+import org.apache.inlong.manager.dao.entity.WorkflowProcessEntity;
+import org.apache.inlong.manager.dao.entity.WorkflowTaskEntity;
 import org.apache.inlong.manager.pojo.workflow.EventLogRequest;
+import org.apache.inlong.manager.pojo.workflow.ListenerExecuteLog;
 import org.apache.inlong.manager.pojo.workflow.ProcessCountRequest;
 import org.apache.inlong.manager.pojo.workflow.ProcessCountResponse;
 import org.apache.inlong.manager.pojo.workflow.ProcessDetailResponse;
@@ -32,17 +36,14 @@ import org.apache.inlong.manager.pojo.workflow.ProcessRequest;
 import org.apache.inlong.manager.pojo.workflow.ProcessResponse;
 import org.apache.inlong.manager.pojo.workflow.TaskCountRequest;
 import org.apache.inlong.manager.pojo.workflow.TaskCountResponse;
+import org.apache.inlong.manager.pojo.workflow.TaskExecuteLog;
 import org.apache.inlong.manager.pojo.workflow.TaskLogRequest;
 import org.apache.inlong.manager.pojo.workflow.TaskRequest;
 import org.apache.inlong.manager.pojo.workflow.TaskResponse;
+import org.apache.inlong.manager.pojo.workflow.WorkflowExecuteLog;
 import org.apache.inlong.manager.pojo.workflow.WorkflowResult;
 import org.apache.inlong.manager.pojo.workflow.form.process.ProcessForm;
 import org.apache.inlong.manager.pojo.workflow.form.task.TaskForm;
-import org.apache.inlong.manager.common.util.Preconditions;
-import org.apache.inlong.manager.dao.entity.WorkflowProcessEntity;
-import org.apache.inlong.manager.dao.entity.WorkflowTaskEntity;
-import org.apache.inlong.manager.service.workflow.WorkflowExecuteLog.ListenerExecutorLog;
-import org.apache.inlong.manager.service.workflow.WorkflowExecuteLog.TaskExecutorLog;
 import org.apache.inlong.manager.workflow.WorkflowContext;
 import org.apache.inlong.manager.workflow.core.ProcessDefinitionService;
 import org.apache.inlong.manager.workflow.core.ProcessService;
@@ -50,8 +51,7 @@ import org.apache.inlong.manager.workflow.core.TaskService;
 import org.apache.inlong.manager.workflow.core.WorkflowQueryService;
 import org.apache.inlong.manager.workflow.definition.UserTask;
 import org.apache.inlong.manager.workflow.definition.WorkflowProcess;
-import org.apache.inlong.manager.workflow.util.WorkflowBeanUtils;
-import org.apache.inlong.manager.workflow.util.WorkflowFormParserUtils;
+import org.apache.inlong.manager.workflow.util.WorkflowUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -86,43 +86,43 @@ public class WorkflowServiceImpl implements WorkflowService {
     @Override
     public WorkflowResult start(ProcessName process, String operator, ProcessForm form) {
         WorkflowContext context = processService.start(process.name(), operator, form);
-        return WorkflowBeanUtils.result(context);
+        return WorkflowUtils.getResult(context);
     }
 
     @Override
     public WorkflowResult continueProcess(Integer processId, String operator, String remark) {
         WorkflowContext context = processService.continueProcess(processId, operator, remark);
-        return WorkflowBeanUtils.result(context);
+        return WorkflowUtils.getResult(context);
     }
 
     @Override
     public WorkflowResult cancel(Integer processId, String operator, String remark) {
         WorkflowContext context = processService.cancel(processId, operator, remark);
-        return WorkflowBeanUtils.result(context);
+        return WorkflowUtils.getResult(context);
     }
 
     @Override
     public WorkflowResult approve(Integer taskId, String remark, TaskForm form, String operator) {
         WorkflowContext context = taskService.approve(taskId, remark, form, operator);
-        return WorkflowBeanUtils.result(context);
+        return WorkflowUtils.getResult(context);
     }
 
     @Override
     public WorkflowResult reject(Integer taskId, String remark, String operator) {
         WorkflowContext context = taskService.reject(taskId, remark, operator);
-        return WorkflowBeanUtils.result(context);
+        return WorkflowUtils.getResult(context);
     }
 
     @Override
     public WorkflowResult transfer(Integer taskId, String remark, List<String> to, String operator) {
         WorkflowContext context = taskService.transfer(taskId, remark, to, operator);
-        return WorkflowBeanUtils.result(context);
+        return WorkflowUtils.getResult(context);
     }
 
     @Override
     public WorkflowResult complete(Integer taskId, String remark, String operator) {
         WorkflowContext context = taskService.complete(taskId, remark, operator);
-        return WorkflowBeanUtils.result(context);
+        return WorkflowUtils.getResult(context);
     }
 
     @Override
@@ -135,7 +135,7 @@ public class WorkflowServiceImpl implements WorkflowService {
         PageHelper.startPage(query.getPageNum(), query.getPageSize());
         Page<WorkflowProcessEntity> result = (Page<WorkflowProcessEntity>) queryService.listProcessEntity(query);
         PageInfo<ProcessResponse> pageInfo = result.toPageInfo(entity -> {
-            ProcessResponse response = WorkflowBeanUtils.fromProcessEntity(entity);
+            ProcessResponse response = WorkflowUtils.getProcessResponse(entity);
             if (query.getIncludeShowInList()) {
                 response.setShowInList(getShowInList(entity));
             }
@@ -159,7 +159,7 @@ public class WorkflowServiceImpl implements WorkflowService {
     public PageInfo<TaskResponse> listTask(TaskRequest query) {
         PageHelper.startPage(query.getPageNum(), query.getPageSize());
         Page<WorkflowTaskEntity> result = (Page<WorkflowTaskEntity>) queryService.listTaskEntity(query);
-        PageInfo<TaskResponse> pageInfo = result.toPageInfo(WorkflowBeanUtils::fromTaskEntity);
+        PageInfo<TaskResponse> pageInfo = result.toPageInfo(WorkflowUtils::getTaskResponse);
         addShowInListForEachTask(pageInfo.getList());
         pageInfo.setTotal(result.getTotal());
 
@@ -209,23 +209,23 @@ public class WorkflowServiceImpl implements WorkflowService {
             TaskRequest taskQuery = new TaskRequest();
             taskQuery.setProcessId(executeLog.getProcessId());
             taskQuery.setType(taskQuery.getType());
-            List<TaskExecutorLog> executorLogs = queryService.listTaskEntity(taskQuery)
+            List<TaskExecuteLog> taskExecuteLogs = queryService.listTaskEntity(taskQuery)
                     .stream()
-                    .map(TaskExecutorLog::buildFromTaskInst)
+                    .map(WorkflowUtils::getTaskExecuteLog)
                     .collect(Collectors.toList());
 
-            // Set the execution log of the task's listener
-            for (TaskExecutorLog taskExecutorLog : executorLogs) {
+            // Set the listener execution logs
+            for (TaskExecuteLog taskLog : taskExecuteLogs) {
                 EventLogRequest eventLogQuery = new EventLogRequest();
-                eventLogQuery.setTaskId(taskExecutorLog.getTaskId());
-                List<ListenerExecutorLog> logs = queryService.listEventLog(eventLogQuery)
+                eventLogQuery.setTaskId(taskLog.getTaskId());
+                List<ListenerExecuteLog> logs = queryService.listEventLog(eventLogQuery)
                         .stream()
-                        .map(ListenerExecutorLog::fromEventLog)
+                        .map(WorkflowUtils::getListenerExecuteLog)
                         .collect(Collectors.toList());
-                taskExecutorLog.setListenerExecutorLogs(logs);
+                taskLog.setListenerExecuteLogs(logs);
             }
 
-            executeLog.setTaskExecutorLogs(executorLogs);
+            executeLog.setTaskExecuteLogs(taskExecuteLogs);
         }
 
         LOGGER.info("success to page list task execute logs for " + query);
@@ -247,12 +247,11 @@ public class WorkflowServiceImpl implements WorkflowService {
         }
 
         try {
-            ProcessForm processForm = WorkflowFormParserUtils.parseProcessForm(objectMapper,
-                    processEntity.getFormData(), process);
-            assert processForm != null;
-            return processForm.showInList();
+            ProcessForm form = WorkflowUtils.parseProcessForm(objectMapper, processEntity.getFormData(), process);
+            assert form != null;
+            return form.showInList();
         } catch (Exception e) {
-            LOGGER.error("get showIn list err", e);
+            LOGGER.error("get show list err: ", e);
         }
         return null;
     }
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/consumption/ApplyConsumptionProcessHandler.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/consumption/ApplyConsumptionProcessHandler.java
index 013076ab9..7579b5a85 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/consumption/ApplyConsumptionProcessHandler.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/consumption/ApplyConsumptionProcessHandler.java
@@ -23,7 +23,7 @@ import org.apache.inlong.manager.pojo.workflow.form.process.ApplyConsumptionProc
 import org.apache.inlong.manager.workflow.core.ProcessDefinitionService;
 import org.apache.inlong.manager.workflow.definition.ProcessDetailHandler;
 import org.apache.inlong.manager.workflow.definition.WorkflowProcess;
-import org.apache.inlong.manager.workflow.util.WorkflowFormParserUtils;
+import org.apache.inlong.manager.workflow.util.WorkflowUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -41,8 +41,8 @@ public class ApplyConsumptionProcessHandler implements ProcessDetailHandler {
     @Override
     public ProcessDetailResponse handle(ProcessDetailResponse processResponse) {
         WorkflowProcess process = processDefinitionService.getByName(processResponse.getWorkflow().getName());
-        ApplyConsumptionProcessForm processForm = WorkflowFormParserUtils
-                .parseProcessForm(objectMapper, processResponse.getProcessInfo().getFormData().toString(), process);
+        ApplyConsumptionProcessForm processForm = WorkflowUtils.parseProcessForm(objectMapper,
+                processResponse.getProcessInfo().getFormData().toString(), process);
         if (processForm == null) {
             return processResponse;
         }
diff --git a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/sort/DisableZkForSortTest.java b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/sort/DisableZkForSortTest.java
index 95cec2f75..96d82dc26 100644
--- a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/sort/DisableZkForSortTest.java
+++ b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/sort/DisableZkForSortTest.java
@@ -43,7 +43,7 @@ import org.apache.inlong.manager.workflow.definition.ServiceTask;
 import org.apache.inlong.manager.workflow.definition.WorkflowProcess;
 import org.apache.inlong.manager.workflow.definition.WorkflowTask;
 import org.apache.inlong.manager.workflow.event.task.TaskEventListener;
-import org.apache.inlong.manager.workflow.util.WorkflowBeanUtils;
+import org.apache.inlong.manager.workflow.util.WorkflowUtils;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -138,7 +138,7 @@ public class DisableZkForSortTest extends WorkflowServiceImplTest {
         taskListenerFactory.acceptPlugin(new MockPlugin());
 
         WorkflowContext context = processService.start(ProcessName.SUSPEND_GROUP_PROCESS.name(), applicant, form);
-        WorkflowResult result = WorkflowBeanUtils.result(context);
+        WorkflowResult result = WorkflowUtils.getResult(context);
         ProcessResponse response = result.getProcessInfo();
         Assertions.assertSame(response.getStatus(), ProcessStatus.COMPLETED);
         WorkflowProcess process = context.getProcess();
diff --git a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/source/listener/StreamSourceListenerTest.java b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/source/listener/StreamSourceListenerTest.java
index 71a9e7dd2..859515fa9 100644
--- a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/source/listener/StreamSourceListenerTest.java
+++ b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/source/listener/StreamSourceListenerTest.java
@@ -37,7 +37,7 @@ import org.apache.inlong.manager.workflow.core.ProcessService;
 import org.apache.inlong.manager.workflow.definition.ServiceTask;
 import org.apache.inlong.manager.workflow.definition.WorkflowProcess;
 import org.apache.inlong.manager.workflow.definition.WorkflowTask;
-import org.apache.inlong.manager.workflow.util.WorkflowBeanUtils;
+import org.apache.inlong.manager.workflow.util.WorkflowUtils;
 import org.junit.jupiter.api.Assertions;
 import org.springframework.beans.factory.annotation.Autowired;
 
@@ -87,7 +87,7 @@ public class StreamSourceListenerTest extends ServiceBaseTest {
         form.setGroupInfo(groupInfo);
         form.setGroupOperateType(GroupOperateType.SUSPEND);
         WorkflowContext context = processService.start(ProcessName.SUSPEND_GROUP_PROCESS.name(), GLOBAL_OPERATOR, form);
-        WorkflowResult result = WorkflowBeanUtils.result(context);
+        WorkflowResult result = WorkflowUtils.getResult(context);
         ProcessResponse response = result.getProcessInfo();
         Assertions.assertSame(response.getStatus(), ProcessStatus.COMPLETED);
 
@@ -111,7 +111,7 @@ public class StreamSourceListenerTest extends ServiceBaseTest {
         form.setGroupInfo(groupInfo);
         form.setGroupOperateType(GroupOperateType.RESTART);
         WorkflowContext context = processService.start(ProcessName.RESTART_GROUP_PROCESS.name(), GLOBAL_OPERATOR, form);
-        WorkflowResult result = WorkflowBeanUtils.result(context);
+        WorkflowResult result = WorkflowUtils.getResult(context);
         ProcessResponse response = result.getProcessInfo();
         Assertions.assertSame(response.getStatus(), ProcessStatus.COMPLETED);
 
diff --git a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/workflow/WorkflowServiceImplTest.java b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/workflow/WorkflowServiceImplTest.java
index eb86f9794..499e3ddc5 100644
--- a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/workflow/WorkflowServiceImplTest.java
+++ b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/workflow/WorkflowServiceImplTest.java
@@ -41,7 +41,7 @@ import org.apache.inlong.manager.workflow.definition.WorkflowTask;
 import org.apache.inlong.manager.workflow.event.ListenerResult;
 import org.apache.inlong.manager.workflow.event.task.SortOperateListener;
 import org.apache.inlong.manager.workflow.event.task.TaskEvent;
-import org.apache.inlong.manager.workflow.util.WorkflowBeanUtils;
+import org.apache.inlong.manager.workflow.util.WorkflowUtils;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -136,19 +136,13 @@ public class WorkflowServiceImplTest extends ServiceBaseTest {
         mockTaskListenerFactory();
 
         WorkflowContext context = processService.start(processName.name(), applicant, form);
-        WorkflowResult result = WorkflowBeanUtils.result(context);
+        WorkflowResult result = WorkflowUtils.getResult(context);
         ProcessResponse processResponse = result.getProcessInfo();
         Assertions.assertSame(processResponse.getStatus(), ProcessStatus.COMPLETED);
 
         WorkflowProcess process = context.getProcess();
         WorkflowTask task = process.getTaskByName("InitMQ");
         Assertions.assertTrue(task instanceof ServiceTask);
-
-        // Integer processId = processResponse.getId();
-        // context = processService.continueProcess(processId, applicant, "continue process");
-        // result = WorkflowBeanUtils.result(context);
-        // processResponse = result.getProcessInfo();
-        // Assertions.assertSame(processResponse.getStatus(), ProcessStatus.COMPLETED);
     }
 
 }
diff --git a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowController.java b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowController.java
index f8e108f16..10648f771 100644
--- a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowController.java
+++ b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowController.java
@@ -39,8 +39,8 @@ import org.apache.inlong.manager.pojo.workflow.WorkflowApprovalRequest;
 import org.apache.inlong.manager.pojo.workflow.WorkflowResult;
 import org.apache.inlong.manager.service.operationlog.OperationLog;
 import org.apache.inlong.manager.service.user.LoginUserUtils;
-import org.apache.inlong.manager.service.workflow.WorkflowExecuteLog;
-import org.apache.inlong.manager.service.workflow.WorkflowOperation;
+import org.apache.inlong.manager.pojo.workflow.WorkflowExecuteLog;
+import org.apache.inlong.manager.pojo.workflow.WorkflowOperationRequest;
 import org.apache.inlong.manager.service.workflow.WorkflowService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -66,18 +66,18 @@ public class WorkflowController {
     @PostMapping("/workflow/start")
     @OperationLog(operation = OperationType.CREATE)
     @ApiOperation(value = "Initiation process")
-    public Response<WorkflowResult> start(@RequestBody WorkflowOperation operation) {
+    public Response<WorkflowResult> start(@RequestBody WorkflowOperationRequest request) {
         String applicant = LoginUserUtils.getLoginUser().getName();
-        return Response.success(workflowService.start(operation.getName(), applicant, operation.getForm()));
+        return Response.success(workflowService.start(request.getName(), applicant, request.getForm()));
     }
 
     @PostMapping("/workflow/cancel/{id}")
     @OperationLog(operation = OperationType.UPDATE)
     @ApiOperation(value = "Cancellation process")
     @ApiImplicitParam(name = "id", value = "Process ID", dataTypeClass = Integer.class, required = true)
-    public Response<WorkflowResult> cancel(@PathVariable Integer id, @RequestBody WorkflowOperation operation) {
+    public Response<WorkflowResult> cancel(@PathVariable Integer id, @RequestBody WorkflowOperationRequest request) {
         String operator = LoginUserUtils.getLoginUser().getName();
-        return Response.success(workflowService.cancel(id, operator, operation.getRemark()));
+        return Response.success(workflowService.cancel(id, operator, request.getRemark()));
     }
 
     @PostMapping("/workflow/continue/{id}")
@@ -85,9 +85,9 @@ public class WorkflowController {
     @ApiOperation(value = "Continue process")
     @ApiImplicitParam(name = "id", value = "Process ID", dataTypeClass = Integer.class, required = true)
     public Response<WorkflowResult> continueProcess(@PathVariable Integer id,
-            @RequestBody WorkflowOperation operation) {
+            @RequestBody WorkflowOperationRequest request) {
         String operator = LoginUserUtils.getLoginUser().getName();
-        return Response.success(workflowService.continueProcess(id, operator, operation.getRemark()));
+        return Response.success(workflowService.continueProcess(id, operator, request.getRemark()));
     }
 
     @PostMapping("/workflow/approve/{id}")
diff --git a/inlong-manager/manager-workflow/src/main/java/org/apache/inlong/manager/workflow/core/impl/WorkflowContextBuilderImpl.java b/inlong-manager/manager-workflow/src/main/java/org/apache/inlong/manager/workflow/core/impl/WorkflowContextBuilderImpl.java
index 9c26ee486..29d86cf08 100644
--- a/inlong-manager/manager-workflow/src/main/java/org/apache/inlong/manager/workflow/core/impl/WorkflowContextBuilderImpl.java
+++ b/inlong-manager/manager-workflow/src/main/java/org/apache/inlong/manager/workflow/core/impl/WorkflowContextBuilderImpl.java
@@ -24,20 +24,20 @@ import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.inlong.manager.common.exceptions.JsonException;
-import org.apache.inlong.manager.pojo.workflow.form.process.ProcessForm;
-import org.apache.inlong.manager.pojo.workflow.form.task.TaskForm;
 import org.apache.inlong.manager.common.util.Preconditions;
 import org.apache.inlong.manager.dao.entity.WorkflowProcessEntity;
 import org.apache.inlong.manager.dao.entity.WorkflowTaskEntity;
 import org.apache.inlong.manager.dao.mapper.WorkflowProcessEntityMapper;
 import org.apache.inlong.manager.dao.mapper.WorkflowTaskEntityMapper;
+import org.apache.inlong.manager.pojo.workflow.form.process.ProcessForm;
+import org.apache.inlong.manager.pojo.workflow.form.task.TaskForm;
 import org.apache.inlong.manager.workflow.WorkflowAction;
 import org.apache.inlong.manager.workflow.WorkflowContext;
 import org.apache.inlong.manager.workflow.core.ProcessDefinitionRepository;
 import org.apache.inlong.manager.workflow.core.WorkflowContextBuilder;
 import org.apache.inlong.manager.workflow.definition.WorkflowProcess;
 import org.apache.inlong.manager.workflow.definition.WorkflowTask;
-import org.apache.inlong.manager.workflow.util.WorkflowFormParserUtils;
+import org.apache.inlong.manager.workflow.util.WorkflowUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -81,8 +81,7 @@ public class WorkflowContextBuilderImpl implements WorkflowContextBuilder {
         return new WorkflowContext()
                 .setOperator(processEntity.getApplicant())
                 .setProcess(process)
-                .setProcessForm(
-                        WorkflowFormParserUtils.parseProcessForm(objectMapper, processEntity.getFormData(), process))
+                .setProcessForm(WorkflowUtils.parseProcessForm(objectMapper, processEntity.getFormData(), process))
                 .setProcessEntity(processEntity);
     }
 
@@ -108,7 +107,7 @@ public class WorkflowContextBuilderImpl implements WorkflowContextBuilder {
     public WorkflowContext buildContextForTask(Integer taskId, WorkflowAction action) {
         WorkflowTaskEntity taskEntity = taskEntityMapper.selectById(taskId);
         WorkflowProcess process = definitionRepository.get(taskEntity.getProcessName()).clone();
-        TaskForm taskForm = WorkflowFormParserUtils.parseTaskForm(objectMapper, taskEntity, process);
+        TaskForm taskForm = WorkflowUtils.parseTaskForm(objectMapper, taskEntity, process);
         List<String> transferToUsers = getTransferToUsers(taskEntity.getExtParams());
         return buildContextForTask(taskId, action, taskForm, transferToUsers, taskEntity.getRemark(),
                 taskEntity.getOperator());
@@ -122,10 +121,8 @@ public class WorkflowContextBuilderImpl implements WorkflowContextBuilder {
 
         WorkflowProcessEntity processEntity = processEntityMapper.selectById(taskEntity.getProcessId());
         WorkflowProcess process = definitionRepository.get(processEntity.getName()).clone();
-        ProcessForm processForm = WorkflowFormParserUtils.parseProcessForm(objectMapper, processEntity.getFormData(),
-                process);
+        ProcessForm processForm = WorkflowUtils.parseProcessForm(objectMapper, processEntity.getFormData(), process);
         WorkflowTask task = process.getTaskByName(taskEntity.getName());
-
         return new WorkflowContext().setProcess(process)
                 .setOperator(processEntity.getApplicant())
                 .setProcessForm(processForm)
diff --git a/inlong-manager/manager-workflow/src/main/java/org/apache/inlong/manager/workflow/core/impl/WorkflowQueryServiceImpl.java b/inlong-manager/manager-workflow/src/main/java/org/apache/inlong/manager/workflow/core/impl/WorkflowQueryServiceImpl.java
index 71b6f9b67..31f6ff316 100644
--- a/inlong-manager/manager-workflow/src/main/java/org/apache/inlong/manager/workflow/core/impl/WorkflowQueryServiceImpl.java
+++ b/inlong-manager/manager-workflow/src/main/java/org/apache/inlong/manager/workflow/core/impl/WorkflowQueryServiceImpl.java
@@ -56,7 +56,7 @@ import org.apache.inlong.manager.workflow.definition.StartEvent;
 import org.apache.inlong.manager.workflow.definition.UserTask;
 import org.apache.inlong.manager.workflow.definition.WorkflowProcess;
 import org.apache.inlong.manager.workflow.definition.WorkflowTask;
-import org.apache.inlong.manager.workflow.util.WorkflowBeanUtils;
+import org.apache.inlong.manager.workflow.util.WorkflowUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -182,7 +182,7 @@ public class WorkflowQueryServiceImpl implements WorkflowQueryService {
         WorkflowProcess process = definitionRepository.get(processEntity.getName());
         TaskResponse currentTask = null;
         if (taskEntity != null) {
-            currentTask = WorkflowBeanUtils.fromTaskEntity(taskEntity);
+            currentTask = WorkflowUtils.getTaskResponse(taskEntity);
             if (process != null && TaskStatus.PENDING.equals(currentTask.getStatus())) {
                 WorkflowTask task = process.getTaskByName(currentTask.getName());
                 currentTask.setFormData(this.getEmptyTaskForm(task));
@@ -214,12 +214,12 @@ public class WorkflowQueryServiceImpl implements WorkflowQueryService {
 
     private ProcessDetailResponse getProcessDetail(Integer processId, WorkflowProcessEntity processEntity) {
         List<WorkflowTaskEntity> taskList = this.listApproveHistory(processId);
-        List<TaskResponse> history = taskList.stream().map(WorkflowBeanUtils::fromTaskEntity)
+        List<TaskResponse> history = taskList.stream().map(WorkflowUtils::getTaskResponse)
                 .collect(Collectors.toList());
 
         ProcessInfo workflowDTO = this.getBriefFromProcessEntity(processEntity);
         ProcessDetailResponse processDetail = new ProcessDetailResponse();
-        processDetail.setProcessInfo(WorkflowBeanUtils.fromProcessEntity(processEntity));
+        processDetail.setProcessInfo(WorkflowUtils.getProcessResponse(processEntity));
         processDetail.setTaskHistory(history);
         processDetail.setWorkflow(workflowDTO);
         return processDetail;
@@ -237,7 +237,7 @@ public class WorkflowQueryServiceImpl implements WorkflowQueryService {
         elementInfo.setName(startEvent.getName());
         elementInfo.setDisplayName(startEvent.getDisplayName());
 
-        WorkflowContext context = WorkflowBeanUtils.buildContext(objectMapper, process, processEntity);
+        WorkflowContext context = WorkflowUtils.buildContext(objectMapper, process, processEntity);
         addNext(startEvent, elementInfo, context, nameStatusMap);
 
         ProcessInfo processInfo = new ProcessInfo();
diff --git a/inlong-manager/manager-workflow/src/main/java/org/apache/inlong/manager/workflow/util/WorkflowBeanUtils.java b/inlong-manager/manager-workflow/src/main/java/org/apache/inlong/manager/workflow/util/WorkflowBeanUtils.java
deleted file mode 100644
index 1f777a00c..000000000
--- a/inlong-manager/manager-workflow/src/main/java/org/apache/inlong/manager/workflow/util/WorkflowBeanUtils.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.inlong.manager.workflow.util;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.collect.Lists;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.inlong.manager.common.enums.ProcessStatus;
-import org.apache.inlong.manager.common.enums.TaskStatus;
-import org.apache.inlong.manager.common.exceptions.JsonException;
-import org.apache.inlong.manager.pojo.workflow.ProcessResponse;
-import org.apache.inlong.manager.pojo.workflow.TaskResponse;
-import org.apache.inlong.manager.pojo.workflow.WorkflowResult;
-import org.apache.inlong.manager.pojo.workflow.form.process.ProcessForm;
-import org.apache.inlong.manager.dao.entity.WorkflowProcessEntity;
-import org.apache.inlong.manager.dao.entity.WorkflowTaskEntity;
-import org.apache.inlong.manager.workflow.WorkflowContext;
-import org.apache.inlong.manager.workflow.WorkflowContext.ActionContext;
-import org.apache.inlong.manager.workflow.definition.WorkflowProcess;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Arrays;
-
-/**
- * Workflow bean copy utils
- */
-public class WorkflowBeanUtils {
-
-    public static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
-    private static final Logger LOGGER = LoggerFactory.getLogger(WorkflowBeanUtils.class);
-
-    /**
-     * Build workflow context from WorkflowProcess and WorkflowProcessEntity
-     */
-    public static WorkflowContext buildContext(ObjectMapper objectMapper, WorkflowProcess process,
-            WorkflowProcessEntity processEntity) {
-        ProcessForm processForm = null;
-        try {
-            processForm = WorkflowFormParserUtils.parseProcessForm(objectMapper, processEntity.getFormData(), process);
-        } catch (Exception e) {
-            LOGGER.error("build context from process form failed with id: {}", processEntity.getId(), e);
-        }
-
-        return new WorkflowContext().setProcess(process)
-                .setOperator(processEntity.getApplicant())
-                .setProcessForm(processForm)
-                .setProcessEntity(processEntity);
-    }
-
-    /**
-     * Get task response from task entity
-     */
-    public static TaskResponse fromTaskEntity(WorkflowTaskEntity taskEntity) {
-        if (taskEntity == null) {
-            return null;
-        }
-
-        TaskResponse taskResponse = TaskResponse.builder()
-                .id(taskEntity.getId())
-                .type(taskEntity.getType())
-                .processId(taskEntity.getProcessId())
-                .processName(taskEntity.getProcessName())
-                .processDisplayName(taskEntity.getProcessDisplayName())
-                .name(taskEntity.getName())
-                .displayName(taskEntity.getDisplayName())
-                .applicant(taskEntity.getApplicant())
-                .approvers(Arrays.asList(taskEntity.getApprovers().split(WorkflowTaskEntity.APPROVERS_DELIMITER)))
-                .operator(taskEntity.getOperator())
-                .status(TaskStatus.valueOf(taskEntity.getStatus()))
-                .remark(taskEntity.getRemark())
-                .startTime(taskEntity.getStartTime())
-                .endTime(taskEntity.getEndTime())
-                .build();
-
-        try {
-            JsonNode formData = null;
-            if (StringUtils.isNotBlank(taskEntity.getFormData())) {
-                formData = OBJECT_MAPPER.readTree(taskEntity.getFormData());
-            }
-            taskResponse.setFormData(formData);
-        } catch (Exception e) {
-            LOGGER.error("parse form data error: ", e);
-        }
-
-        return taskResponse;
-    }
-
-    /**
-     * Get process response from process entity
-     */
-    public static ProcessResponse fromProcessEntity(WorkflowProcessEntity entity) {
-        if (entity == null) {
-            return null;
-        }
-
-        ProcessResponse processResponse = ProcessResponse.builder()
-                .id(entity.getId())
-                .name(entity.getName())
-                .displayName(entity.getDisplayName())
-                .type(entity.getType())
-                .title(entity.getTitle())
-                .applicant(entity.getApplicant())
-                .status(ProcessStatus.valueOf(entity.getStatus()))
-                .startTime(entity.getStartTime())
-                .endTime(entity.getEndTime())
-                .build();
-
-        try {
-            JsonNode formData = null;
-            if (StringUtils.isNotBlank(entity.getFormData())) {
-                formData = OBJECT_MAPPER.readTree(entity.getFormData());
-            }
-            processResponse.setFormData(formData);
-
-            JsonNode extParams = null;
-            if (StringUtils.isNotBlank(entity.getExtParams())) {
-                extParams = OBJECT_MAPPER.readTree(entity.getExtParams());
-            }
-            processResponse.setExtParams(extParams);
-        } catch (Exception e) {
-            LOGGER.error("parse form data error: ", e);
-            throw new JsonException("parse form data or ext params error");
-        }
-
-        return processResponse;
-    }
-
-    /**
-     * Get the workflow result from the given workflow context
-     */
-    public static WorkflowResult result(WorkflowContext context) {
-        if (context == null) {
-            return null;
-        }
-        WorkflowResult workflowResult = new WorkflowResult();
-        workflowResult.setProcessInfo(WorkflowBeanUtils.fromProcessEntity(context.getProcessEntity()));
-        if (context.getActionContext() != null) {
-            ActionContext newAction = context.getActionContext();
-            workflowResult.setNewTasks(Lists.newArrayList(WorkflowBeanUtils.fromTaskEntity(newAction.getTaskEntity())));
-        }
-        return workflowResult;
-    }
-
-}
diff --git a/inlong-manager/manager-workflow/src/main/java/org/apache/inlong/manager/workflow/util/WorkflowFormParserUtils.java b/inlong-manager/manager-workflow/src/main/java/org/apache/inlong/manager/workflow/util/WorkflowFormParserUtils.java
deleted file mode 100644
index 61a7529b3..000000000
--- a/inlong-manager/manager-workflow/src/main/java/org/apache/inlong/manager/workflow/util/WorkflowFormParserUtils.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.inlong.manager.workflow.util;
-
-import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.inlong.manager.common.exceptions.FormParseException;
-import org.apache.inlong.manager.pojo.workflow.form.process.ProcessForm;
-import org.apache.inlong.manager.pojo.workflow.form.task.TaskForm;
-import org.apache.inlong.manager.common.util.Preconditions;
-import org.apache.inlong.manager.dao.entity.WorkflowTaskEntity;
-import org.apache.inlong.manager.workflow.definition.UserTask;
-import org.apache.inlong.manager.workflow.definition.WorkflowProcess;
-import org.apache.inlong.manager.workflow.definition.WorkflowTask;
-
-/**
- * WorkflowProcess form analysis tool
- */
-@Slf4j
-public class WorkflowFormParserUtils {
-
-    /**
-     * Parse the task form in JSON string format into a WorkflowTask instance
-     */
-    public static <T extends TaskForm> T parseTaskForm(ObjectMapper objectMapper,
-            WorkflowTaskEntity workflowTaskEntity, WorkflowProcess process) throws FormParseException {
-        Preconditions.checkNotNull(workflowTaskEntity, "workflowTaskEntity cannot be null");
-        Preconditions.checkNotNull(process, "process cannot be null");
-
-        if (StringUtils.isEmpty(workflowTaskEntity.getFormData())) {
-            return null;
-        }
-
-        WorkflowTask task = process.getTaskByName(workflowTaskEntity.getName());
-        Preconditions.checkNotNull(task, "user task not exist " + workflowTaskEntity.getName());
-        Preconditions.checkTrue(task instanceof UserTask, "task should be userTask " + workflowTaskEntity.getName());
-
-        UserTask userTask = (UserTask) task;
-        try {
-            JavaType javaType = objectMapper.constructType(userTask.getFormClass());
-            return objectMapper.readValue(workflowTaskEntity.getFormData(), javaType);
-        } catch (Exception e) {
-            log.error("task parsed failed for form {}", workflowTaskEntity.getFormData(), e);
-            throw new FormParseException("task form parse failed");
-        }
-    }
-
-    /**
-     * Parse the process form in JSON string format into a WorkflowProcess instance
-     */
-    public static <T extends ProcessForm> T parseProcessForm(ObjectMapper objectMapper, String form,
-            WorkflowProcess process) throws FormParseException {
-        Preconditions.checkNotNull(process, "process cannot be null");
-
-        if (StringUtils.isEmpty(form)) {
-            return null;
-        }
-
-        try {
-            JavaType javaType = objectMapper.constructType(process.getFormClass());
-            return objectMapper.readValue(form, javaType);
-        } catch (Exception e) {
-            log.error("process form parse failed, form is: {}", form, e);
-            throw new FormParseException("process form parse failed");
-        }
-    }
-
-}
diff --git a/inlong-manager/manager-workflow/src/main/java/org/apache/inlong/manager/workflow/util/WorkflowUtils.java b/inlong-manager/manager-workflow/src/main/java/org/apache/inlong/manager/workflow/util/WorkflowUtils.java
new file mode 100644
index 000000000..c70659e06
--- /dev/null
+++ b/inlong-manager/manager-workflow/src/main/java/org/apache/inlong/manager/workflow/util/WorkflowUtils.java
@@ -0,0 +1,254 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.inlong.manager.workflow.util;
+
+import com.fasterxml.jackson.databind.JavaType;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.collect.Lists;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.inlong.manager.common.enums.ProcessStatus;
+import org.apache.inlong.manager.common.enums.TaskStatus;
+import org.apache.inlong.manager.common.exceptions.FormParseException;
+import org.apache.inlong.manager.common.exceptions.JsonException;
+import org.apache.inlong.manager.common.util.Preconditions;
+import org.apache.inlong.manager.dao.entity.WorkflowEventLogEntity;
+import org.apache.inlong.manager.dao.entity.WorkflowProcessEntity;
+import org.apache.inlong.manager.dao.entity.WorkflowTaskEntity;
+import org.apache.inlong.manager.pojo.workflow.ListenerExecuteLog;
+import org.apache.inlong.manager.pojo.workflow.ProcessResponse;
+import org.apache.inlong.manager.pojo.workflow.TaskExecuteLog;
+import org.apache.inlong.manager.pojo.workflow.TaskResponse;
+import org.apache.inlong.manager.pojo.workflow.WorkflowResult;
+import org.apache.inlong.manager.pojo.workflow.form.process.ProcessForm;
+import org.apache.inlong.manager.pojo.workflow.form.task.TaskForm;
+import org.apache.inlong.manager.workflow.WorkflowContext;
+import org.apache.inlong.manager.workflow.WorkflowContext.ActionContext;
+import org.apache.inlong.manager.workflow.definition.UserTask;
+import org.apache.inlong.manager.workflow.definition.WorkflowProcess;
+import org.apache.inlong.manager.workflow.definition.WorkflowTask;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.text.SimpleDateFormat;
+import java.util.Arrays;
+
+/**
+ * Workflow utils
+ */
+public class WorkflowUtils {
+
+    public static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
+    private static final Logger LOGGER = LoggerFactory.getLogger(WorkflowUtils.class);
+
+    /**
+     * Build workflow context from WorkflowProcess and WorkflowProcessEntity
+     */
+    public static WorkflowContext buildContext(ObjectMapper objectMapper, WorkflowProcess process,
+            WorkflowProcessEntity processEntity) {
+        try {
+            ProcessForm form = WorkflowUtils.parseProcessForm(objectMapper, processEntity.getFormData(), process);
+            return new WorkflowContext().setProcess(process)
+                    .setOperator(processEntity.getApplicant())
+                    .setProcessForm(form)
+                    .setProcessEntity(processEntity);
+        } catch (Exception e) {
+            LOGGER.error("build context from process form failed with id=" + processEntity.getId(), e);
+            return null;
+        }
+    }
+
+    /**
+     * Get the workflow result from the given workflow context
+     */
+    public static WorkflowResult getResult(WorkflowContext context) {
+        if (context == null) {
+            return null;
+        }
+
+        WorkflowResult workflowResult = new WorkflowResult();
+        workflowResult.setProcessInfo(WorkflowUtils.getProcessResponse(context.getProcessEntity()));
+        if (context.getActionContext() != null) {
+            ActionContext newAction = context.getActionContext();
+            workflowResult.setNewTasks(Lists.newArrayList(WorkflowUtils.getTaskResponse(newAction.getTaskEntity())));
+        }
+        return workflowResult;
+    }
+
+    /**
+     * Get process response from process entity
+     */
+    public static ProcessResponse getProcessResponse(WorkflowProcessEntity entity) {
+        if (entity == null) {
+            return null;
+        }
+
+        ProcessResponse processResponse = ProcessResponse.builder()
+                .id(entity.getId())
+                .name(entity.getName())
+                .displayName(entity.getDisplayName())
+                .type(entity.getType())
+                .title(entity.getTitle())
+                .applicant(entity.getApplicant())
+                .status(ProcessStatus.valueOf(entity.getStatus()))
+                .startTime(entity.getStartTime())
+                .endTime(entity.getEndTime())
+                .build();
+        try {
+            if (StringUtils.isNotBlank(entity.getFormData())) {
+                processResponse.setFormData(OBJECT_MAPPER.readTree(entity.getFormData()));
+            }
+            if (StringUtils.isNotBlank(entity.getExtParams())) {
+                processResponse.setExtParams(OBJECT_MAPPER.readTree(entity.getExtParams()));
+            }
+        } catch (Exception e) {
+            LOGGER.error("parse process form error: ", e);
+            throw new JsonException("parse process form or ext params error, please contact administrator");
+        }
+
+        return processResponse;
+    }
+
+    /**
+     * Get task response from task entity
+     */
+    public static TaskResponse getTaskResponse(WorkflowTaskEntity taskEntity) {
+        if (taskEntity == null) {
+            return null;
+        }
+
+        TaskResponse taskResponse = TaskResponse.builder()
+                .id(taskEntity.getId())
+                .type(taskEntity.getType())
+                .processId(taskEntity.getProcessId())
+                .processName(taskEntity.getProcessName())
+                .processDisplayName(taskEntity.getProcessDisplayName())
+                .name(taskEntity.getName())
+                .displayName(taskEntity.getDisplayName())
+                .applicant(taskEntity.getApplicant())
+                .approvers(Arrays.asList(taskEntity.getApprovers().split(WorkflowTaskEntity.APPROVERS_DELIMITER)))
+                .operator(taskEntity.getOperator())
+                .status(TaskStatus.valueOf(taskEntity.getStatus()))
+                .remark(taskEntity.getRemark())
+                .startTime(taskEntity.getStartTime())
+                .endTime(taskEntity.getEndTime())
+                .build();
+
+        try {
+            JsonNode formData = null;
+            if (StringUtils.isNotBlank(taskEntity.getFormData())) {
+                formData = OBJECT_MAPPER.readTree(taskEntity.getFormData());
+            }
+            taskResponse.setFormData(formData);
+        } catch (Exception e) {
+            LOGGER.error("parse task form error: ", e);
+            throw new JsonException("parse task form or ext params error, please contact administrator");
+        }
+
+        return taskResponse;
+    }
+
+    /**
+     * Parse the process form in JSON string format into a WorkflowProcess instance
+     */
+    public static <T extends ProcessForm> T parseProcessForm(ObjectMapper objectMapper, String form,
+            WorkflowProcess process) {
+        Preconditions.checkNotNull(process, "process cannot be null");
+        if (StringUtils.isEmpty(form)) {
+            return null;
+        }
+
+        try {
+            JavaType javaType = objectMapper.constructType(process.getFormClass());
+            return objectMapper.readValue(form, javaType);
+        } catch (Exception e) {
+            LOGGER.error("parse process form failed for {}", form, e);
+            throw new FormParseException("parse process form failed, please contact administrator");
+        }
+    }
+
+    /**
+     * Parse the task form in JSON string format into a WorkflowTask instance
+     */
+    public static <T extends TaskForm> T parseTaskForm(ObjectMapper objectMapper, WorkflowTaskEntity taskEntity,
+            WorkflowProcess process) {
+        Preconditions.checkNotNull(taskEntity, "taskEntity cannot be null");
+        Preconditions.checkNotNull(process, "process cannot be null");
+        if (StringUtils.isEmpty(taskEntity.getFormData())) {
+            return null;
+        }
+
+        WorkflowTask task = process.getTaskByName(taskEntity.getName());
+        Preconditions.checkNotNull(task, "user task not exist " + taskEntity.getName());
+        Preconditions.checkTrue(task instanceof UserTask, "task should be userTask " + taskEntity.getName());
+
+        UserTask userTask = (UserTask) task;
+        try {
+            JavaType javaType = objectMapper.constructType(userTask.getFormClass());
+            return objectMapper.readValue(taskEntity.getFormData(), javaType);
+        } catch (Exception e) {
+            LOGGER.error("parse task form failed for {}", taskEntity.getFormData(), e);
+            throw new FormParseException("parse task form failed, please contact the administrator");
+        }
+    }
+
+    /**
+     * Get task execute log from the task entity.
+     */
+    public static TaskExecuteLog getTaskExecuteLog(WorkflowTaskEntity taskEntity) {
+        return TaskExecuteLog.builder()
+                .taskType(taskEntity.getType())
+                .taskId(taskEntity.getId())
+                .taskDisplayName(taskEntity.getDisplayName())
+                .status(taskEntity.getStatus())
+                .startTime(taskEntity.getStartTime())
+                .endTime(taskEntity.getEndTime())
+                .build();
+    }
+
+    /**
+     * Get listener executor log.
+     */
+    public static ListenerExecuteLog getListenerExecuteLog(WorkflowEventLogEntity eventLogEntity) {
+        ListenerExecuteLog executorLog = ListenerExecuteLog.builder()
+                .id(eventLogEntity.getId())
+                .eventType(eventLogEntity.getEventType())
+                .event(eventLogEntity.getEvent())
+                .listener(eventLogEntity.getListener())
+                .status(eventLogEntity.getStatus())
+                .async(eventLogEntity.getAsync())
+                .ip(eventLogEntity.getIp())
+                .startTime(eventLogEntity.getStartTime())
+                .endTime(eventLogEntity.getEndTime())
+                .remark(eventLogEntity.getRemark())
+                .exception(eventLogEntity.getException())
+                .build();
+
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String desc = sdf.format(executorLog.getStartTime()) + " ~ " + sdf.format(executorLog.getEndTime())
+                + " [" + executorLog.getListener() + "] "
+                + "event: [" + executorLog.getEvent() + "], "
+                + "executed [" + (executorLog.getStatus() == 1 ? "success" : "failed") + "], "
+                + "remark: [" + executorLog.getRemark() + "], "
+                + "exception: [" + executorLog.getException() + "]";
+        executorLog.setDescription(desc);
+
+        return executorLog;
+    }
+
+}