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;
+ }
+
+}