反序列化问题。

This commit is contained in:
dengqichen 2024-12-20 14:04:23 +08:00
parent debef2f881
commit 091ea4fe7b
10 changed files with 46 additions and 50 deletions

View File

@ -1,10 +1,9 @@
package com.qqchen.deploy.backend.workflow.dto;
import com.fasterxml.jackson.databind.JsonNode;
import com.qqchen.deploy.backend.framework.dto.BaseDTO;
import com.qqchen.deploy.backend.workflow.dto.definition.workflow.WorkflowDefinitionGraph;
import com.qqchen.deploy.backend.workflow.enums.WorkflowCategoryEnum;
import com.qqchen.deploy.backend.workflow.enums.WorkflowStatusEnums;
import com.qqchen.deploy.backend.workflow.enums.WorkflowDefinitionStatusEnums;
import com.qqchen.deploy.backend.workflow.enums.WorkflowTriggerTypeEnum;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -57,14 +56,9 @@ public class WorkflowDefinitionDTO extends BaseDTO {
private WorkflowDefinitionGraph graph;
/**
* 表单配置
* 定义状态
*/
private JsonNode formConfig;
/**
* 流程状态
*/
private WorkflowStatusEnums status;
private WorkflowDefinitionStatusEnums status;
/**
* 流程描述

View File

@ -2,7 +2,7 @@ package com.qqchen.deploy.backend.workflow.dto;
import com.fasterxml.jackson.databind.JsonNode;
import com.qqchen.deploy.backend.framework.dto.BaseDTO;
import com.qqchen.deploy.backend.workflow.enums.WorkflowStatusEnums;
import com.qqchen.deploy.backend.workflow.enums.WorkflowDefinitionStatusEnums;
import lombok.Data;
/**
@ -30,5 +30,5 @@ public class WorkflowDesignDTO extends BaseDTO {
*/
private JsonNode graphJson;
private WorkflowStatusEnums status;
private WorkflowDefinitionStatusEnums status;
}

View File

@ -8,24 +8,21 @@ public class Circle {
@SchemaProperty(
title = "半径",
description = "圆的半径",
required = true,
defaultValue = "4"
required = true
)
private Integer r;
@SchemaProperty(
title = "填充颜色",
description = "圆的填充颜色",
required = true,
defaultValue = "#ffffff"
required = true
)
private String fill;
@SchemaProperty(
title = "边框颜色",
description = "圆的边框颜色",
required = true,
defaultValue = "#1890ff"
required = true
)
private String stroke;
}

View File

@ -1,6 +1,9 @@
package com.qqchen.deploy.backend.workflow.dto.definition.workflow;
import com.fasterxml.jackson.databind.JsonNode;
import com.qqchen.deploy.backend.workflow.dto.definition.node.uiVariables.NodeUiVariables;
import com.qqchen.deploy.backend.workflow.enums.NodeTypeEnums;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.Map;
@ -34,11 +37,16 @@ public class WorkflowDefinitionNode {
*/
private String name;
@Schema(description = "节点UI")
private JsonNode uiVariables;
private WorkflowNodeGraph graph;
@Schema(description = "节点属性")
private JsonNode panelVariables;
@Schema(description = "节点环境变量")
private JsonNode localVariables;
@Schema(description = "节点表单")
private JsonNode formVariables;
/**
* 节点配置
*/
private Map<String, Object> localVariables;
}

View File

@ -4,7 +4,7 @@ import com.fasterxml.jackson.databind.JsonNode;
import com.qqchen.deploy.backend.framework.annotation.LogicDelete;
import com.qqchen.deploy.backend.workflow.dto.definition.workflow.WorkflowDefinitionGraph;
import com.qqchen.deploy.backend.workflow.enums.WorkflowCategoryEnum;
import com.qqchen.deploy.backend.workflow.enums.WorkflowStatusEnums;
import com.qqchen.deploy.backend.workflow.enums.WorkflowDefinitionStatusEnums;
import com.qqchen.deploy.backend.workflow.enums.WorkflowTriggerTypeEnum;
import com.qqchen.deploy.backend.workflow.hibernate.WorkflowGraphType;
import com.qqchen.deploy.backend.framework.domain.Entity;
@ -88,7 +88,7 @@ public class WorkflowDefinition extends Entity<Long> {
*/
@Column(nullable = false)
@Enumerated(EnumType.STRING)
private WorkflowStatusEnums status;
private WorkflowDefinitionStatusEnums status;
/**
* 流程描述

View File

@ -3,7 +3,7 @@ package com.qqchen.deploy.backend.workflow.enums;
import lombok.Getter;
@Getter
public enum WorkflowStatusEnums {
public enum WorkflowDefinitionStatusEnums {
DRAFT("DRAFT","草稿"),
PUBLISHED("PUBLISHED","已发布"),
@ -13,7 +13,7 @@ public enum WorkflowStatusEnums {
private final String description;
WorkflowStatusEnums(String code, String description) {
WorkflowDefinitionStatusEnums(String code, String description) {
this.code = code;
this.description = description;
}

View File

@ -2,12 +2,11 @@ package com.qqchen.deploy.backend.workflow.repository;
import com.qqchen.deploy.backend.framework.repository.IBaseRepository;
import com.qqchen.deploy.backend.workflow.entity.WorkflowDefinition;
import com.qqchen.deploy.backend.workflow.enums.WorkflowStatusEnums;
import com.qqchen.deploy.backend.workflow.enums.WorkflowDefinitionStatusEnums;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Optional;
/**
@ -27,5 +26,5 @@ public interface IWorkflowDefinitionRepository extends IBaseRepository<WorkflowD
Optional<WorkflowDefinition> findByKey(String businessKey);
Page<WorkflowDefinition> findByStatus(WorkflowStatusEnums workflowStatusEnums, Pageable pageable);
Page<WorkflowDefinition> findByStatus(WorkflowDefinitionStatusEnums workflowStatusEnums, Pageable pageable);
}

View File

@ -8,8 +8,8 @@ import com.qqchen.deploy.backend.workflow.dto.WorkflowTriggerTypeDTO;
import com.qqchen.deploy.backend.workflow.dto.definition.workflow.WorkflowDefinitionGraph;
import com.qqchen.deploy.backend.workflow.entity.WorkflowDefinition;
import com.qqchen.deploy.backend.workflow.enums.WorkflowCategoryEnum;
import com.qqchen.deploy.backend.workflow.enums.WorkflowDefinitionStatusEnums;
import com.qqchen.deploy.backend.workflow.enums.WorkflowNodeInstanceStatusEnums;
import com.qqchen.deploy.backend.workflow.enums.WorkflowStatusEnums;
import com.qqchen.deploy.backend.workflow.repository.IWorkflowDefinitionRepository;
import com.qqchen.deploy.backend.workflow.service.IWorkflowDefinitionService;
import com.qqchen.deploy.backend.workflow.service.IWorkflowInstanceService;
@ -279,7 +279,7 @@ public class WorkflowDefinitionServiceImpl extends BaseServiceImpl<WorkflowDefin
if (deployments.isEmpty()) {
// 如果没有部署直接更新状态
definition.setStatus(WorkflowStatusEnums.DISABLED);
definition.setStatus(WorkflowDefinitionStatusEnums.DISABLED);
workflowDefinitionRepository.save(definition);
return;
}
@ -300,7 +300,7 @@ public class WorkflowDefinitionServiceImpl extends BaseServiceImpl<WorkflowDefin
}
// 4. 更新我们的流程定义状态
definition.setStatus(WorkflowStatusEnums.DISABLED);
definition.setStatus(WorkflowDefinitionStatusEnums.DISABLED);
workflowDefinitionRepository.save(definition);
log.info("Successfully disabled workflow definition: {}, key: {}, hasHistory: {}",
@ -329,7 +329,7 @@ public class WorkflowDefinitionServiceImpl extends BaseServiceImpl<WorkflowDefin
definition.setBpmnXml(bpmnConverter.convertToXml(graph, definition.getKey()));
Deployment deployment = this.deployWorkflow(definition);
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).singleResult();
definition.setStatus(WorkflowStatusEnums.PUBLISHED);
definition.setStatus(WorkflowDefinitionStatusEnums.PUBLISHED);
definition.setFlowVersion(1);
definition.setProcessDefinitionId(processDefinition.getId());
workflowDefinitionRepository.save(definition);

View File

@ -8,14 +8,13 @@ import com.qqchen.deploy.backend.workflow.converter.WorkflowNodeInstanceConverte
import com.qqchen.deploy.backend.workflow.dto.WorkflowHistoricalInstancesDTO;
import com.qqchen.deploy.backend.workflow.dto.WorkflowInstanceDTO;
import com.qqchen.deploy.backend.workflow.dto.WorkflowInstanceStartRequest;
import com.qqchen.deploy.backend.workflow.dto.WorkflowNodeInstanceDTO;
import com.qqchen.deploy.backend.workflow.dto.WorkflowTemplateWithInstancesDTO;
import com.qqchen.deploy.backend.workflow.entity.WorkflowDefinition;
import com.qqchen.deploy.backend.workflow.entity.WorkflowInstance;
import com.qqchen.deploy.backend.workflow.entity.WorkflowNodeInstance;
import com.qqchen.deploy.backend.workflow.enums.WorkflowInstanceStatusEnums;
import com.qqchen.deploy.backend.workflow.enums.WorkflowNodeInstanceStatusEnums;
import com.qqchen.deploy.backend.workflow.enums.WorkflowStatusEnums;
import com.qqchen.deploy.backend.workflow.enums.WorkflowDefinitionStatusEnums;
import com.qqchen.deploy.backend.workflow.query.WorkflowDefinitionQuery;
import com.qqchen.deploy.backend.workflow.query.WorkflowHistoricalInstancesQuery;
import com.qqchen.deploy.backend.workflow.repository.IWorkflowDefinitionRepository;
@ -28,7 +27,6 @@ import lombok.extern.slf4j.Slf4j;
import org.flowable.bpmn.model.BpmnModel;
import org.flowable.bpmn.model.FlowElement;
import org.flowable.bpmn.model.Process;
import org.flowable.bpmn.model.SequenceFlow;
import org.flowable.engine.HistoryService;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.RuntimeService;
@ -193,7 +191,7 @@ public class WorkflowInstanceServiceImpl extends BaseServiceImpl<WorkflowInstanc
@Override
public Page<WorkflowTemplateWithInstancesDTO> findTemplatesWithRecentInstances(WorkflowDefinitionQuery query) {
Pageable pageable = PageRequest.of(query.getPageNum() - 1, query.getPageSize());
Page<WorkflowDefinition> definitionPage = workflowDefinitionRepository.findByStatus(WorkflowStatusEnums.PUBLISHED, pageable);
Page<WorkflowDefinition> definitionPage = workflowDefinitionRepository.findByStatus(WorkflowDefinitionStatusEnums.PUBLISHED, pageable);
List<WorkflowTemplateWithInstancesDTO> result = definitionPage.getContent().stream().map(definition -> {
List<WorkflowInstance> workflowInstances = workflowInstanceRepository.findTop1ByWorkflowDefinitionIdOrderByCreateTimeDesc(definition.getId());
WorkflowTemplateWithInstancesDTO workflowTemplateWithInstancesDTO = new WorkflowTemplateWithInstancesDTO();

View File

@ -139,9 +139,9 @@ public class BpmnConverter {
if (element instanceof ServiceTask) {
ServiceTask serviceTask = (ServiceTask) element;
// 设置委托表达式
String delegate = (String) node.getLocalVariables().get("delegate");
serviceTask.setImplementationType("delegateExpression");
serviceTask.setImplementation(delegate);
// String delegate = (String) node.getLocalVariables().get("delegate");
// serviceTask.setImplementationType("delegateExpression");
// serviceTask.setImplementation(delegate);
// 配置重试策略
ExtensionElement retryConfig = new ExtensionElement();
@ -155,18 +155,18 @@ public class BpmnConverter {
extensionElements.put("failedJobRetryTimeCycle", retryElements);
// 添加字段注入
List<FieldExtension> fieldExtensions = new ArrayList<>();
node.getLocalVariables().forEach((key, value) -> {
if (value != null && !"delegate".equals(key)) {
FieldExtension fieldExtension = new FieldExtension();
fieldExtension.setFieldName(key);
fieldExtension.setStringValue(String.valueOf(value));
fieldExtensions.add(fieldExtension);
}
});
// List<FieldExtension> fieldExtensions = new ArrayList<>();
// node.getLocalVariables().forEach((key, value) -> {
// if (value != null && !"delegate".equals(key)) {
// FieldExtension fieldExtension = new FieldExtension();
// fieldExtension.setFieldName(key);
// fieldExtension.setStringValue(String.valueOf(value));
// fieldExtensions.add(fieldExtension);
// }
// });
// 设置到服务任务
serviceTask.setFieldExtensions(fieldExtensions);
// serviceTask.setFieldExtensions(fieldExtensions);
serviceTask.setExtensionElements(extensionElements);
// 添加错误边界事件