添加通知管理功能
This commit is contained in:
parent
6eb5a83f58
commit
3003bb6abe
@ -1,5 +1,6 @@
|
|||||||
package com.qqchen.deploy.backend.workflow.dto;
|
package com.qqchen.deploy.backend.workflow.dto;
|
||||||
|
|
||||||
|
import com.qqchen.deploy.backend.workflow.dto.definition.workflow.WorkflowDefinitionGraph;
|
||||||
import com.qqchen.deploy.backend.workflow.enums.WorkflowInstanceStatusEnums;
|
import com.qqchen.deploy.backend.workflow.enums.WorkflowInstanceStatusEnums;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@ -9,6 +10,14 @@ import java.util.List;
|
|||||||
@Data
|
@Data
|
||||||
public class WorkflowHistoricalInstancesDTO extends WorkflowInstanceDTO {
|
public class WorkflowHistoricalInstancesDTO extends WorkflowInstanceDTO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 节点执行阶段列表
|
||||||
|
*/
|
||||||
private List<WorkflowNodeInstanceDTO> stages;
|
private List<WorkflowNodeInstanceDTO> stages;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 流程图数据(画布快照)
|
||||||
|
*/
|
||||||
|
private WorkflowDefinitionGraph graph;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1,6 +1,8 @@
|
|||||||
package com.qqchen.deploy.backend.workflow.entity;
|
package com.qqchen.deploy.backend.workflow.entity;
|
||||||
|
|
||||||
import com.qqchen.deploy.backend.framework.domain.Entity;
|
import com.qqchen.deploy.backend.framework.domain.Entity;
|
||||||
|
import com.qqchen.deploy.backend.workflow.dto.definition.workflow.WorkflowDefinitionGraph;
|
||||||
|
import com.qqchen.deploy.backend.workflow.entity.converter.WorkflowGraphType;
|
||||||
import com.qqchen.deploy.backend.workflow.enums.WorkflowInstanceStatusEnums;
|
import com.qqchen.deploy.backend.workflow.enums.WorkflowInstanceStatusEnums;
|
||||||
import jakarta.persistence.Column;
|
import jakarta.persistence.Column;
|
||||||
import jakarta.persistence.EnumType;
|
import jakarta.persistence.EnumType;
|
||||||
@ -8,6 +10,7 @@ import jakarta.persistence.Enumerated;
|
|||||||
import jakarta.persistence.Table;
|
import jakarta.persistence.Table;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
import org.hibernate.annotations.Type;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
@ -54,6 +57,13 @@ public class WorkflowInstance extends Entity<Long> {
|
|||||||
@Column(columnDefinition = "TEXT")
|
@Column(columnDefinition = "TEXT")
|
||||||
private String variables;
|
private String variables;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 流程图数据快照(启动时保存,用于画布还原)
|
||||||
|
*/
|
||||||
|
@Type(WorkflowGraphType.class)
|
||||||
|
@Column(name = "graph_snapshot", columnDefinition = "json")
|
||||||
|
private WorkflowDefinitionGraph graphSnapshot;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 开始时间
|
* 开始时间
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -78,14 +78,24 @@ public class WorkflowInstanceServiceImpl extends BaseServiceImpl<WorkflowInstanc
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WorkflowInstanceDTO createWorkflowInstance(Long workflowDefinitionId, String businessKey, ProcessInstance processInstance) {
|
public WorkflowInstanceDTO createWorkflowInstance(Long workflowDefinitionId, String businessKey, ProcessInstance processInstance) {
|
||||||
|
// 1. 查询流程定义,获取 graph 快照
|
||||||
|
WorkflowDefinition definition = workflowDefinitionRepository.findById(workflowDefinitionId)
|
||||||
|
.orElseThrow(() -> new RuntimeException("Workflow definition not found: " + workflowDefinitionId));
|
||||||
|
|
||||||
|
// 2. 创建实例并保存 graph 快照
|
||||||
WorkflowInstance workflowInstance = new WorkflowInstance();
|
WorkflowInstance workflowInstance = new WorkflowInstance();
|
||||||
workflowInstance.setProcessInstanceId(processInstance.getId());
|
workflowInstance.setProcessInstanceId(processInstance.getId());
|
||||||
workflowInstance.setProcessDefinitionId(processInstance.getProcessDefinitionId());
|
workflowInstance.setProcessDefinitionId(processInstance.getProcessDefinitionId());
|
||||||
workflowInstance.setWorkflowDefinitionId(workflowDefinitionId);
|
workflowInstance.setWorkflowDefinitionId(workflowDefinitionId);
|
||||||
workflowInstance.setBusinessKey(businessKey);
|
workflowInstance.setBusinessKey(businessKey);
|
||||||
|
workflowInstance.setGraphSnapshot(definition.getGraph()); // ✅ 保存画布数据快照
|
||||||
workflowInstance.setStatus(WorkflowInstanceStatusEnums.NOT_STARTED);
|
workflowInstance.setStatus(WorkflowInstanceStatusEnums.NOT_STARTED);
|
||||||
workflowInstance.setStartTime(LocalDateTime.now());
|
workflowInstance.setStartTime(LocalDateTime.now());
|
||||||
workflowInstanceRepository.save(workflowInstance);
|
workflowInstanceRepository.save(workflowInstance);
|
||||||
|
|
||||||
|
log.info("创建工作流实例: instanceId={}, definitionId={}, graph已保存",
|
||||||
|
workflowInstance.getId(), workflowDefinitionId);
|
||||||
|
|
||||||
// 3. 返回创建结果
|
// 3. 返回创建结果
|
||||||
return workflowInstanceConverter.toDto(workflowInstance);
|
return workflowInstanceConverter.toDto(workflowInstance);
|
||||||
}
|
}
|
||||||
@ -217,6 +227,10 @@ public class WorkflowInstanceServiceImpl extends BaseServiceImpl<WorkflowInstanc
|
|||||||
List<WorkflowHistoricalInstancesDTO> result = new ArrayList<>();
|
List<WorkflowHistoricalInstancesDTO> result = new ArrayList<>();
|
||||||
workflowInstances.getContent().stream().map(workflowInstance -> {
|
workflowInstances.getContent().stream().map(workflowInstance -> {
|
||||||
WorkflowHistoricalInstancesDTO workflowHistoricalInstancesDTO = workflowInstanceConverter.toWorkflowHistoricalInstancesDTO(workflowInstance);
|
WorkflowHistoricalInstancesDTO workflowHistoricalInstancesDTO = workflowInstanceConverter.toWorkflowHistoricalInstancesDTO(workflowInstance);
|
||||||
|
|
||||||
|
// ✅ 设置画布数据快照(从实例中读取,无需查询定义)
|
||||||
|
workflowHistoricalInstancesDTO.setGraph(workflowInstance.getGraphSnapshot());
|
||||||
|
|
||||||
BpmnModel bpmnModel = repositoryService.getBpmnModel(workflowInstance.getProcessDefinitionId());
|
BpmnModel bpmnModel = repositoryService.getBpmnModel(workflowInstance.getProcessDefinitionId());
|
||||||
Process process = bpmnModel.getMainProcess();
|
Process process = bpmnModel.getMainProcess();
|
||||||
//排序
|
//排序
|
||||||
|
|||||||
@ -202,11 +202,11 @@ INSERT INTO workflow_definition (
|
|||||||
-- 基础信息
|
-- 基础信息
|
||||||
name, `key`, process_definition_id, flow_version, description, category, triggers,
|
name, `key`, process_definition_id, flow_version, description, category, triggers,
|
||||||
-- 流程配置
|
-- 流程配置
|
||||||
graph, local_variables_schema, tags,
|
graph, tags,
|
||||||
-- 流程属性
|
-- 流程属性
|
||||||
status, is_executable, target_namespace,
|
status,
|
||||||
-- 审计字段
|
-- 审计字段
|
||||||
created_at, updated_at, created_by, updated_by, is_deleted
|
create_time, update_time, create_by, update_by, deleted, version
|
||||||
) VALUES
|
) VALUES
|
||||||
-- 简单脚本流程:开始 -> 脚本任务 -> 结束
|
-- 简单脚本流程:开始 -> 脚本任务 -> 结束
|
||||||
(
|
(
|
||||||
@ -371,10 +371,9 @@ INSERT INTO workflow_definition (
|
|||||||
"properties" : null
|
"properties" : null
|
||||||
} ]
|
} ]
|
||||||
}',
|
}',
|
||||||
'{"formItems":[]}',
|
|
||||||
'["simple","script","test"]',
|
'["simple","script","test"]',
|
||||||
'DRAFT', TRUE, 'http://www.flowable.org/test',
|
'DRAFT',
|
||||||
NOW(), NOW(), 1, 1, FALSE
|
NOW(), NOW(), NULL, NULL, 0, 0
|
||||||
),
|
),
|
||||||
|
|
||||||
-- 复杂业务流程:开始 -> 脚本任务A -> 脚本任务B -> 结束
|
-- 复杂业务流程:开始 -> 脚本任务A -> 脚本任务B -> 结束
|
||||||
@ -603,10 +602,9 @@ INSERT INTO workflow_definition (
|
|||||||
"properties" : null
|
"properties" : null
|
||||||
} ]
|
} ]
|
||||||
}',
|
}',
|
||||||
'{"formItems":[{"type":"input","label":"业务参数","name":"businessParam","required":true}]}',
|
|
||||||
'["complex","business","multi-task"]',
|
'["complex","business","multi-task"]',
|
||||||
'DRAFT', TRUE, 'http://www.flowable.org/test',
|
'DRAFT',
|
||||||
NOW(), NOW(), 1, 1, FALSE
|
NOW(), NOW(), NULL, NULL, 0, 0
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -389,20 +389,18 @@ CREATE TABLE workflow_definition
|
|||||||
-- 流程配置
|
-- 流程配置
|
||||||
bpmn_xml TEXT COMMENT 'BPMN XML内容',
|
bpmn_xml TEXT COMMENT 'BPMN XML内容',
|
||||||
graph JSON COMMENT '流程图数据,包含节点和连线的位置、样式等信息',
|
graph JSON COMMENT '流程图数据,包含节点和连线的位置、样式等信息',
|
||||||
local_variables_schema JSON COMMENT '节点变量Schema',
|
|
||||||
tags JSON COMMENT '流程标签',
|
tags JSON COMMENT '流程标签',
|
||||||
|
|
||||||
-- 流程属性
|
-- 流程属性
|
||||||
status VARCHAR(50) NOT NULL COMMENT '流程状态(DRAFT-草稿、PUBLISHED-已发布、DISABLED-已禁用)',
|
status VARCHAR(50) NOT NULL COMMENT '流程状态(DRAFT-草稿、PUBLISHED-已发布、DISABLED-已禁用)',
|
||||||
is_executable BOOLEAN NOT NULL DEFAULT TRUE COMMENT '是否可执行',
|
|
||||||
target_namespace VARCHAR(255) DEFAULT 'http://www.flowable.org/test' COMMENT '目标命名空间',
|
|
||||||
|
|
||||||
-- 审计字段
|
-- 审计字段
|
||||||
created_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) COMMENT '创建时间',
|
create_by VARCHAR(255) NULL COMMENT '创建人',
|
||||||
updated_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6) COMMENT '更新时间',
|
create_time DATETIME(6) NULL COMMENT '创建时间',
|
||||||
created_by BIGINT COMMENT '创建人',
|
deleted BIT NOT NULL DEFAULT 0 COMMENT '是否删除(0:未删除,1:已删除)',
|
||||||
updated_by BIGINT COMMENT '更新人',
|
update_by VARCHAR(255) NULL COMMENT '更新人',
|
||||||
is_deleted BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否删除',
|
update_time DATETIME(6) NULL COMMENT '更新时间',
|
||||||
|
version INT NOT NULL DEFAULT 0 COMMENT '乐观锁版本号',
|
||||||
|
|
||||||
-- 约束
|
-- 约束
|
||||||
UNIQUE KEY uk_key_version (`key`, flow_version)
|
UNIQUE KEY uk_key_version (`key`, flow_version)
|
||||||
@ -454,6 +452,7 @@ CREATE TABLE workflow_instance
|
|||||||
business_key VARCHAR(64) NULL COMMENT '业务标识',
|
business_key VARCHAR(64) NULL COMMENT '业务标识',
|
||||||
status VARCHAR(100) NOT NULL COMMENT '实例状态',
|
status VARCHAR(100) NOT NULL COMMENT '实例状态',
|
||||||
variables TEXT NULL COMMENT '流程变量(JSON)',
|
variables TEXT NULL COMMENT '流程变量(JSON)',
|
||||||
|
graph_snapshot JSON NULL COMMENT '流程图数据快照(启动时保存,用于画布还原)',
|
||||||
start_time DATETIME(6) NULL COMMENT '开始时间',
|
start_time DATETIME(6) NULL COMMENT '开始时间',
|
||||||
end_time DATETIME(6) NULL COMMENT '结束时间'
|
end_time DATETIME(6) NULL COMMENT '结束时间'
|
||||||
|
|
||||||
|
|||||||
@ -27,4 +27,3 @@ databaseChangeLog:
|
|||||||
endDelimiter: ";"
|
endDelimiter: ";"
|
||||||
rollback:
|
rollback:
|
||||||
- empty
|
- empty
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user