1
This commit is contained in:
parent
ccac93e4a8
commit
42fde0d2d2
@ -67,22 +67,6 @@ public class WorkflowDefinitionApiController extends BaseController<WorkflowDefi
|
|||||||
// return Response.success(workflowDefinitionService.deployWorkflow(dto));
|
// return Response.success(workflowDefinitionService.deployWorkflow(dto));
|
||||||
// }
|
// }
|
||||||
|
|
||||||
@Operation(summary = "启动工作流实例")
|
|
||||||
@PostMapping("/start")
|
|
||||||
public Response<WorkflowInstanceDTO> startWorkflow(
|
|
||||||
@Parameter(description = "流程标识", required = true) @RequestParam String processKey,
|
|
||||||
@Parameter(description = "业务标识", required = true) @RequestParam String businessKey
|
|
||||||
) {
|
|
||||||
Map<String, Object> variables = new HashMap<>();
|
|
||||||
try {
|
|
||||||
// 同步创建实例,立即返回实例ID
|
|
||||||
return Response.success(workflowDefinitionService.startWorkflow(processKey, businessKey, variables));
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("Failed to start workflow", e);
|
|
||||||
return Response.error(ResponseCode.WORKFLOW_EXECUTION_ERROR);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Operation(summary = "挂起工作流实例")
|
@Operation(summary = "挂起工作流实例")
|
||||||
@PostMapping("/{processInstanceId}/suspend")
|
@PostMapping("/{processInstanceId}/suspend")
|
||||||
public Response<Void> suspendWorkflow(
|
public Response<Void> suspendWorkflow(
|
||||||
|
|||||||
@ -0,0 +1,63 @@
|
|||||||
|
package com.qqchen.deploy.backend.workflow.api;
|
||||||
|
|
||||||
|
import com.qqchen.deploy.backend.framework.api.Response;
|
||||||
|
import com.qqchen.deploy.backend.framework.controller.BaseController;
|
||||||
|
import com.qqchen.deploy.backend.framework.enums.ResponseCode;
|
||||||
|
import com.qqchen.deploy.backend.workflow.dto.WorkflowDefinitionDTO;
|
||||||
|
import com.qqchen.deploy.backend.workflow.dto.WorkflowExecutionDTO;
|
||||||
|
import com.qqchen.deploy.backend.workflow.dto.WorkflowInstanceDTO;
|
||||||
|
import com.qqchen.deploy.backend.workflow.entity.WorkflowDefinition;
|
||||||
|
import com.qqchen.deploy.backend.workflow.entity.WorkflowInstance;
|
||||||
|
import com.qqchen.deploy.backend.workflow.query.WorkflowDefinitionQuery;
|
||||||
|
import com.qqchen.deploy.backend.workflow.query.WorkflowInstanceQuery;
|
||||||
|
import com.qqchen.deploy.backend.workflow.service.IWorkflowDefinitionService;
|
||||||
|
import com.qqchen.deploy.backend.workflow.service.IWorkflowInstanceService;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.flowable.engine.HistoryService;
|
||||||
|
import org.flowable.engine.RuntimeService;
|
||||||
|
import org.flowable.engine.history.HistoricActivityInstance;
|
||||||
|
import org.flowable.engine.history.HistoricProcessInstance;
|
||||||
|
import org.flowable.variable.api.history.HistoricVariableInstance;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工作流定义控制器
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/v1/workflow/instance")
|
||||||
|
@Tag(name = "工作流实例管理", description = "工作流定义实例相关接口")
|
||||||
|
public class WorkflowInstanceApiController extends BaseController<WorkflowInstance, WorkflowInstanceDTO, Long, WorkflowInstanceQuery> {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IWorkflowInstanceService workflowInstanceService;
|
||||||
|
|
||||||
|
@Operation(summary = "启动工作流")
|
||||||
|
@PostMapping("/start")
|
||||||
|
public Response<WorkflowInstanceDTO> startWorkflow(
|
||||||
|
@RequestParam String processKey,
|
||||||
|
@RequestParam String businessKey) {
|
||||||
|
return Response.success(workflowInstanceService.startWorkflow(processKey, businessKey));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void exportData(HttpServletResponse response, List<WorkflowInstanceDTO> data) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -10,11 +10,6 @@ import lombok.Getter;
|
|||||||
@Getter
|
@Getter
|
||||||
public enum WorkflowInstanceStatusEnums {
|
public enum WorkflowInstanceStatusEnums {
|
||||||
|
|
||||||
/**
|
|
||||||
* 未开始:节点尚未开始执行
|
|
||||||
*/
|
|
||||||
NOT_STARTED("NOT_STARTED", "未开始"),
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 已创建:流程实例已创建但还未开始运行
|
* 已创建:流程实例已创建但还未开始运行
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -0,0 +1,15 @@
|
|||||||
|
package com.qqchen.deploy.backend.workflow.query;
|
||||||
|
|
||||||
|
import com.qqchen.deploy.backend.framework.query.BaseQuery;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工作流定义查询对象
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
public class WorkflowInstanceQuery extends BaseQuery {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@ -1,5 +1,6 @@
|
|||||||
package com.qqchen.deploy.backend.workflow.repository;
|
package com.qqchen.deploy.backend.workflow.repository;
|
||||||
|
|
||||||
|
import com.qqchen.deploy.backend.framework.repository.IBaseRepository;
|
||||||
import com.qqchen.deploy.backend.workflow.entity.WorkflowInstance;
|
import com.qqchen.deploy.backend.workflow.entity.WorkflowInstance;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
@ -8,7 +9,7 @@ import java.util.List;
|
|||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
public interface IWorkflowInstanceRepository extends JpaRepository<WorkflowInstance, Long> {
|
public interface IWorkflowInstanceRepository extends IBaseRepository<WorkflowInstance, Long> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据Flowable流程实例ID查询工作流实例
|
* 根据Flowable流程实例ID查询工作流实例
|
||||||
|
|||||||
@ -28,16 +28,6 @@ public interface IWorkflowDefinitionService extends IBaseService<WorkflowDefinit
|
|||||||
*/
|
*/
|
||||||
Deployment deployWorkflow(WorkflowDefinition workflowDefinition);
|
Deployment deployWorkflow(WorkflowDefinition workflowDefinition);
|
||||||
|
|
||||||
/**
|
|
||||||
* 启动工作流实例
|
|
||||||
*
|
|
||||||
* @param processKey 流程标识
|
|
||||||
* @param businessKey 业务标识
|
|
||||||
* @param variables 流程变量
|
|
||||||
* @return 流程实例
|
|
||||||
*/
|
|
||||||
WorkflowInstanceDTO startWorkflow(String processKey, String businessKey, Map<String, Object> variables);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 挂起工作流实例
|
* 挂起工作流实例
|
||||||
*
|
*
|
||||||
|
|||||||
@ -1,6 +1,9 @@
|
|||||||
package com.qqchen.deploy.backend.workflow.service;
|
package com.qqchen.deploy.backend.workflow.service;
|
||||||
|
|
||||||
|
import com.qqchen.deploy.backend.framework.service.IBaseService;
|
||||||
|
import com.qqchen.deploy.backend.workflow.dto.WorkflowDefinitionDTO;
|
||||||
import com.qqchen.deploy.backend.workflow.dto.WorkflowInstanceDTO;
|
import com.qqchen.deploy.backend.workflow.dto.WorkflowInstanceDTO;
|
||||||
|
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.enums.WorkflowInstanceStatusEnums;
|
import com.qqchen.deploy.backend.workflow.enums.WorkflowInstanceStatusEnums;
|
||||||
import org.flowable.engine.runtime.ProcessInstance;
|
import org.flowable.engine.runtime.ProcessInstance;
|
||||||
@ -8,7 +11,7 @@ import org.flowable.engine.runtime.ProcessInstance;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public interface IWorkflowInstanceService {
|
public interface IWorkflowInstanceService extends IBaseService<WorkflowInstance, WorkflowInstanceDTO, Long> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建工作流实例并关联Flowable实例
|
* 创建工作流实例并关联Flowable实例
|
||||||
@ -50,4 +53,6 @@ public interface IWorkflowInstanceService {
|
|||||||
* @param variables 完成时的变量
|
* @param variables 完成时的变量
|
||||||
*/
|
*/
|
||||||
void completeInstance(String processInstanceId, Map<String, Object> variables);
|
void completeInstance(String processInstanceId, Map<String, Object> variables);
|
||||||
|
|
||||||
|
WorkflowInstanceDTO startWorkflow(String processKey, String businessKey);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -102,24 +102,6 @@ public class WorkflowDefinitionServiceImpl extends BaseServiceImpl<WorkflowDefin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
|
||||||
public WorkflowInstanceDTO startWorkflow(String processKey, String businessKey, Map<String, Object> variables) {
|
|
||||||
try {
|
|
||||||
// 2. 创建工作流实例记录
|
|
||||||
WorkflowDefinition workflowDefinition = workflowDefinitionRepository.findByKey(processKey).orElseThrow(() -> new RuntimeException("Workflow definition process key not found: " + processKey));
|
|
||||||
// 1. 创建并异步启动流程实例
|
|
||||||
ProcessInstance processInstance = runtimeService.createProcessInstanceBuilder()
|
|
||||||
.processDefinitionKey(processKey)
|
|
||||||
.businessKey(businessKey)
|
|
||||||
.variables(variables)
|
|
||||||
.startAsync(); // 异步启动,会自动执行 shell 任务
|
|
||||||
return workflowInstanceService.createWorkflowInstance(workflowDefinition.getId(), businessKey, processInstance);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("Failed to create workflow: {}", processKey, e);
|
|
||||||
throw new RuntimeException("Failed to create workflow", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void suspendWorkflow(String processInstanceId) {
|
public void suspendWorkflow(String processInstanceId) {
|
||||||
|
|||||||
@ -2,11 +2,16 @@ package com.qqchen.deploy.backend.workflow.service.impl;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import com.qqchen.deploy.backend.framework.service.impl.BaseServiceImpl;
|
||||||
import com.qqchen.deploy.backend.workflow.converter.WorkflowInstanceConverter;
|
import com.qqchen.deploy.backend.workflow.converter.WorkflowInstanceConverter;
|
||||||
|
import com.qqchen.deploy.backend.workflow.dto.WorkflowDefinitionDTO;
|
||||||
import com.qqchen.deploy.backend.workflow.dto.WorkflowInstanceDTO;
|
import com.qqchen.deploy.backend.workflow.dto.WorkflowInstanceDTO;
|
||||||
|
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.enums.WorkflowInstanceStatusEnums;
|
import com.qqchen.deploy.backend.workflow.enums.WorkflowInstanceStatusEnums;
|
||||||
|
import com.qqchen.deploy.backend.workflow.repository.IWorkflowDefinitionRepository;
|
||||||
import com.qqchen.deploy.backend.workflow.repository.IWorkflowInstanceRepository;
|
import com.qqchen.deploy.backend.workflow.repository.IWorkflowInstanceRepository;
|
||||||
|
import com.qqchen.deploy.backend.workflow.service.IWorkflowDefinitionService;
|
||||||
import com.qqchen.deploy.backend.workflow.service.IWorkflowInstanceService;
|
import com.qqchen.deploy.backend.workflow.service.IWorkflowInstanceService;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@ -24,22 +29,27 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
public class WorkflowInstanceServiceImpl extends BaseServiceImpl<WorkflowInstance, WorkflowInstanceDTO, Long> implements IWorkflowInstanceService {
|
||||||
public class WorkflowInstanceServiceImpl implements IWorkflowInstanceService {
|
|
||||||
|
|
||||||
private final IWorkflowInstanceRepository workflowInstanceRepository;
|
@Resource
|
||||||
|
private IWorkflowDefinitionRepository workflowDefinitionRepository;
|
||||||
|
|
||||||
private final RuntimeService runtimeService;
|
@Resource
|
||||||
|
private IWorkflowInstanceRepository workflowInstanceRepository;
|
||||||
|
|
||||||
private final HistoryService historyService;
|
@Resource
|
||||||
|
private RuntimeService runtimeService;
|
||||||
|
|
||||||
private final ObjectMapper objectMapper;
|
@Resource
|
||||||
|
private HistoryService historyService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ObjectMapper objectMapper;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private WorkflowInstanceConverter workflowInstanceConverter;
|
private WorkflowInstanceConverter workflowInstanceConverter;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
|
||||||
public WorkflowInstanceDTO createWorkflowInstance(Long workflowDefinitionId, String businessKey, ProcessInstance processInstance) {
|
public WorkflowInstanceDTO createWorkflowInstance(Long workflowDefinitionId, String businessKey, ProcessInstance processInstance) {
|
||||||
WorkflowInstance workflowInstance = new WorkflowInstance();
|
WorkflowInstance workflowInstance = new WorkflowInstance();
|
||||||
workflowInstance.setProcessInstanceId(processInstance.getId());
|
workflowInstance.setProcessInstanceId(processInstance.getId());
|
||||||
@ -139,6 +149,22 @@ public class WorkflowInstanceServiceImpl implements IWorkflowInstanceService {
|
|||||||
workflowInstanceRepository.save(instance);
|
workflowInstanceRepository.save(instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public WorkflowInstanceDTO startWorkflow(String processKey, String businessKey) {
|
||||||
|
try {
|
||||||
|
WorkflowDefinition workflowDefinition = workflowDefinitionRepository.findByKey(processKey).orElseThrow(() -> new RuntimeException("Workflow definition process key not found: " + processKey));
|
||||||
|
ProcessInstance processInstance = runtimeService.createProcessInstanceBuilder()
|
||||||
|
.processDefinitionKey(processKey)
|
||||||
|
.businessKey(businessKey)
|
||||||
|
.startAsync(); // 异步启动,会自动执行 shell 任务
|
||||||
|
return createWorkflowInstance(workflowDefinition.getId(), businessKey, processInstance);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("Failed to create workflow: {}", processKey, e);
|
||||||
|
throw new RuntimeException("Failed to create workflow", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// private WorkflowInstanceDTO.ActivityInstance convertToActivityInstance(HistoricActivityInstance hai) {
|
// private WorkflowInstanceDTO.ActivityInstance convertToActivityInstance(HistoricActivityInstance hai) {
|
||||||
// WorkflowInstanceDTO.ActivityInstance ai = new WorkflowInstanceDTO.ActivityInstance();
|
// WorkflowInstanceDTO.ActivityInstance ai = new WorkflowInstanceDTO.ActivityInstance();
|
||||||
// ai.setId(hai.getId());
|
// ai.setId(hai.getId());
|
||||||
|
|||||||
@ -3,65 +3,26 @@
|
|||||||
-- --------------------------------------------------------------------------------------
|
-- --------------------------------------------------------------------------------------
|
||||||
|
|
||||||
-- 租户表
|
-- 租户表
|
||||||
CREATE TABLE IF NOT EXISTS sys_tenant
|
CREATE TABLE sys_tenant (
|
||||||
(
|
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
|
||||||
id
|
create_by VARCHAR(255) NULL COMMENT '创建人',
|
||||||
BIGINT
|
create_time DATETIME(6) NULL COMMENT '创建时间',
|
||||||
AUTO_INCREMENT
|
|
||||||
PRIMARY
|
|
||||||
KEY
|
|
||||||
COMMENT
|
|
||||||
'主键ID',
|
|
||||||
create_by
|
|
||||||
VARCHAR
|
|
||||||
(
|
|
||||||
255
|
|
||||||
) NULL COMMENT '创建人',
|
|
||||||
create_time DATETIME
|
|
||||||
(
|
|
||||||
6
|
|
||||||
) NULL COMMENT '创建时间',
|
|
||||||
deleted BIT NOT NULL DEFAULT 0 COMMENT '是否删除(0:未删除,1:已删除)',
|
deleted BIT NOT NULL DEFAULT 0 COMMENT '是否删除(0:未删除,1:已删除)',
|
||||||
update_by VARCHAR
|
update_by VARCHAR(255) NULL COMMENT '更新人',
|
||||||
(
|
update_time DATETIME(6) NULL COMMENT '更新时间',
|
||||||
255
|
|
||||||
) NULL COMMENT '更新人',
|
|
||||||
update_time DATETIME
|
|
||||||
(
|
|
||||||
6
|
|
||||||
) NULL COMMENT '更新时间',
|
|
||||||
version INT NOT NULL DEFAULT 0 COMMENT '乐观锁版本号',
|
version INT NOT NULL DEFAULT 0 COMMENT '乐观锁版本号',
|
||||||
|
|
||||||
code VARCHAR
|
code VARCHAR(50) NOT NULL COMMENT '租户编码',
|
||||||
(
|
name VARCHAR(100) NOT NULL COMMENT '租户名称',
|
||||||
50
|
address VARCHAR(255) NULL COMMENT '租户地址',
|
||||||
) NOT NULL COMMENT '租户编码',
|
contact_name VARCHAR(50) NULL COMMENT '联系人姓名',
|
||||||
NAME VARCHAR
|
contact_phone VARCHAR(20) NULL COMMENT '联系人电话',
|
||||||
(
|
email VARCHAR(100) NULL COMMENT '联系人邮箱',
|
||||||
100
|
|
||||||
) NOT NULL COMMENT '租户名称',
|
|
||||||
address VARCHAR
|
|
||||||
(
|
|
||||||
255
|
|
||||||
) NULL COMMENT '租户地址',
|
|
||||||
contact_name VARCHAR
|
|
||||||
(
|
|
||||||
50
|
|
||||||
) NULL COMMENT '联系人姓名',
|
|
||||||
contact_phone VARCHAR
|
|
||||||
(
|
|
||||||
20
|
|
||||||
) NULL COMMENT '联系人电话',
|
|
||||||
email VARCHAR
|
|
||||||
(
|
|
||||||
100
|
|
||||||
) NULL COMMENT '联系人邮箱',
|
|
||||||
enabled BIT NOT NULL DEFAULT 1 COMMENT '是否启用(0:禁用,1:启用)',
|
enabled BIT NOT NULL DEFAULT 1 COMMENT '是否启用(0:禁用,1:启用)',
|
||||||
CONSTRAINT UK_tenant_code UNIQUE
|
|
||||||
(
|
CONSTRAINT UK_tenant_code UNIQUE (code)
|
||||||
code
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='租户表';
|
||||||
)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE =utf8mb4_unicode_ci COMMENT='租户表';
|
|
||||||
|
|
||||||
-- 部门表
|
-- 部门表
|
||||||
CREATE TABLE sys_department
|
CREATE TABLE sys_department
|
||||||
@ -87,69 +48,26 @@ CREATE TABLE sys_department
|
|||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='部门表';
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='部门表';
|
||||||
|
|
||||||
-- 用户表
|
-- 用户表
|
||||||
CREATE TABLE IF NOT EXISTS sys_user
|
CREATE TABLE sys_user (
|
||||||
(
|
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
|
||||||
id
|
create_by VARCHAR(255) NULL COMMENT '创建人',
|
||||||
BIGINT
|
create_time DATETIME(6) NULL COMMENT '创建时间',
|
||||||
AUTO_INCREMENT
|
|
||||||
PRIMARY
|
|
||||||
KEY
|
|
||||||
COMMENT
|
|
||||||
'主键ID',
|
|
||||||
create_by
|
|
||||||
VARCHAR
|
|
||||||
(
|
|
||||||
255
|
|
||||||
) NULL COMMENT '创建人',
|
|
||||||
create_time DATETIME
|
|
||||||
(
|
|
||||||
6
|
|
||||||
) NULL COMMENT '创建时间',
|
|
||||||
deleted BIT NOT NULL DEFAULT 0 COMMENT '是否删除(0:未删除,1:已删除)',
|
deleted BIT NOT NULL DEFAULT 0 COMMENT '是否删除(0:未删除,1:已删除)',
|
||||||
update_by VARCHAR
|
update_by VARCHAR(255) NULL COMMENT '更新人',
|
||||||
(
|
update_time DATETIME(6) NULL COMMENT '更新时间',
|
||||||
255
|
|
||||||
) NULL COMMENT '更新人',
|
|
||||||
update_time DATETIME
|
|
||||||
(
|
|
||||||
6
|
|
||||||
) NULL COMMENT '更新时间',
|
|
||||||
version INT NOT NULL DEFAULT 0 COMMENT '乐观锁版本号',
|
version INT NOT NULL DEFAULT 0 COMMENT '乐观锁版本号',
|
||||||
|
|
||||||
username VARCHAR
|
username VARCHAR(50) NOT NULL COMMENT '用户名',
|
||||||
(
|
password VARCHAR(255) NOT NULL COMMENT '密码',
|
||||||
50
|
nickname VARCHAR(50) NULL COMMENT '昵称',
|
||||||
) NOT NULL COMMENT '用户名',
|
email VARCHAR(100) NULL COMMENT '邮箱',
|
||||||
password VARCHAR
|
phone VARCHAR(20) NULL COMMENT '手机号',
|
||||||
(
|
|
||||||
255
|
|
||||||
) NOT NULL COMMENT '密码',
|
|
||||||
nickname VARCHAR
|
|
||||||
(
|
|
||||||
50
|
|
||||||
) NULL COMMENT '昵称',
|
|
||||||
email VARCHAR
|
|
||||||
(
|
|
||||||
100
|
|
||||||
) NULL COMMENT '邮箱',
|
|
||||||
phone VARCHAR
|
|
||||||
(
|
|
||||||
20
|
|
||||||
) NULL COMMENT '手机号',
|
|
||||||
department_id BIGINT NULL COMMENT '所属部门ID',
|
department_id BIGINT NULL COMMENT '所属部门ID',
|
||||||
enabled BIT NOT NULL DEFAULT 1 COMMENT '是否启用(0:禁用,1:启用)',
|
enabled BIT NOT NULL DEFAULT 1 COMMENT '是否启用(0:禁用,1:启用)',
|
||||||
CONSTRAINT UK_user_username UNIQUE
|
|
||||||
(
|
CONSTRAINT UK_user_username UNIQUE (username),
|
||||||
username
|
CONSTRAINT FK_user_department FOREIGN KEY (department_id) REFERENCES sys_department(id)
|
||||||
),
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
|
||||||
CONSTRAINT FK_user_department FOREIGN KEY
|
|
||||||
(
|
|
||||||
department_id
|
|
||||||
) REFERENCES sys_department
|
|
||||||
(
|
|
||||||
id
|
|
||||||
)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE =utf8mb4_unicode_ci COMMENT='用户表';
|
|
||||||
|
|
||||||
-- 系统参数表
|
-- 系统参数表
|
||||||
CREATE TABLE sys_param
|
CREATE TABLE sys_param
|
||||||
@ -518,6 +436,27 @@ CREATE TABLE workflow_definition
|
|||||||
DEFAULT CHARSET = utf8mb4
|
DEFAULT CHARSET = utf8mb4
|
||||||
COLLATE = utf8mb4_unicode_ci COMMENT ='工作流定义表';
|
COLLATE = utf8mb4_unicode_ci COMMENT ='工作流定义表';
|
||||||
|
|
||||||
|
-- 创建工作流节点定义表
|
||||||
|
CREATE TABLE workflow_node_definition
|
||||||
|
(
|
||||||
|
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||||
|
type VARCHAR(50) NOT NULL COMMENT '节点类型编码',
|
||||||
|
name VARCHAR(100) NOT NULL COMMENT '节点名称',
|
||||||
|
description VARCHAR(500) COMMENT '节点描述',
|
||||||
|
category VARCHAR(50) NOT NULL COMMENT '节点分类',
|
||||||
|
graph_config JSON NOT NULL COMMENT 'X6图形配置JSON',
|
||||||
|
order_num INT NOT NULL DEFAULT 0 COMMENT '排序号',
|
||||||
|
enabled BOOLEAN NOT NULL DEFAULT TRUE COMMENT '是否启用',
|
||||||
|
create_time DATETIME NOT NULL COMMENT '创建时间',
|
||||||
|
create_by VARCHAR(50) NOT NULL COMMENT '创建人',
|
||||||
|
update_time DATETIME NOT NULL COMMENT '更新时间',
|
||||||
|
update_by VARCHAR(50) NOT NULL COMMENT '更新人',
|
||||||
|
version INT NOT NULL DEFAULT 1 COMMENT '版本号',
|
||||||
|
deleted BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (id),
|
||||||
|
UNIQUE KEY uk_type (TYPE)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='工作流节点定义表';
|
||||||
|
|
||||||
-- 工作流实例表
|
-- 工作流实例表
|
||||||
CREATE TABLE workflow_instance
|
CREATE TABLE workflow_instance
|
||||||
(
|
(
|
||||||
@ -586,23 +525,3 @@ CREATE TABLE workflow_log
|
|||||||
CONSTRAINT FK_workflow_log_node_instance FOREIGN KEY (node_instance_id) REFERENCES workflow_node_instance (id)
|
CONSTRAINT FK_workflow_log_node_instance FOREIGN KEY (node_instance_id) REFERENCES workflow_node_instance (id)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='工作流日志表';
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='工作流日志表';
|
||||||
|
|
||||||
-- 创建工作流节点定义表
|
|
||||||
CREATE TABLE workflow_node_definition
|
|
||||||
(
|
|
||||||
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
||||||
type VARCHAR(50) NOT NULL COMMENT '节点类型编码',
|
|
||||||
name VARCHAR(100) NOT NULL COMMENT '节点名称',
|
|
||||||
description VARCHAR(500) COMMENT '节点描述',
|
|
||||||
category VARCHAR(50) NOT NULL COMMENT '节点分类',
|
|
||||||
graph_config TEXT NOT NULL COMMENT 'X6图形配置JSON',
|
|
||||||
order_num INT NOT NULL DEFAULT 0 COMMENT '排序号',
|
|
||||||
enabled BOOLEAN NOT NULL DEFAULT TRUE COMMENT '是否启用',
|
|
||||||
create_time DATETIME NOT NULL COMMENT '创建时间',
|
|
||||||
create_by VARCHAR(50) NOT NULL COMMENT '创建人',
|
|
||||||
update_time DATETIME NOT NULL COMMENT '更新时间',
|
|
||||||
update_by VARCHAR(50) NOT NULL COMMENT '更新人',
|
|
||||||
version INT NOT NULL DEFAULT 1 COMMENT '版本号',
|
|
||||||
deleted BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否删除',
|
|
||||||
PRIMARY KEY (id),
|
|
||||||
UNIQUE KEY uk_type (TYPE)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='工作流节点定义表';
|
|
||||||
@ -670,244 +670,147 @@ VALUES
|
|||||||
}
|
}
|
||||||
}', 1);
|
}', 1);
|
||||||
|
|
||||||
-- 任务节点
|
|
||||||
-- INSERT INTO workflow_node_definition (id, create_time, create_by, update_time, update_by, type, name, description, category, graph_config, enabled)
|
|
||||||
-- VALUES
|
|
||||||
-- (3, NOW(),
|
|
||||||
-- 'system',
|
|
||||||
-- NOW(),
|
|
||||||
-- 'system', 'USER_TASK', '用户任务', '人工处理任务', 'TASK', '{
|
|
||||||
-- "code": "USER_TASK",
|
|
||||||
-- "name": "用户任务",
|
|
||||||
-- "description": "人工处理任务",
|
|
||||||
-- "details": {
|
|
||||||
-- "description": "需要人工处理的任务节点,支持任务分配、表单填写、处理期限等功能",
|
|
||||||
-- "features": ["分配任务给指定用户或角色", "支持任务表单的填写", "设置处理期限和提醒", "支持任务的转办、委托、退回"],
|
|
||||||
-- "scenarios": ["审批流程", "表单填写", "人工审核", "数据确认"]
|
|
||||||
-- },
|
|
||||||
-- "configSchema": {
|
|
||||||
-- "type": "object",
|
|
||||||
-- "properties": {
|
|
||||||
-- "code": {"type": "string", "title": "节点Code", "description": "工作流节点的Code"},
|
|
||||||
-- "name": {"type": "string", "title": "节点名称", "description": "工作流节点的显示名称"},
|
|
||||||
-- "description": {"type": "string", "title": "节点描述", "description": "工作流节点的详细描述"}
|
|
||||||
-- },
|
|
||||||
-- "required": ["code", "name"]
|
|
||||||
-- },
|
|
||||||
-- "uiSchema": {
|
|
||||||
-- "shape": "rect",
|
|
||||||
-- "size": {"width": 120, "height": 60},
|
|
||||||
-- "style": {
|
|
||||||
-- "fill": "#ffffff",
|
|
||||||
-- "stroke": "#1890ff",
|
|
||||||
-- "strokeWidth": 2,
|
|
||||||
-- "icon": "user",
|
|
||||||
-- "iconColor": "#1890ff"
|
|
||||||
-- },
|
|
||||||
-- "ports": {
|
|
||||||
-- "groups": {
|
|
||||||
-- "in": {
|
|
||||||
-- "position": "left",
|
|
||||||
-- "attrs": {
|
|
||||||
-- "circle": {
|
|
||||||
-- "r": 4,
|
|
||||||
-- "fill": "#ffffff",
|
|
||||||
-- "stroke": "#1890ff"
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- },
|
|
||||||
-- "out": {
|
|
||||||
-- "position": "right",
|
|
||||||
-- "attrs": {
|
|
||||||
-- "circle": {
|
|
||||||
-- "r": 4,
|
|
||||||
-- "fill": "#ffffff",
|
|
||||||
-- "stroke": "#1890ff"
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }', 1);
|
|
||||||
-- INSERT INTO workflow_node_definition (id, create_time, create_by, update_time, update_by, type, name, description, category, graph_config, enabled)
|
|
||||||
-- VALUES
|
|
||||||
-- (4, NOW(),
|
|
||||||
-- 'system',
|
|
||||||
-- NOW(),
|
|
||||||
-- 'system', 'SERVICE_TASK', '服务任务', '系统服务调用', 'TASK', '{
|
|
||||||
-- "code": "SERVICE_TASK",
|
|
||||||
-- "name": "服务任务",
|
|
||||||
-- "description": "系统服务调用",
|
|
||||||
-- "details": {
|
|
||||||
-- "description": "自动执行的系统服务任务,支持同步/异步调用外部服务和系统API",
|
|
||||||
-- "features": ["调用系统服务或外部接口", "执行自动化操作", "支持异步执行和结果回调", "数据转换和处理"],
|
|
||||||
-- "scenarios": ["调用外部系统API", "发送通知消息", "数据同步处理", "自动化操作"]
|
|
||||||
-- },
|
|
||||||
-- "configSchema": {
|
|
||||||
-- "type": "object",
|
|
||||||
-- "properties": {
|
|
||||||
-- "code": {"type": "string", "title": "节点Code", "description": "工作流节点的Code"},
|
|
||||||
-- "name": {"type": "string", "title": "节点名称", "description": "工作流节点的显示名称"},
|
|
||||||
-- "description": {"type": "string", "title": "节点描述", "description": "工作流节点的详细描述"}
|
|
||||||
-- },
|
|
||||||
-- "required": ["code", "name"]
|
|
||||||
-- },
|
|
||||||
-- "uiSchema": {
|
|
||||||
-- "shape": "rect",
|
|
||||||
-- "size": {"width": 120, "height": 60},
|
|
||||||
-- "style": {
|
|
||||||
-- "fill": "#ffffff",
|
|
||||||
-- "stroke": "#1890ff",
|
|
||||||
-- "strokeWidth": 2,
|
|
||||||
-- "icon": "api",
|
|
||||||
-- "iconColor": "#1890ff"
|
|
||||||
-- },
|
|
||||||
-- "ports": {
|
|
||||||
-- "groups": {
|
|
||||||
-- "in": {
|
|
||||||
-- "position": "left",
|
|
||||||
-- "attrs": {
|
|
||||||
-- "circle": {
|
|
||||||
-- "r": 4,
|
|
||||||
-- "fill": "#ffffff",
|
|
||||||
-- "stroke": "#1890ff"
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- },
|
|
||||||
-- "out": {
|
|
||||||
-- "position": "right",
|
|
||||||
-- "attrs": {
|
|
||||||
-- "circle": {
|
|
||||||
-- "r": 4,
|
|
||||||
-- "fill": "#ffffff",
|
|
||||||
-- "stroke": "#1890ff"
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }', 1);
|
|
||||||
INSERT INTO workflow_node_definition (id, create_time, create_by, update_time, update_by, type, name, description, category, graph_config, enabled)
|
INSERT INTO workflow_node_definition (id, create_time, create_by, update_time, update_by, type, name, description, category, graph_config, enabled)
|
||||||
VALUES
|
VALUES
|
||||||
(5, NOW(),
|
(5, NOW(),
|
||||||
'system',
|
'system',
|
||||||
NOW(),
|
NOW(),
|
||||||
'system', 'SCRIPT_TASK', '脚本任务', '脚本执行任务', 'TASK', '{
|
'system', 'SCRIPT_TASK', '脚本任务', '脚本执行任务', 'TASK', '{
|
||||||
"code" : "SCRIPT_TASK",
|
"code": "SCRIPT_TASK",
|
||||||
"name" : "脚本任务",
|
"name": "脚本任务",
|
||||||
"details" : {
|
"details": {
|
||||||
"description" : "脚本执行任务",
|
"description": "脚本执行任务",
|
||||||
"features" : [ ],
|
"features": [],
|
||||||
"scenarios" : [ ]
|
"scenarios": []
|
||||||
},
|
},
|
||||||
"configSchema" : {
|
"configSchema": {
|
||||||
"type" : "object",
|
"type": "object",
|
||||||
"properties" : {
|
"properties": {
|
||||||
"code" : {
|
"code": {
|
||||||
"type" : "string",
|
"type": "string",
|
||||||
"title" : "节点Code",
|
"title": "节点Code",
|
||||||
"description" : "工作流节点的Code"
|
"description": "工作流节点的Code"
|
||||||
},
|
},
|
||||||
"name" : {
|
"name": {
|
||||||
"type" : "string",
|
"type": "string",
|
||||||
"title" : "节点名称",
|
"title": "节点名称",
|
||||||
"description" : "工作流节点的显示名称"
|
"description": "工作流节点的显示名称"
|
||||||
},
|
},
|
||||||
"description" : {
|
"description": {
|
||||||
"type" : "string",
|
"type": "string",
|
||||||
"title" : "节点描述",
|
"title": "节点描述",
|
||||||
"description" : "工作流节点的详细描述"
|
"description": "工作流节点的详细描述"
|
||||||
},
|
},
|
||||||
"script" : {
|
"script": {
|
||||||
"type" : "string",
|
"type": "string",
|
||||||
"title" : "脚本内容",
|
"title": "脚本内容",
|
||||||
"description" : "需要执行的脚本内容,例如:\n#!/bin/bash\necho \"开始执行脚本\"\nls -la\necho \"脚本执行完成\"",
|
"description": "需要执行的脚本内容,例如:\\n#!/bin/bash\\necho \\\"开始执行脚本\\\"\\nls -la\\necho \\\"脚本执行完成\\\"",
|
||||||
"format" : "textarea"
|
"format": "textarea"
|
||||||
},
|
},
|
||||||
"language" : {
|
"language": {
|
||||||
"type" : "string",
|
"type": "string",
|
||||||
"title" : "脚本语言",
|
"title": "脚本语言",
|
||||||
"description" : "脚本语言类型",
|
"description": "脚本语言类型",
|
||||||
"default" : "shell",
|
"default": "shell",
|
||||||
"enum" : [ "shell", "python", "javascript", "groovy" ],
|
"enum": [
|
||||||
"enumNames" : [ "Shell脚本 (已支持)", "Python脚本 (开发中)", "JavaScript脚本 (开发中)", "Groovy脚本 (开发中)" ]
|
"shell",
|
||||||
|
"python",
|
||||||
|
"javascript",
|
||||||
|
"groovy"
|
||||||
|
],
|
||||||
|
"enumNames": [
|
||||||
|
"Shell脚本 (已支持)",
|
||||||
|
"Python脚本 (开发中)",
|
||||||
|
"JavaScript脚本 (开发中)",
|
||||||
|
"Groovy脚本 (开发中)"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"interpreter" : {
|
"interpreter": {
|
||||||
"type" : "string",
|
"type": "string",
|
||||||
"title" : "解释器路径",
|
"title": "解释器路径",
|
||||||
"description" : "脚本解释器的路径,例如:/bin/bash, /usr/bin/python3"
|
"description": "脚本解释器的路径,例如:/bin/bash, /usr/bin/python3"
|
||||||
},
|
},
|
||||||
"workingDirectory" : {
|
"workingDirectory": {
|
||||||
"type" : "string",
|
"type": "string",
|
||||||
"title" : "工作目录",
|
"title": "工作目录",
|
||||||
"description" : "脚本执行的工作目录",
|
"description": "脚本执行的工作目录",
|
||||||
"default" : "/tmp"
|
"default": "/tmp"
|
||||||
},
|
},
|
||||||
"environment" : {
|
"environment": {
|
||||||
"type" : "object",
|
"type": "object",
|
||||||
"title" : "环境变量",
|
"title": "环境变量",
|
||||||
"description" : "脚本执行时的环境变量",
|
"description": "脚本执行时的环境变量",
|
||||||
"additionalProperties" : {
|
"additionalProperties": {
|
||||||
"type" : "string"
|
"type": "string"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"successExitCode" : {
|
"successExitCode": {
|
||||||
"type" : "integer",
|
"type": "integer",
|
||||||
"title" : "成功退出码",
|
"title": "成功退出码",
|
||||||
"description" : "脚本执行成功时的退出码",
|
"description": "脚本执行成功时的退出码",
|
||||||
"default" : 0
|
"default": 0
|
||||||
},
|
},
|
||||||
"supportedLanguages" : {
|
"supportedLanguages": {
|
||||||
"type" : "array",
|
"type": "array",
|
||||||
"title" : "支持的脚本语言",
|
"title": "支持的脚本语言",
|
||||||
"enum" : [ "shell", "python", "javascript", "groovy" ],
|
"enum": [
|
||||||
"items" : {
|
"shell",
|
||||||
"type" : "string"
|
"python",
|
||||||
|
"javascript",
|
||||||
|
"groovy"
|
||||||
|
],
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"delegate" : {
|
"delegate": {
|
||||||
"type" : "string",
|
"type": "string",
|
||||||
"title" : "执行委派者",
|
"title": "执行委派者",
|
||||||
"description" : "执行委派者",
|
"description": "执行委派者",
|
||||||
"default" : "$${shellTaskDelegate}"
|
"default": "${shellTaskDelegate}"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required" : [ "code", "name", "script", "language", "interpreter", "delegate" ]
|
"required": [
|
||||||
|
"code",
|
||||||
|
"name",
|
||||||
|
"script",
|
||||||
|
"language",
|
||||||
|
"interpreter",
|
||||||
|
"delegate"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"uiSchema" : {
|
"uiSchema": {
|
||||||
"shape" : "rect",
|
"shape": "rect",
|
||||||
"size" : {
|
"size": {
|
||||||
"width" : 120,
|
"width": 120,
|
||||||
"height" : 60
|
"height": 60
|
||||||
},
|
},
|
||||||
"style" : {
|
"style": {
|
||||||
"fill" : "#ffffff",
|
"fill": "#ffffff",
|
||||||
"stroke" : "#1890ff",
|
"stroke": "#1890ff",
|
||||||
"strokeWidth" : 2,
|
"strokeWidth": 2,
|
||||||
"icon" : "code",
|
"icon": "code",
|
||||||
"iconColor" : "#1890ff"
|
"iconColor": "#1890ff"
|
||||||
},
|
},
|
||||||
"ports" : {
|
"ports": {
|
||||||
"groups" : {
|
"groups": {
|
||||||
"in" : {
|
"in": {
|
||||||
"position" : "left",
|
"position": "left",
|
||||||
"attrs" : {
|
"attrs": {
|
||||||
"circle" : {
|
"circle": {
|
||||||
"r" : 4,
|
"r": 4,
|
||||||
"fill" : "#ffffff",
|
"fill": "#ffffff",
|
||||||
"stroke" : "#1890ff"
|
"stroke": "#1890ff"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"out" : {
|
"out": {
|
||||||
"position" : "right",
|
"position": "right",
|
||||||
"attrs" : {
|
"attrs": {
|
||||||
"circle" : {
|
"circle": {
|
||||||
"r" : 4,
|
"r": 4,
|
||||||
"fill" : "#ffffff",
|
"fill": "#ffffff",
|
||||||
"stroke" : "#1890ff"
|
"stroke": "#1890ff"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -915,244 +818,3 @@ VALUES
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}', 1);
|
}', 1);
|
||||||
--
|
|
||||||
-- -- 网关节点
|
|
||||||
-- INSERT INTO workflow_node_definition (id, create_time, create_by, update_time, update_by, type, name, description, category, graph_config, enabled)
|
|
||||||
-- VALUES
|
|
||||||
-- (6, NOW(),
|
|
||||||
-- 'system',
|
|
||||||
-- NOW(),
|
|
||||||
-- 'system', 'EXCLUSIVE_GATEWAY', '排他网关', '条件分支控制', 'GATEWAY', '{
|
|
||||||
-- "code": "EXCLUSIVE_GATEWAY",
|
|
||||||
-- "name": "排他网关",
|
|
||||||
-- "description": "条件分支控制",
|
|
||||||
-- "details": {
|
|
||||||
-- "description": "基于条件的分支控制,只会选择一个分支执行",
|
|
||||||
-- "features": ["根据条件选择一个分支执行", "支持复杂的条件表达式", "可以设置默认分支"],
|
|
||||||
-- "scenarios": ["条件判断", "分支选择", "业务规则路由"]
|
|
||||||
-- },
|
|
||||||
-- "configSchema": {
|
|
||||||
-- "type": "object",
|
|
||||||
-- "properties": {
|
|
||||||
-- "code": {"type": "string", "title": "节点Code", "description": "工作流节点的Code"},
|
|
||||||
-- "name": {"type": "string", "title": "节点名称", "description": "工作流节点的显示名称"},
|
|
||||||
-- "description": {"type": "string", "title": "节点描述", "description": "工作流节点的详细描述"}
|
|
||||||
-- },
|
|
||||||
-- "required": ["code", "name"]
|
|
||||||
-- },
|
|
||||||
-- "uiSchema": {
|
|
||||||
-- "shape": "diamond",
|
|
||||||
-- "size": {"width": 50, "height": 50},
|
|
||||||
-- "style": {
|
|
||||||
-- "fill": "#fff7e6",
|
|
||||||
-- "stroke": "#faad14",
|
|
||||||
-- "strokeWidth": 2,
|
|
||||||
-- "icon": "fork",
|
|
||||||
-- "iconColor": "#faad14"
|
|
||||||
-- },
|
|
||||||
-- "ports": {
|
|
||||||
-- "groups": {
|
|
||||||
-- "in": {
|
|
||||||
-- "position": "left",
|
|
||||||
-- "attrs": {
|
|
||||||
-- "circle": {
|
|
||||||
-- "r": 4,
|
|
||||||
-- "fill": "#ffffff",
|
|
||||||
-- "stroke": "#1890ff"
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- },
|
|
||||||
-- "out": {
|
|
||||||
-- "position": "right",
|
|
||||||
-- "attrs": {
|
|
||||||
-- "circle": {
|
|
||||||
-- "r": 4,
|
|
||||||
-- "fill": "#ffffff",
|
|
||||||
-- "stroke": "#1890ff"
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }', 1);
|
|
||||||
-- INSERT INTO workflow_node_definition (id, create_time, create_by, update_time, update_by, type, name, description, category, graph_config, enabled)
|
|
||||||
-- VALUES
|
|
||||||
-- (7, NOW(),
|
|
||||||
-- 'system',
|
|
||||||
-- NOW(),
|
|
||||||
-- 'system', 'PARALLEL_GATEWAY', '并行网关', '并行分支控制', 'GATEWAY', '{
|
|
||||||
-- "code": "PARALLEL_GATEWAY",
|
|
||||||
-- "name": "并行网关",
|
|
||||||
-- "description": "并行分支控制",
|
|
||||||
-- "details": {
|
|
||||||
-- "description": "将流程分成多个并行分支同时执行,等待所有分支完成后合并",
|
|
||||||
-- "features": ["将流程分成多个并行分支", "等待所有分支完成后合并", "支持复杂的并行处理"],
|
|
||||||
-- "scenarios": ["并行审批", "多任务同时处理", "并行数据处理"]
|
|
||||||
-- },
|
|
||||||
-- "configSchema": {
|
|
||||||
-- "type": "object",
|
|
||||||
-- "properties": {
|
|
||||||
-- "code": {"type": "string", "title": "节点Code", "description": "工作流节点的Code"},
|
|
||||||
-- "name": {"type": "string", "title": "节点名称", "description": "工作流节点的显示名称"},
|
|
||||||
-- "description": {"type": "string", "title": "节点描述", "description": "工作流节点的详细描述"}
|
|
||||||
-- },
|
|
||||||
-- "required": ["code", "name"]
|
|
||||||
-- },
|
|
||||||
-- "uiSchema": {
|
|
||||||
-- "shape": "diamond",
|
|
||||||
-- "size": {"width": 50, "height": 50},
|
|
||||||
-- "style": {
|
|
||||||
-- "fill": "#fff7e6",
|
|
||||||
-- "stroke": "#faad14",
|
|
||||||
-- "strokeWidth": 2,
|
|
||||||
-- "icon": "branches",
|
|
||||||
-- "iconColor": "#faad14"
|
|
||||||
-- },
|
|
||||||
-- "ports": {
|
|
||||||
-- "groups": {
|
|
||||||
-- "in": {
|
|
||||||
-- "position": "left",
|
|
||||||
-- "attrs": {
|
|
||||||
-- "circle": {
|
|
||||||
-- "r": 4,
|
|
||||||
-- "fill": "#ffffff",
|
|
||||||
-- "stroke": "#1890ff"
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- },
|
|
||||||
-- "out": {
|
|
||||||
-- "position": "right",
|
|
||||||
-- "attrs": {
|
|
||||||
-- "circle": {
|
|
||||||
-- "r": 4,
|
|
||||||
-- "fill": "#ffffff",
|
|
||||||
-- "stroke": "#1890ff"
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }', 1);
|
|
||||||
--
|
|
||||||
-- -- 容器节点
|
|
||||||
-- INSERT INTO workflow_node_definition (id, create_time, create_by, update_time, update_by, type, name, description, category, graph_config, enabled)
|
|
||||||
-- VALUES
|
|
||||||
-- (8, NOW(),
|
|
||||||
-- 'system',
|
|
||||||
-- NOW(),
|
|
||||||
-- 'system', 'SUB_PROCESS', '子流程', '嵌入式子流程', 'CONTAINER', '{
|
|
||||||
-- "code": "SUB_PROCESS",
|
|
||||||
-- "name": "子流程",
|
|
||||||
-- "description": "嵌入式子流程",
|
|
||||||
-- "details": {
|
|
||||||
-- "description": "在当前流程中嵌入子流程,支持流程的模块化和复用",
|
|
||||||
-- "features": ["在当前流程中嵌入子流程", "重用流程片段", "支持事务处理", "独立的变量范围"],
|
|
||||||
-- "scenarios": ["流程复用", "模块化处理", "事务管理", "错误处理"]
|
|
||||||
-- },
|
|
||||||
-- "configSchema": {
|
|
||||||
-- "type": "object",
|
|
||||||
-- "properties": {
|
|
||||||
-- "code": {"type": "string", "title": "节点Code", "description": "工作流节点的Code"},
|
|
||||||
-- "name": {"type": "string", "title": "节点名称", "description": "工作流节点的显示名称"},
|
|
||||||
-- "description": {"type": "string", "title": "节点描述", "description": "工作流节点的详细描述"}
|
|
||||||
-- },
|
|
||||||
-- "required": ["code", "name"]
|
|
||||||
-- },
|
|
||||||
-- "uiSchema": {
|
|
||||||
-- "shape": "rect",
|
|
||||||
-- "size": {"width": 120, "height": 60},
|
|
||||||
-- "style": {
|
|
||||||
-- "fill": "#ffffff",
|
|
||||||
-- "stroke": "#1890ff",
|
|
||||||
-- "strokeWidth": 2,
|
|
||||||
-- "icon": "apartment",
|
|
||||||
-- "iconColor": "#1890ff"
|
|
||||||
-- },
|
|
||||||
-- "ports": {
|
|
||||||
-- "groups": {
|
|
||||||
-- "in": {
|
|
||||||
-- "position": "left",
|
|
||||||
-- "attrs": {
|
|
||||||
-- "circle": {
|
|
||||||
-- "r": 4,
|
|
||||||
-- "fill": "#ffffff",
|
|
||||||
-- "stroke": "#1890ff"
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- },
|
|
||||||
-- "out": {
|
|
||||||
-- "position": "right",
|
|
||||||
-- "attrs": {
|
|
||||||
-- "circle": {
|
|
||||||
-- "r": 4,
|
|
||||||
-- "fill": "#ffffff",
|
|
||||||
-- "stroke": "#1890ff"
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }', 1);
|
|
||||||
-- -- 容器节点
|
|
||||||
-- INSERT INTO workflow_node_definition (id, create_time, create_by, update_time, update_by, type, name, description, category, graph_config, enabled)
|
|
||||||
-- VALUES
|
|
||||||
-- (9, NOW(),
|
|
||||||
-- 'system',
|
|
||||||
-- NOW(),
|
|
||||||
-- 'system', 'CALL_ACTIVITY', '调用活动', '外部流程调用', 'CONTAINER', '{
|
|
||||||
-- "code": "CALL_ACTIVITY",
|
|
||||||
-- "name": "调用活动",
|
|
||||||
-- "description": "外部流程调用",
|
|
||||||
-- "details": {
|
|
||||||
-- "description": "调用外部定义的流程,支持跨系统流程调用和参数传递",
|
|
||||||
-- "features": ["调用外部定义的流程", "支持跨系统流程调用", "传递和接收参数", "支持异步调用"],
|
|
||||||
-- "scenarios": ["跨系统流程集成", "公共流程复用", "分布式流程处理", "大型流程解耦"]
|
|
||||||
-- },
|
|
||||||
-- "configSchema": {
|
|
||||||
-- "type": "object",
|
|
||||||
-- "properties": {
|
|
||||||
-- "code": {"type": "string", "title": "节点Code", "description": "工作流节点的Code"},
|
|
||||||
-- "name": {"type": "string", "title": "节点名称", "description": "工作流节点的显示名称"},
|
|
||||||
-- "description": {"type": "string", "title": "节点描述", "description": "工作流节点的详细描述"}
|
|
||||||
-- },
|
|
||||||
-- "required": ["code", "name"]
|
|
||||||
-- },
|
|
||||||
-- "uiSchema": {
|
|
||||||
-- "shape": "rect",
|
|
||||||
-- "size": {"width": 120, "height": 60},
|
|
||||||
-- "style": {
|
|
||||||
-- "fill": "#ffffff",
|
|
||||||
-- "stroke": "#1890ff",
|
|
||||||
-- "strokeWidth": 2,
|
|
||||||
-- "icon": "api",
|
|
||||||
-- "iconColor": "#1890ff"
|
|
||||||
-- },
|
|
||||||
-- "ports": {
|
|
||||||
-- "groups": {
|
|
||||||
-- "in": {
|
|
||||||
-- "position": "left",
|
|
||||||
-- "attrs": {
|
|
||||||
-- "circle": {
|
|
||||||
-- "r": 4,
|
|
||||||
-- "fill": "#ffffff",
|
|
||||||
-- "stroke": "#1890ff"
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- },
|
|
||||||
-- "out": {
|
|
||||||
-- "position": "right",
|
|
||||||
-- "attrs": {
|
|
||||||
-- "circle": {
|
|
||||||
-- "r": 4,
|
|
||||||
-- "fill": "#ffffff",
|
|
||||||
-- "stroke": "#1890ff"
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }', 1);
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user