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));
|
||||
// }
|
||||
|
||||
@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 = "挂起工作流实例")
|
||||
@PostMapping("/{processInstanceId}/suspend")
|
||||
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
|
||||
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;
|
||||
|
||||
import com.qqchen.deploy.backend.framework.repository.IBaseRepository;
|
||||
import com.qqchen.deploy.backend.workflow.entity.WorkflowInstance;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
@ -8,7 +9,7 @@ import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Repository
|
||||
public interface IWorkflowInstanceRepository extends JpaRepository<WorkflowInstance, Long> {
|
||||
public interface IWorkflowInstanceRepository extends IBaseRepository<WorkflowInstance, Long> {
|
||||
|
||||
/**
|
||||
* 根据Flowable流程实例ID查询工作流实例
|
||||
|
||||
@ -28,16 +28,6 @@ public interface IWorkflowDefinitionService extends IBaseService<WorkflowDefinit
|
||||
*/
|
||||
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;
|
||||
|
||||
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.entity.WorkflowDefinition;
|
||||
import com.qqchen.deploy.backend.workflow.entity.WorkflowInstance;
|
||||
import com.qqchen.deploy.backend.workflow.enums.WorkflowInstanceStatusEnums;
|
||||
import org.flowable.engine.runtime.ProcessInstance;
|
||||
@ -8,7 +11,7 @@ import org.flowable.engine.runtime.ProcessInstance;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public interface IWorkflowInstanceService {
|
||||
public interface IWorkflowInstanceService extends IBaseService<WorkflowInstance, WorkflowInstanceDTO, Long> {
|
||||
|
||||
/**
|
||||
* 创建工作流实例并关联Flowable实例
|
||||
@ -50,4 +53,6 @@ public interface IWorkflowInstanceService {
|
||||
* @param 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
|
||||
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.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.dto.WorkflowDefinitionDTO;
|
||||
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.enums.WorkflowInstanceStatusEnums;
|
||||
import com.qqchen.deploy.backend.workflow.repository.IWorkflowDefinitionRepository;
|
||||
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 jakarta.annotation.Resource;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@ -24,22 +29,27 @@ import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class WorkflowInstanceServiceImpl implements IWorkflowInstanceService {
|
||||
public class WorkflowInstanceServiceImpl extends BaseServiceImpl<WorkflowInstance, WorkflowInstanceDTO, Long> 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
|
||||
private WorkflowInstanceConverter workflowInstanceConverter;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public WorkflowInstanceDTO createWorkflowInstance(Long workflowDefinitionId, String businessKey, ProcessInstance processInstance) {
|
||||
WorkflowInstance workflowInstance = new WorkflowInstance();
|
||||
workflowInstance.setProcessInstanceId(processInstance.getId());
|
||||
@ -139,6 +149,22 @@ public class WorkflowInstanceServiceImpl implements IWorkflowInstanceService {
|
||||
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) {
|
||||
// WorkflowInstanceDTO.ActivityInstance ai = new WorkflowInstanceDTO.ActivityInstance();
|
||||
// ai.setId(hai.getId());
|
||||
|
||||
@ -3,65 +3,26 @@
|
||||
-- --------------------------------------------------------------------------------------
|
||||
|
||||
-- 租户表
|
||||
CREATE TABLE IF NOT EXISTS sys_tenant
|
||||
(
|
||||
id
|
||||
BIGINT
|
||||
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:已删除)',
|
||||
update_by VARCHAR
|
||||
(
|
||||
255
|
||||
) NULL COMMENT '更新人',
|
||||
update_time DATETIME
|
||||
(
|
||||
6
|
||||
) NULL COMMENT '更新时间',
|
||||
version INT NOT NULL DEFAULT 0 COMMENT '乐观锁版本号',
|
||||
CREATE TABLE sys_tenant (
|
||||
id BIGINT 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:已删除)',
|
||||
update_by VARCHAR(255) NULL COMMENT '更新人',
|
||||
update_time DATETIME(6) NULL COMMENT '更新时间',
|
||||
version INT NOT NULL DEFAULT 0 COMMENT '乐观锁版本号',
|
||||
|
||||
code VARCHAR(50) NOT NULL COMMENT '租户编码',
|
||||
name VARCHAR(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:启用)',
|
||||
|
||||
CONSTRAINT UK_tenant_code UNIQUE (code)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='租户表';
|
||||
|
||||
code VARCHAR
|
||||
(
|
||||
50
|
||||
) NOT NULL COMMENT '租户编码',
|
||||
NAME VARCHAR
|
||||
(
|
||||
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:启用)',
|
||||
CONSTRAINT UK_tenant_code UNIQUE
|
||||
(
|
||||
code
|
||||
)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE =utf8mb4_unicode_ci COMMENT='租户表';
|
||||
|
||||
-- 部门表
|
||||
CREATE TABLE sys_department
|
||||
@ -87,69 +48,26 @@ CREATE TABLE sys_department
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='部门表';
|
||||
|
||||
-- 用户表
|
||||
CREATE TABLE IF NOT EXISTS sys_user
|
||||
(
|
||||
id
|
||||
BIGINT
|
||||
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:已删除)',
|
||||
update_by VARCHAR
|
||||
(
|
||||
255
|
||||
) NULL COMMENT '更新人',
|
||||
update_time DATETIME
|
||||
(
|
||||
6
|
||||
) NULL COMMENT '更新时间',
|
||||
version INT NOT NULL DEFAULT 0 COMMENT '乐观锁版本号',
|
||||
CREATE TABLE sys_user (
|
||||
id BIGINT 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:已删除)',
|
||||
update_by VARCHAR(255) NULL COMMENT '更新人',
|
||||
update_time DATETIME(6) NULL COMMENT '更新时间',
|
||||
version INT NOT NULL DEFAULT 0 COMMENT '乐观锁版本号',
|
||||
|
||||
username VARCHAR
|
||||
(
|
||||
50
|
||||
) NOT NULL COMMENT '用户名',
|
||||
password VARCHAR
|
||||
(
|
||||
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',
|
||||
enabled BIT NOT NULL DEFAULT 1 COMMENT '是否启用(0:禁用,1:启用)',
|
||||
CONSTRAINT UK_user_username UNIQUE
|
||||
(
|
||||
username
|
||||
),
|
||||
CONSTRAINT FK_user_department FOREIGN KEY
|
||||
(
|
||||
department_id
|
||||
) REFERENCES sys_department
|
||||
(
|
||||
id
|
||||
)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE =utf8mb4_unicode_ci COMMENT='用户表';
|
||||
username VARCHAR(50) NOT NULL COMMENT '用户名',
|
||||
password VARCHAR(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',
|
||||
enabled BIT NOT NULL DEFAULT 1 COMMENT '是否启用(0:禁用,1:启用)',
|
||||
|
||||
CONSTRAINT UK_user_username UNIQUE (username),
|
||||
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
|
||||
@ -518,6 +436,27 @@ CREATE TABLE workflow_definition
|
||||
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 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
|
||||
(
|
||||
@ -586,23 +525,3 @@ CREATE TABLE workflow_log
|
||||
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='工作流日志表';
|
||||
|
||||
-- 创建工作流节点定义表
|
||||
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,489 +670,151 @@ VALUES
|
||||
}
|
||||
}', 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)
|
||||
VALUES
|
||||
(5, NOW(),
|
||||
'system',
|
||||
NOW(),
|
||||
'system', 'SCRIPT_TASK', '脚本任务', '脚本执行任务', 'TASK', '{
|
||||
"code" : "SCRIPT_TASK",
|
||||
"name" : "脚本任务",
|
||||
"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" : "工作流节点的详细描述"
|
||||
},
|
||||
"script" : {
|
||||
"type" : "string",
|
||||
"title" : "脚本内容",
|
||||
"description" : "需要执行的脚本内容,例如:\n#!/bin/bash\necho \"开始执行脚本\"\nls -la\necho \"脚本执行完成\"",
|
||||
"format" : "textarea"
|
||||
},
|
||||
"language" : {
|
||||
"type" : "string",
|
||||
"title" : "脚本语言",
|
||||
"description" : "脚本语言类型",
|
||||
"default" : "shell",
|
||||
"enum" : [ "shell", "python", "javascript", "groovy" ],
|
||||
"enumNames" : [ "Shell脚本 (已支持)", "Python脚本 (开发中)", "JavaScript脚本 (开发中)", "Groovy脚本 (开发中)" ]
|
||||
},
|
||||
"interpreter" : {
|
||||
"type" : "string",
|
||||
"title" : "解释器路径",
|
||||
"description" : "脚本解释器的路径,例如:/bin/bash, /usr/bin/python3"
|
||||
},
|
||||
"workingDirectory" : {
|
||||
"type" : "string",
|
||||
"title" : "工作目录",
|
||||
"description" : "脚本执行的工作目录",
|
||||
"default" : "/tmp"
|
||||
},
|
||||
"environment" : {
|
||||
"type" : "object",
|
||||
"title" : "环境变量",
|
||||
"description" : "脚本执行时的环境变量",
|
||||
"additionalProperties" : {
|
||||
"type" : "string"
|
||||
}
|
||||
},
|
||||
"successExitCode" : {
|
||||
"type" : "integer",
|
||||
"title" : "成功退出码",
|
||||
"description" : "脚本执行成功时的退出码",
|
||||
"default" : 0
|
||||
},
|
||||
"supportedLanguages" : {
|
||||
"type" : "array",
|
||||
"title" : "支持的脚本语言",
|
||||
"enum" : [ "shell", "python", "javascript", "groovy" ],
|
||||
"items" : {
|
||||
"type" : "string"
|
||||
}
|
||||
},
|
||||
"delegate" : {
|
||||
"type" : "string",
|
||||
"title" : "执行委派者",
|
||||
"description" : "执行委派者",
|
||||
"default" : "$${shellTaskDelegate}"
|
||||
}
|
||||
"code": "SCRIPT_TASK",
|
||||
"name": "脚本任务",
|
||||
"details": {
|
||||
"description": "脚本执行任务",
|
||||
"features": [],
|
||||
"scenarios": []
|
||||
},
|
||||
"required" : [ "code", "name", "script", "language", "interpreter", "delegate" ]
|
||||
},
|
||||
"uiSchema" : {
|
||||
"shape" : "rect",
|
||||
"size" : {
|
||||
"width" : 120,
|
||||
"height" : 60
|
||||
},
|
||||
"style" : {
|
||||
"fill" : "#ffffff",
|
||||
"stroke" : "#1890ff",
|
||||
"strokeWidth" : 2,
|
||||
"icon" : "code",
|
||||
"iconColor" : "#1890ff"
|
||||
},
|
||||
"ports" : {
|
||||
"groups" : {
|
||||
"in" : {
|
||||
"position" : "left",
|
||||
"attrs" : {
|
||||
"circle" : {
|
||||
"r" : 4,
|
||||
"fill" : "#ffffff",
|
||||
"stroke" : "#1890ff"
|
||||
"configSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"code": {
|
||||
"type": "string",
|
||||
"title": "节点Code",
|
||||
"description": "工作流节点的Code"
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
"title": "节点名称",
|
||||
"description": "工作流节点的显示名称"
|
||||
},
|
||||
"description": {
|
||||
"type": "string",
|
||||
"title": "节点描述",
|
||||
"description": "工作流节点的详细描述"
|
||||
},
|
||||
"script": {
|
||||
"type": "string",
|
||||
"title": "脚本内容",
|
||||
"description": "需要执行的脚本内容,例如:\\n#!/bin/bash\\necho \\\"开始执行脚本\\\"\\nls -la\\necho \\\"脚本执行完成\\\"",
|
||||
"format": "textarea"
|
||||
},
|
||||
"language": {
|
||||
"type": "string",
|
||||
"title": "脚本语言",
|
||||
"description": "脚本语言类型",
|
||||
"default": "shell",
|
||||
"enum": [
|
||||
"shell",
|
||||
"python",
|
||||
"javascript",
|
||||
"groovy"
|
||||
],
|
||||
"enumNames": [
|
||||
"Shell脚本 (已支持)",
|
||||
"Python脚本 (开发中)",
|
||||
"JavaScript脚本 (开发中)",
|
||||
"Groovy脚本 (开发中)"
|
||||
]
|
||||
},
|
||||
"interpreter": {
|
||||
"type": "string",
|
||||
"title": "解释器路径",
|
||||
"description": "脚本解释器的路径,例如:/bin/bash, /usr/bin/python3"
|
||||
},
|
||||
"workingDirectory": {
|
||||
"type": "string",
|
||||
"title": "工作目录",
|
||||
"description": "脚本执行的工作目录",
|
||||
"default": "/tmp"
|
||||
},
|
||||
"environment": {
|
||||
"type": "object",
|
||||
"title": "环境变量",
|
||||
"description": "脚本执行时的环境变量",
|
||||
"additionalProperties": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"successExitCode": {
|
||||
"type": "integer",
|
||||
"title": "成功退出码",
|
||||
"description": "脚本执行成功时的退出码",
|
||||
"default": 0
|
||||
},
|
||||
"supportedLanguages": {
|
||||
"type": "array",
|
||||
"title": "支持的脚本语言",
|
||||
"enum": [
|
||||
"shell",
|
||||
"python",
|
||||
"javascript",
|
||||
"groovy"
|
||||
],
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"delegate": {
|
||||
"type": "string",
|
||||
"title": "执行委派者",
|
||||
"description": "执行委派者",
|
||||
"default": "${shellTaskDelegate}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"out" : {
|
||||
"position" : "right",
|
||||
"attrs" : {
|
||||
"circle" : {
|
||||
"r" : 4,
|
||||
"fill" : "#ffffff",
|
||||
"stroke" : "#1890ff"
|
||||
"required": [
|
||||
"code",
|
||||
"name",
|
||||
"script",
|
||||
"language",
|
||||
"interpreter",
|
||||
"delegate"
|
||||
]
|
||||
},
|
||||
"uiSchema": {
|
||||
"shape": "rect",
|
||||
"size": {
|
||||
"width": 120,
|
||||
"height": 60
|
||||
},
|
||||
"style": {
|
||||
"fill": "#ffffff",
|
||||
"stroke": "#1890ff",
|
||||
"strokeWidth": 2,
|
||||
"icon": "code",
|
||||
"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
|
||||
-- (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);
|
||||
}', 1);
|
||||
Loading…
Reference in New Issue
Block a user