反序列化问题。
This commit is contained in:
parent
debef2f881
commit
091ea4fe7b
@ -1,10 +1,9 @@
|
|||||||
package com.qqchen.deploy.backend.workflow.dto;
|
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.framework.dto.BaseDTO;
|
||||||
import com.qqchen.deploy.backend.workflow.dto.definition.workflow.WorkflowDefinitionGraph;
|
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.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.enums.WorkflowTriggerTypeEnum;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
@ -57,14 +56,9 @@ public class WorkflowDefinitionDTO extends BaseDTO {
|
|||||||
private WorkflowDefinitionGraph graph;
|
private WorkflowDefinitionGraph graph;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 表单配置
|
* 定义状态
|
||||||
*/
|
*/
|
||||||
private JsonNode formConfig;
|
private WorkflowDefinitionStatusEnums status;
|
||||||
|
|
||||||
/**
|
|
||||||
* 流程状态
|
|
||||||
*/
|
|
||||||
private WorkflowStatusEnums status;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 流程描述
|
* 流程描述
|
||||||
|
|||||||
@ -2,7 +2,7 @@ package com.qqchen.deploy.backend.workflow.dto;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.databind.JsonNode;
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
import com.qqchen.deploy.backend.framework.dto.BaseDTO;
|
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;
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -30,5 +30,5 @@ public class WorkflowDesignDTO extends BaseDTO {
|
|||||||
*/
|
*/
|
||||||
private JsonNode graphJson;
|
private JsonNode graphJson;
|
||||||
|
|
||||||
private WorkflowStatusEnums status;
|
private WorkflowDefinitionStatusEnums status;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,24 +8,21 @@ public class Circle {
|
|||||||
@SchemaProperty(
|
@SchemaProperty(
|
||||||
title = "半径",
|
title = "半径",
|
||||||
description = "圆的半径",
|
description = "圆的半径",
|
||||||
required = true,
|
required = true
|
||||||
defaultValue = "4"
|
|
||||||
)
|
)
|
||||||
private Integer r;
|
private Integer r;
|
||||||
|
|
||||||
@SchemaProperty(
|
@SchemaProperty(
|
||||||
title = "填充颜色",
|
title = "填充颜色",
|
||||||
description = "圆的填充颜色",
|
description = "圆的填充颜色",
|
||||||
required = true,
|
required = true
|
||||||
defaultValue = "#ffffff"
|
|
||||||
)
|
)
|
||||||
private String fill;
|
private String fill;
|
||||||
|
|
||||||
@SchemaProperty(
|
@SchemaProperty(
|
||||||
title = "边框颜色",
|
title = "边框颜色",
|
||||||
description = "圆的边框颜色",
|
description = "圆的边框颜色",
|
||||||
required = true,
|
required = true
|
||||||
defaultValue = "#1890ff"
|
|
||||||
)
|
)
|
||||||
private String stroke;
|
private String stroke;
|
||||||
}
|
}
|
||||||
@ -1,6 +1,9 @@
|
|||||||
package com.qqchen.deploy.backend.workflow.dto.definition.workflow;
|
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 com.qqchen.deploy.backend.workflow.enums.NodeTypeEnums;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -34,11 +37,16 @@ public class WorkflowDefinitionNode {
|
|||||||
*/
|
*/
|
||||||
private String name;
|
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;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import com.fasterxml.jackson.databind.JsonNode;
|
|||||||
import com.qqchen.deploy.backend.framework.annotation.LogicDelete;
|
import com.qqchen.deploy.backend.framework.annotation.LogicDelete;
|
||||||
import com.qqchen.deploy.backend.workflow.dto.definition.workflow.WorkflowDefinitionGraph;
|
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.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.enums.WorkflowTriggerTypeEnum;
|
||||||
import com.qqchen.deploy.backend.workflow.hibernate.WorkflowGraphType;
|
import com.qqchen.deploy.backend.workflow.hibernate.WorkflowGraphType;
|
||||||
import com.qqchen.deploy.backend.framework.domain.Entity;
|
import com.qqchen.deploy.backend.framework.domain.Entity;
|
||||||
@ -88,7 +88,7 @@ public class WorkflowDefinition extends Entity<Long> {
|
|||||||
*/
|
*/
|
||||||
@Column(nullable = false)
|
@Column(nullable = false)
|
||||||
@Enumerated(EnumType.STRING)
|
@Enumerated(EnumType.STRING)
|
||||||
private WorkflowStatusEnums status;
|
private WorkflowDefinitionStatusEnums status;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 流程描述
|
* 流程描述
|
||||||
|
|||||||
@ -3,7 +3,7 @@ package com.qqchen.deploy.backend.workflow.enums;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
public enum WorkflowStatusEnums {
|
public enum WorkflowDefinitionStatusEnums {
|
||||||
|
|
||||||
DRAFT("DRAFT","草稿"),
|
DRAFT("DRAFT","草稿"),
|
||||||
PUBLISHED("PUBLISHED","已发布"),
|
PUBLISHED("PUBLISHED","已发布"),
|
||||||
@ -13,7 +13,7 @@ public enum WorkflowStatusEnums {
|
|||||||
|
|
||||||
private final String description;
|
private final String description;
|
||||||
|
|
||||||
WorkflowStatusEnums(String code, String description) {
|
WorkflowDefinitionStatusEnums(String code, String description) {
|
||||||
this.code = code;
|
this.code = code;
|
||||||
this.description = description;
|
this.description = description;
|
||||||
}
|
}
|
||||||
@ -2,12 +2,11 @@ package com.qqchen.deploy.backend.workflow.repository;
|
|||||||
|
|
||||||
import com.qqchen.deploy.backend.framework.repository.IBaseRepository;
|
import com.qqchen.deploy.backend.framework.repository.IBaseRepository;
|
||||||
import com.qqchen.deploy.backend.workflow.entity.WorkflowDefinition;
|
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.Page;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -27,5 +26,5 @@ public interface IWorkflowDefinitionRepository extends IBaseRepository<WorkflowD
|
|||||||
|
|
||||||
Optional<WorkflowDefinition> findByKey(String businessKey);
|
Optional<WorkflowDefinition> findByKey(String businessKey);
|
||||||
|
|
||||||
Page<WorkflowDefinition> findByStatus(WorkflowStatusEnums workflowStatusEnums, Pageable pageable);
|
Page<WorkflowDefinition> findByStatus(WorkflowDefinitionStatusEnums workflowStatusEnums, Pageable pageable);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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.dto.definition.workflow.WorkflowDefinitionGraph;
|
||||||
import com.qqchen.deploy.backend.workflow.entity.WorkflowDefinition;
|
import com.qqchen.deploy.backend.workflow.entity.WorkflowDefinition;
|
||||||
import com.qqchen.deploy.backend.workflow.enums.WorkflowCategoryEnum;
|
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.WorkflowNodeInstanceStatusEnums;
|
||||||
import com.qqchen.deploy.backend.workflow.enums.WorkflowStatusEnums;
|
|
||||||
import com.qqchen.deploy.backend.workflow.repository.IWorkflowDefinitionRepository;
|
import com.qqchen.deploy.backend.workflow.repository.IWorkflowDefinitionRepository;
|
||||||
import com.qqchen.deploy.backend.workflow.service.IWorkflowDefinitionService;
|
import com.qqchen.deploy.backend.workflow.service.IWorkflowDefinitionService;
|
||||||
import com.qqchen.deploy.backend.workflow.service.IWorkflowInstanceService;
|
import com.qqchen.deploy.backend.workflow.service.IWorkflowInstanceService;
|
||||||
@ -279,7 +279,7 @@ public class WorkflowDefinitionServiceImpl extends BaseServiceImpl<WorkflowDefin
|
|||||||
|
|
||||||
if (deployments.isEmpty()) {
|
if (deployments.isEmpty()) {
|
||||||
// 如果没有部署,直接更新状态
|
// 如果没有部署,直接更新状态
|
||||||
definition.setStatus(WorkflowStatusEnums.DISABLED);
|
definition.setStatus(WorkflowDefinitionStatusEnums.DISABLED);
|
||||||
workflowDefinitionRepository.save(definition);
|
workflowDefinitionRepository.save(definition);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -300,7 +300,7 @@ public class WorkflowDefinitionServiceImpl extends BaseServiceImpl<WorkflowDefin
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 4. 更新我们的流程定义状态
|
// 4. 更新我们的流程定义状态
|
||||||
definition.setStatus(WorkflowStatusEnums.DISABLED);
|
definition.setStatus(WorkflowDefinitionStatusEnums.DISABLED);
|
||||||
workflowDefinitionRepository.save(definition);
|
workflowDefinitionRepository.save(definition);
|
||||||
|
|
||||||
log.info("Successfully disabled workflow definition: {}, key: {}, hasHistory: {}",
|
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()));
|
definition.setBpmnXml(bpmnConverter.convertToXml(graph, definition.getKey()));
|
||||||
Deployment deployment = this.deployWorkflow(definition);
|
Deployment deployment = this.deployWorkflow(definition);
|
||||||
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).singleResult();
|
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).singleResult();
|
||||||
definition.setStatus(WorkflowStatusEnums.PUBLISHED);
|
definition.setStatus(WorkflowDefinitionStatusEnums.PUBLISHED);
|
||||||
definition.setFlowVersion(1);
|
definition.setFlowVersion(1);
|
||||||
definition.setProcessDefinitionId(processDefinition.getId());
|
definition.setProcessDefinitionId(processDefinition.getId());
|
||||||
workflowDefinitionRepository.save(definition);
|
workflowDefinitionRepository.save(definition);
|
||||||
|
|||||||
@ -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.WorkflowHistoricalInstancesDTO;
|
||||||
import com.qqchen.deploy.backend.workflow.dto.WorkflowInstanceDTO;
|
import com.qqchen.deploy.backend.workflow.dto.WorkflowInstanceDTO;
|
||||||
import com.qqchen.deploy.backend.workflow.dto.WorkflowInstanceStartRequest;
|
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.dto.WorkflowTemplateWithInstancesDTO;
|
||||||
import com.qqchen.deploy.backend.workflow.entity.WorkflowDefinition;
|
import com.qqchen.deploy.backend.workflow.entity.WorkflowDefinition;
|
||||||
import com.qqchen.deploy.backend.workflow.entity.WorkflowInstance;
|
import com.qqchen.deploy.backend.workflow.entity.WorkflowInstance;
|
||||||
import com.qqchen.deploy.backend.workflow.entity.WorkflowNodeInstance;
|
import com.qqchen.deploy.backend.workflow.entity.WorkflowNodeInstance;
|
||||||
import com.qqchen.deploy.backend.workflow.enums.WorkflowInstanceStatusEnums;
|
import com.qqchen.deploy.backend.workflow.enums.WorkflowInstanceStatusEnums;
|
||||||
import com.qqchen.deploy.backend.workflow.enums.WorkflowNodeInstanceStatusEnums;
|
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.WorkflowDefinitionQuery;
|
||||||
import com.qqchen.deploy.backend.workflow.query.WorkflowHistoricalInstancesQuery;
|
import com.qqchen.deploy.backend.workflow.query.WorkflowHistoricalInstancesQuery;
|
||||||
import com.qqchen.deploy.backend.workflow.repository.IWorkflowDefinitionRepository;
|
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.BpmnModel;
|
||||||
import org.flowable.bpmn.model.FlowElement;
|
import org.flowable.bpmn.model.FlowElement;
|
||||||
import org.flowable.bpmn.model.Process;
|
import org.flowable.bpmn.model.Process;
|
||||||
import org.flowable.bpmn.model.SequenceFlow;
|
|
||||||
import org.flowable.engine.HistoryService;
|
import org.flowable.engine.HistoryService;
|
||||||
import org.flowable.engine.RepositoryService;
|
import org.flowable.engine.RepositoryService;
|
||||||
import org.flowable.engine.RuntimeService;
|
import org.flowable.engine.RuntimeService;
|
||||||
@ -193,7 +191,7 @@ public class WorkflowInstanceServiceImpl extends BaseServiceImpl<WorkflowInstanc
|
|||||||
@Override
|
@Override
|
||||||
public Page<WorkflowTemplateWithInstancesDTO> findTemplatesWithRecentInstances(WorkflowDefinitionQuery query) {
|
public Page<WorkflowTemplateWithInstancesDTO> findTemplatesWithRecentInstances(WorkflowDefinitionQuery query) {
|
||||||
Pageable pageable = PageRequest.of(query.getPageNum() - 1, query.getPageSize());
|
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<WorkflowTemplateWithInstancesDTO> result = definitionPage.getContent().stream().map(definition -> {
|
||||||
List<WorkflowInstance> workflowInstances = workflowInstanceRepository.findTop1ByWorkflowDefinitionIdOrderByCreateTimeDesc(definition.getId());
|
List<WorkflowInstance> workflowInstances = workflowInstanceRepository.findTop1ByWorkflowDefinitionIdOrderByCreateTimeDesc(definition.getId());
|
||||||
WorkflowTemplateWithInstancesDTO workflowTemplateWithInstancesDTO = new WorkflowTemplateWithInstancesDTO();
|
WorkflowTemplateWithInstancesDTO workflowTemplateWithInstancesDTO = new WorkflowTemplateWithInstancesDTO();
|
||||||
|
|||||||
@ -139,9 +139,9 @@ public class BpmnConverter {
|
|||||||
if (element instanceof ServiceTask) {
|
if (element instanceof ServiceTask) {
|
||||||
ServiceTask serviceTask = (ServiceTask) element;
|
ServiceTask serviceTask = (ServiceTask) element;
|
||||||
// 设置委托表达式
|
// 设置委托表达式
|
||||||
String delegate = (String) node.getLocalVariables().get("delegate");
|
// String delegate = (String) node.getLocalVariables().get("delegate");
|
||||||
serviceTask.setImplementationType("delegateExpression");
|
// serviceTask.setImplementationType("delegateExpression");
|
||||||
serviceTask.setImplementation(delegate);
|
// serviceTask.setImplementation(delegate);
|
||||||
|
|
||||||
// 配置重试策略
|
// 配置重试策略
|
||||||
ExtensionElement retryConfig = new ExtensionElement();
|
ExtensionElement retryConfig = new ExtensionElement();
|
||||||
@ -155,18 +155,18 @@ public class BpmnConverter {
|
|||||||
extensionElements.put("failedJobRetryTimeCycle", retryElements);
|
extensionElements.put("failedJobRetryTimeCycle", retryElements);
|
||||||
|
|
||||||
// 添加字段注入
|
// 添加字段注入
|
||||||
List<FieldExtension> fieldExtensions = new ArrayList<>();
|
// List<FieldExtension> fieldExtensions = new ArrayList<>();
|
||||||
node.getLocalVariables().forEach((key, value) -> {
|
// node.getLocalVariables().forEach((key, value) -> {
|
||||||
if (value != null && !"delegate".equals(key)) {
|
// if (value != null && !"delegate".equals(key)) {
|
||||||
FieldExtension fieldExtension = new FieldExtension();
|
// FieldExtension fieldExtension = new FieldExtension();
|
||||||
fieldExtension.setFieldName(key);
|
// fieldExtension.setFieldName(key);
|
||||||
fieldExtension.setStringValue(String.valueOf(value));
|
// fieldExtension.setStringValue(String.valueOf(value));
|
||||||
fieldExtensions.add(fieldExtension);
|
// fieldExtensions.add(fieldExtension);
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
|
|
||||||
// 设置到服务任务
|
// 设置到服务任务
|
||||||
serviceTask.setFieldExtensions(fieldExtensions);
|
// serviceTask.setFieldExtensions(fieldExtensions);
|
||||||
serviceTask.setExtensionElements(extensionElements);
|
serviceTask.setExtensionElements(extensionElements);
|
||||||
|
|
||||||
// 添加错误边界事件
|
// 添加错误边界事件
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user