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