天行有常,不为尧存,不为桀亡。——荀子《天论》
所有表结构解析中不包含 zero extension 扩展模块中的系统型字段,主要是:
sigma, active, language, metadata, createdAt, createdBy, updatedAt, updatedBy八个系统型字段。 所有的配置导入都在ox-driver/ix-atlantic项目中执行(主程序)
本文介绍接口和任务的相关配置,二者的配置组合如下:
| 组合 | 备注 |
|---|---|
| 接口 + 权限 | 接口配置、权限配置(I_API, I_SERVICE) |
| 任务 | 任务配置(I_JOB, I_SERVICE) |
S_API是接口表,用于定义将要部署的 RESTful 接口信息。
| 字段名 | 列名 | 含义 | 值格式 |
|---|---|---|---|
| key | KEY | 接口主键 | 新生成UUID |
| name | NAME | 接口名称 | 中文说明 |
| uri | URI | HTTP请求路径 | 不带/api/安全前缀和动态路由前缀/ox |
| method | METHOD | HTTP方法 | 四个值:GET,POST,PUT,DELETE |
| consumes | CONSUMES | 客户端MIME | JsonArray数组格式,MIME集合 |
| produces | PRODUCES | 服务端MIME | JsonArray数组格式,MIME集合 |
| secure | SECURE | 是否安全接口 | 安全接口自带/api前缀,非安全接口不带 |
| comment | COMMENT | 接口备注 | 接口详细描述 |
| type | TYPE | 接口类型 | 三种值:ONE-WAY, REQUEST-RESPONSE, PUBLISH-SUBSCRIBE |
| paramMode | PARAM_MODE | 传参类型 | 四个值:PATH, QUERY, BODY, DEFINE |
| paramRequired | PARAM_REQUIRED | 是否必须 | 400基本验证Query/Path |
| paramContained | PARAM_CONTAINED | 是否必须 | 400基本验证Body |
| inRule | IN_RULE | 验证、转换规则 | 保留 |
| inMapping | IN_MAPPING | 映射规则 | 保留 |
| inPlug | IN_PLUG | 插件规则 | 保留,Java类名 |
| inScript | IN_SCRIPT | 脚本规则 | 保留 |
| outWriter | OUT_WRITER | 响应处理器 | 目前默认使用Json格式组件,Java类名 |
| workerType | WORKER_TYPE | Worker类型 | 三个值:JS, PLUG, STD |
| workerAddress | WORKER_ADDRESS | Worker消费地址 | 字符串格式 |
| workerConsumer | WORKER_CONSUMER | Worker消费组件 | Java类名 |
| workerClass | WORKER_CLASS | Worker类名 | Java类名 |
| workerJs | WORKER_JS | Js类型的worker文件 | JavaScript文件地址 |
| serviceId | SERVICE_ID | 服务层ID | 关联服务层记录主键 |
S_JOB是任务表,用于定义一个后端任务的基本信息
| 字段名 | 列名 | 含义 | 值格式 |
|---|---|---|---|
| key | KEY | 任务主键 | 新生成UUID |
| namespace | NAMESPACE | 任务所属名空间 | 使用X_APP生成 |
| name | NAME | 任务名称 | 中文格式 |
| code | CODE | 任务编码 | 通常以task前缀为主,不重复即可 |
| type | TYPE | 任务类型 | 三个值:ONCE, PLAN, FIXED |
| comment | COMMENT | 任务备注 | 配置任务的描述信息 |
| additional | ADDITIONAL | 附加配置 | 任务需要的额外配置信息 |
| runAt | RUN_AT | 定义任务中的JOB执行时间 | 时间格式,每天定时 |
| duration | DURATION | 任务间隔时间 | 两次任务执行的时差 |
| proxy | PROXY | 任务代理类 | Java类名 |
| threshold | THRESHOLD | 超时设置 | 默认300s,秒为单位 |
| incomeComponent | INCOME_COMPONENT | JobIncome组件 | Java类名 |
| incomeAddress | INCOME_ADDRESS | 输入数据地址 | 字符串 |
| outcomeComponent | OUTCOME_COMPONENT | JobOutcome组件 | Java类名 |
| outcomeAddress | OUTCOME_ADDRESS | 输出数据地址 | 字符串 |
| serviceId | SERVICE_ID | 服务层ID | 关联服务层记录主键 |
S_SERVICE是服务表,用于定义一个任务复杂的业务服务信息
| 字段名 | 列名 | 含义 | 值格式 |
|---|---|---|---|
| key | KEY | 服务主键 | 新生成UUID |
| namespace | NAMESPACE | 任务所属名空间 | 使用X_APP生成 |
| name | NAME | 服务名称 | 中文格式 |
| comment | COMMENT | 服务备注 | 服务的描述信息 |
| isWorkflow | IS_WORKFLOW | 是否驱动工作流 | 逻辑值 |
| isGraphic | IS_GRAPHIC | 是否驱动图引擎 | 逻辑值 |
| inScript | IN_SCRIPT | JS脚本内容 | 保留 |
| outScript | OUT_SCRIPT | JS脚本内容 | 保留 |
| channelType | CHANNEL_TYPE | 通道类型 | 四个值:ADAPTOR, CONNECTOR, ACTOR, DIRECTOR |
| channelComponent | CHANNEL_COMPONENT | 通道组件 | Java类名 |
| channelConfig | CHANNEL_CONFIG | 通道配置 | Json配置格式 |
| configIntegration | CONFIG_INTEGRATION | 集成配置 | 对应集成结构Integration |
| configDatabase | CONFIG_DATABASE | 数据库配置 | 对应数据库结构Database |
| dictConfig | DICT_CONFIG | 字典配置 | Json配置格式 |
| dictComponent | DICT_COMPONENT | 字典组件 | Java类名 |
| dictEpsilon | DICT_EPSILON | 字典消费定义 | Json配置格式 |
| mappingConfig | MAPPING_CONFIG | 映射配置 | Json配置格式 |
| mappingMode | MAPPING_MODE | 映射模式 | 四个值:BEFORE, AFTER, AROUND, NONE |
| mappingComponent | MAPPING_COMPONENT | 映射组件 | Java类名 |
| serviceRecord | SERVICE_RECORD | 服务记录类型 | Java类名,Record接口 |
| serviceComponent | SERVICE_COMPONENT | 服务组件定义 | Java类名,开发重点 |
| serviceConfig | SERVICE_CONFIG | 服务配置 | Json配置格式,对应 options |
| identifier | IDENTIFIER | 模型标识 | 配置的建模中的模型标识 |
| identifierComponent | IDENTIFIER_COMPONENT | 标识选择器 | Java类名 |
本文只介绍接口和任务本身的配置,不介绍接口中的权限配置,接口中的权限配置参考:OS-001 - 接口权限配置
# 安装UUID生成工具,主键生成使用该配置
npm install -g uuid
# Excel文件配置技巧,在单元格中填写:JSON:plugin/bastion/cmdb-v2/options/job-config.json,加入了
JSON:前缀就可以直接从resources目录中读取Json文件作为Json字段的配置数据内容。
在src/main/resources/init/oob/中创建API所需Excel文件(可参考目前的xxx-api.xlsx类型的)。
type目前必须配置REQUEST_RESPONSE(请求/响应模式)。secure安全配置,secure = true则路径前缀会加上/api/ox,secure = false则只加/ox前缀,这里/ox前缀在vertx-jet.yml中配置,因客户而有所区别。uri和method不能是系统中已经存在的,遵循RESTful基本指导法则,不可重复!paramMode配置,尽可能采用最小需求法则:
/api/:name中的name。/xxx?name=yyy中的name,同时包括PATH。consumes和produces。sigma, active, language都不要填错,参考已有配置。serivceId中填写新生成的服务主键(I_SERVICE)。namespace,目前必须是cn.originx.vie.app.ox。name就是任务的编码code,该名称不可重复!type的配置:
runAt和duration都不需配置。duration必须配置。runAt和duration都必须配置。threshold。秒(s)。incomeAddress / incomeComponent。outcomeAddress / outcomeComponent。proxy的默认值是:io.vertx.tp.jet.uca.micro.JtThanatos,可定义自己的任务代理类,一旦使用了自己的任务代理类,那么很多内容会面临重写。sigma, active, language都不要填错,参考已有配置。namespace,目前必须是cn.originx.vie.app.ox。name必须唯一,不可重复!channelType,带集成的选择后者:
ADAPTOR / CONNECTORACTOR / DIRECTORisWorkflow / isGraphic是保留配置,后期会使用。serviceComponent就是配置开发人员开发的通道类。serviceConfig对应Options。serviceRecord配置的值必须是数据记录值:
cn.originx.modeling.atom.data.DataRecord。io.vertx.tp.atom.modeling.data.DataRecord。identifier为固定的模型标识符,需要静态绑定,并且需要静态绑定到合法定义的模型中。identifierComponent用来定义标识选择器,选择不同的identifier执行服务。mappingConfig配置基础映射文件,静态Json结构。mappingMode配置映射模式:BEFORE/NONE/AFTER/AROUND。mappingComponent配置映射组件,保留配置。dictConfig字典配置文件,静态Json结构。dictEpsilon字典消费配置,定义字典的消费相关信息。dictComponent字典组件
io.vertx.tp.optic.business.ExAmbientDictionaryconfigDatabase:数据库配置configIntegration:集成配置修改 OxDevelop代码如下,首参不变,第二参使用您创建的文件前缀:
package cn.vertxup;
import io.vertx.tp.ke.booter.Bt;
public class OxDevelop {
public static void main(final String[] args) {
Bt.doImports("init/oob/", "第二参");
}
}
OxDevelop的执行配置,参考环境配置,然后执行该程序,将数据重新导入Postman 测试这样就配置好完整的接口和任务了。