silentbalanceyh/vertx-zero

View on GitHub
vertx-pin/zero-jet/src/main/resources/plugin/sql/jet/I_SERVICE.sql

Summary

Maintainability
Test Coverage
-- liquibase formatted sql

-- changeset Lang:ox-service-1
-- 服务定义表:I_SERVICE
DROP TABLE IF EXISTS I_SERVICE;
CREATE TABLE IF NOT EXISTS I_SERVICE
(
    `KEY`                  VARCHAR(36) COMMENT '「key」- 服务ID',

    -- 名空间处理
    `NAMESPACE`            VARCHAR(255) COMMENT '「namespace」- 服务所在名空间',
    `NAME`                 VARCHAR(255) COMMENT '「name」- 服务名称',
    `COMMENT`              TEXT COMMENT '「comment」- 备注信息',

    -- 特殊流程触发定义
    `IS_WORKFLOW`          BIT COMMENT '「isWorkflow」- 是否驱动工作流引擎',
    `IS_GRAPHIC`           BIT COMMENT '「isGraphic」- 是否驱动图引擎',

    -- 前置脚本和后置脚本
    `IN_SCRIPT`            MEDIUMTEXT COMMENT '「inScript」- 本次不使用,加载脚本引擎ScriptEngine前置脚本',
    `OUT_SCRIPT`           MEDIUMTEXT COMMENT '「outScript」- 本次不使用,加载脚本引擎ScriptEngine后置脚本',

    /*
     * 通道定义,主要目的是创建:ActIn 并且传给 Service 层,通道的输入为:Envelop(数据) 和 ZApi(配置)
     * 通道主要包含五种基本类型:
     * ADAPTOR:「适配器模式」访问自身数据库专用(需要初始化DAO)
     *          Input --> Database
     *
     * CONNECTOR:「连接器模式」访问第三方数据源(初始化DAO,并且初始化第三方配置)
     *          Input --> Database
     *                --> Third Part(第三方被动)
     *
     * ACTOR:「演员模式」服务端主动通道(初始化DAO,并且初始化第三方配置)
     *         Output <-- Database
     *                <-- Third Part(第三方主动)
     *
     * DIRECTOR:「导演模式」服务端主动处理(需要初始化DAO)
     *         Output <-- Database
     *
     * DEFINE:「自定义」自定义模式,这种情况下才会启用`CHANNEL_COMPONENT`字段
     */
    `CHANNEL_TYPE`         VARCHAR(20) COMMENT '「channelType」- 通道类型:ADAPTOR / CONNECTOR / ACTOR / DIRECTOR / DEFINE',
    `CHANNEL_COMPONENT`    VARCHAR(255) COMMENT '「channelComponent」- 自定义通道专用组件',
    `CHANNEL_CONFIG`       MEDIUMTEXT COMMENT '「channelConfig」- 通道(自定义)配置信息,Channel专用',

    /*
     * 中间层专用信息
     * Channel:只可见 Envelop,生成 ActIn,并且传入
     * Component:只可见 Record,生成 ActOut
     *
     * 构造最终对象:io.vertx.up.commune.config.Integration
     * 构造最终对象:io.vertx.up.commune.config.Database
     */
    `CONFIG_INTEGRATION`   MEDIUMTEXT COMMENT '「configIntegration」- 集成配置信息,第三方专用',
    `CONFIG_DATABASE`      MEDIUMTEXT COMMENT '「configDatabase」- 数据库配置,当前通道访问的Database',

    /*
     * 字典专用配置信息
     * 构造最终对象:io.vertx.up.commune.config.Dict
     * 并且生成最终的字典相关信息,字典数据想对独立
     * 主要提供 TABULAR / CATEGORY / ASSIST
     *
     * !!!:dictComponent 在启用字典的时候必须配置
     */
    `DICT_CONFIG`          MEDIUMTEXT COMMENT '「dictConfig」- 字典的配置信息',
    `DICT_COMPONENT`       VARCHAR(255) COMMENT '「dictComponent」- 字典配置中的插件',
    `DICT_EPSILON`         MEDIUMTEXT COMMENT '「dictEpsilon」- 字典的消费配置',

    /*
     * 映射专用配置信息
     * 映射模式有三种:
     * 1)BEFORE / AFTER / AROUND
     * 2)映射组件可配置,可不用配置
     * 3)如果不配置的时候,则直接使用系统默认的转换方式
     */
    `MAPPING_CONFIG`       MEDIUMTEXT COMMENT '「mappingConfig」- 映射专用配置',
    `MAPPING_MODE`         VARCHAR(20) COMMENT '「mappingMode」- 映射的模式',
    `MAPPING_COMPONENT`    VARCHAR(255) COMMENT '「mappingComponent」- 映射组件类型',

    /*
     * 服务组件定义,消费 ActIn,并且生成 ActOut
     * 1)只消费 ActIn,不消费 Envelop(下层转换成 ZRecord 和 ActRequest执行,不再处理 Envelop)
     * 2)当前服务组件需要使用的 Record 类型(框架初始化,提交给内置使用),必须实现 Record 接口(ZRecord对Channel不可见)
     *
     * serviceConfig 用于构造 in / out 中的特殊结构 Diode
     */
    `SERVICE_RECORD`       VARCHAR(255) COMMENT '「serviceRecord」- 服务记录定义',
    `SERVICE_COMPONENT`    VARCHAR(255) COMMENT '「serviceComponent」- 服务组件定义',
    `SERVICE_CONFIG`       MEDIUMTEXT COMMENT '「serviceConfig」- 业务组件配置,业务组件专用',

    -- 当前服务描述的模型identifier
    `IDENTIFIER`           VARCHAR(255) COMMENT '「identifier」- 当前类型描述的Model的标识',
    `IDENTIFIER_COMPONENT` VARCHAR(255) COMMENT '「identifierComponent」- 当前业务接口使用的标识选择器',

    `RULE_UNIQUE`          MEDIUMTEXT COMMENT '「ruleUnique」- 第二标识规则,当前通道的专用标识规则RuleUnique',

    -- 特殊字段
    `SIGMA`                VARCHAR(32) COMMENT '「sigma」- 统一标识',
    `LANGUAGE`             VARCHAR(10) COMMENT '「language」- 使用的语言',
    `ACTIVE`               BIT COMMENT '「active」- 是否启用',
    `METADATA`             TEXT COMMENT '「metadata」- 附加配置数据',

    -- Auditor字段
    `CREATED_AT`           DATETIME COMMENT '「createdAt」- 创建时间',
    `CREATED_BY`           VARCHAR(36) COMMENT '「createdBy」- 创建人',
    `UPDATED_AT`           DATETIME COMMENT '「updatedAt」- 更新时间',
    `UPDATED_BY`           VARCHAR(36) COMMENT '「updatedBy」- 更新人',
    PRIMARY KEY (`KEY`) USING BTREE
);
-- changeset Lang:ox-service-2
ALTER TABLE I_SERVICE
    ADD UNIQUE (`NAME`, `NAMESPACE`) USING BTREE;