silentbalanceyh/vertx-zero

View on GitHub
vertx-pin/zero-vie/src/main/environment/io/mature/extension/cv/OxCv.java

Summary

Maintainability
A
1 hr
Test Coverage
package io.mature.extension.cv;

/**
 * ## 平台常量
 *
 * ### 1. 基本介绍
 *
 * 该类为<strong>接口</strong>定义,之中的所有成员都是常量成员,默认修饰为`public static final`,即接口常量,主要定义了以下几种:
 *
 * - CMDB关系标识符以及CMDB中常用的关系相关字段名(以模型为主)。
 * - Aspect默认标准插件名信息。
 * - 环境配置数据。
 * - 除开上述几种以外,还包含了内部类`Field, Relation, AmbientOld`。
 *
 * > CMDB系统属于`Ox`平台的专用系统,也是它的正统App,虽然是数据驱动型,但固定字段也是配合CMDB的模型标准。
 *
 * ### 2. 内部类
 *
 * - {@link Field OxCv.Field类}
 * - {@link Relation OxCv.Relation类}
 * - {@link Ambient OxCv.Ambient类}
 *
 * @author <a href="http://www.origin-x.cn">Lang</a>
 */
public interface OxCv {
    /**
     * <value>rl.device.relation</value>,「CMDB」CMDB中关系模型的统一标识符,identifier字段,字段定义参考{@link Relation OxCv.Relation类}。
     */
    String RELATION_IDENTIFIER = "rl.device.relation";
    /**
     * <value>device.relation</value>,「CMDB」ServiceConfig中配置的options专用配置名信息。
     *
     * 它的基本配置如下:
     *
     * ```json
     * // <pre><code class="json">
     * {
     *     "device.relation": "xxx"
     * }
     * // </code></pre>
     * ```
     */
    String RELATION_FIELD = "device.relation";
    /**
     * <value>globalId</value>,「CMDB」CMDB系统中和`UCMDB`对接的模型关联主键,对应`UCMDB`中的uuid用于标识配置项。
     */
    String RELATION_UID = "globalId";
    /**
     * <value>down</value>「CMDB」配置项模型中的<strong>下游</strong>关系字段名,为`JsonArray`数据结构。
     */
    String RELATION_DOWN = "down";
    /**
     * <value>up</value>,「CMDB」配置项模型中的<strong>上游</strong>关系字段名,为`JsonArray`数据结构。
     */
    String RELATION_UP = "up";
    /**
     * <value>__VERTX_MASTER__</value>,图引擎中主图的代码信息,对应`cn.vertxup.graphic.domain.tables.pojos.GGraphic`中的`code`属性,`CODE`字段。
     *
     * CMDB中的拓扑图分三种:
     *
     * - 主图:master = true的图(一般一个CMDB系统只有一张主图)。
     * - 定义图:根据关系定义构造的拓扑图,`M_MODEL`和`M_RELATION`构造。
     * - 数据图:自由绘图,目前版本中根据`ci.device`和`rl.device.relation`两种模型构造的图。
     */
    String GRAPHIC_MASTER_DEFAULT = "__VERTX_MASTER__";

    /**
     * ## 「内部类」配置项字段常量
     *
     * ### 1. 基本介绍
     *
     * CMDB定义了目前系统中常用的核心字段(OOB模板数据配置型,静态数据规范)。
     *
     * ### 2. 核心点
     *
     * #### 2.1. lifecycle
     *
     * lifecycle为配置项生命周期变量,参考`io.extension.cv.em.LifeCycle`枚举定义。
     *
     * |值|托管方|说明|
     * |---|---|:---|
     * |INNER|CMDB|CMDB内部流程(默认值)。|
     * |PENDING|第三方|等待上线的生命周期,未上线之前不可编辑和推送,数据可能不完整。|
     * |READY|第三方|可上线的生命周期,可执行第三方上线流程——数据准备完成。|
     * |ONLINE|第三方|已上线的生命周期(不可删除)。|
     * |OFFLINE|第三方|已下线的生命周期(不可编辑),下线过后的配置项不可在CMDB中编辑。|
     * |DELETED|第三方|已删除,在CMDB中已下线会执行物理删除和历史备份,但第三方系统会产生DELETED的标记。|
     *
     * #### 2.2. confirmStatus
     *
     * confirmStatus用来表示配置项是否执行变更中,参考`io.mature.extension.uca.workflow.Commutator`接口定义。
     *
     * - `unconfirmed`:未确认状态,正在执行变更,不可消费。
     * - `confirmed`:已确认状态,可消费。
     *
     * #### 2.3. 三级分类
     *
     * CMDB中的配置项每个都有三个字段,对应类别字典`X_CATEGORY`:
     *
     * - categoryFirst:一级分类字段名。
     * - categorySecond:二级分类字段名。
     * - categoryThird:三级分类字段名。
     *
     * @author <a href="http://www.origin-x.cn">Lang</a>
     */
    interface Field {

        /**
         * <value>lifecycle</value>,「CMDB」生命周期专用字段名。
         */
        String LIFE_CYCLE = "lifecycle";
        /**
         * <value>confirmStatus</value>,「CMDB」待确认状态专用字段名。
         */
        String CONFIRM_STATUS = "confirmStatus";
        /**
         * <value>categoryFirst</value>,「CMDB」一级分类字段名。
         */
        String CATEGORY_FIRST = "categoryFirst";
        /**
         * <value>categorySecond</value>,「CMDB」二级分类字段名。
         */
        String CATEGORY_SECOND = "categorySecond";
        /**
         * <value>categoryThird</value>,「CMDB」三级分类字段名。
         */
        String CATEGORY_THIRD = "categoryThird";

        String DIM_1 = "dim1";
        String DIM_2 = "dim2";
        String DIM_3 = "dim3";

        String DIFF_KEY = "diff.key";
    }

    /**
     * ## 「内部类」关系字段常量
     *
     * ### 1. 基本介绍
     *
     * CMDB中的关系模型专用字段常量,主要分:
     *
     * - 关系源,上游,`SOURCE_`前缀。
     * - 目标源,下游,`TARGET_`前缀。
     *
     * ### 2. 维度定义
     *
     * 该类中针对上下游字段信息,定义了以下几个维度数据:
     *
     * - GlobalId:第三方集成专用标识字段,对应配置项中的`globalId`字段。
     * - Category:配置项的分类信息(叶级分类),优先使用`X_CATEGORY`中的值,其次直接使用第三方的类型定义值。
     * - Identifier:配置项的统一模型标识符,identifier字段。
     * - Code:配置项编号。
     * - Name:配置项名称。
     *
     * @author <a href="http://www.origin-x.cn">Lang</a>
     */
    interface Relation {
        /**
         * <value>sourceGlobalId</value>,「CMDB」上游配置项主键,通常是第三方主键,本版本中是UCMDB中主键。
         */
        String SOURCE_JOINED = "sourceGlobalId";
        /**
         * <value>sourceCategory</value>,「CMDB」上游配置项类型。
         */
        String SOURCE_CATEGORY = "sourceCategory";
        /**
         * <value>sourceIdentifier</value>,「CMDB」上游配置项模型标识符identifier。
         */
        String SOURCE_IDENTIFIER = "sourceIdentifier";
        /**
         * <value>sourceCode</value>,「CMDB」上游配置项编号。
         */
        String SOURCE_CODE = "sourceCode";
        /**
         * <value>sourceName</value>,「CMDB」上游配置项名称。
         */
        String SOURCE_NAME = "sourceName";
        /**
         * <value>source</value>,用于描述上游五个维度的前缀信息,方便程序执行上游属性提取。
         *
         * 示例使用代码:
         *
         * ```java
         * // <pre><code class="java">
         *     final Object sourceValue = relation.getEnd1CI().getPropertyValue(attrName);
         *     if (Objects.nonNull(sourceValue)) {
         *          data.put(OxCv.Relation.SOURCE_PREFIX + suffix, sourceValue);
         *     }
         * // </code></pre>
         * ```
         */
        String SOURCE_PREFIX = "source";

        /**
         * <value>targetGlobalId</value>,「CMDB」下游配置项主键,通常是第三方主键,本版本中是UCMDB中主键。
         */
        String TARGET_JOINED = "targetGlobalId";
        /**
         * <value>targetCategory</value>,「CMDB」下游配置项类型。
         */
        String TARGET_CATEGORY = "targetCategory";
        /**
         * <value>targetIdentifier</value>,「CMDB」下游配置项模型标识符identifier。
         */
        String TARGET_IDENTIFIER = "targetIdentifier";
        /**
         * <value>targetCode</value>,「CMDB」下游配置项编号。
         */
        String TARGET_CODE = "targetCode";
        /**
         * <value>targetName</value>,「CMDB」下游配置项名称。
         */
        String TARGET_NAME = "targetName";
        /**
         * <value>target</value>,用于描述下游五个维度的前缀信息,方便程序执行下游属性提取。
         *
         * 示例使用代码:
         *
         * ```java
         * // <pre><code class="java">
         *     final Object targetValue = relation.getEnd2CI().getPropertyValue(attrName);
         *     if (Objects.nonNull(targetValue)) {
         *          data.put(OxCv.Relation.TARGET_PREFIX + suffix, targetValue);
         *     }
         * // </code></pre>
         * ```
         */
        String TARGET_PREFIX = "target";
    }

    /**
     * ## 「内部类」环境目录常量
     *
     * ### 1. 基本介绍
     *
     * CMDB中定义的环境基础配置数据:
     *
     * - CMDB配置目录:`external`目录。
     * - CMDB配置文件:`configuration.json`文件。
     * - Shell环境专用配置。
     *
     * > 上述配置根目录从启动项目`ox-driver/ix-atlantic`的`src/main/resources`开始计算(标准Maven)。
     *
     * @author <a href="http://www.origin-x.cn">Lang</a>
     */
    interface Ambient {
        /**
         * <value>runtime/external</value>,「CMDB」专用环境配置(外联)。
         **/
        String CONFIG_EXTERNAL = "runtime/external/";
        /**
         * <value>runtime/configuration.json</value>,「CMDB」运行时环境配置(专用)。
         */
        String CONFIG_FILE = "runtime/configuration.json";
    }
}