详细介绍:MyData 基于 Web API 的数据集成平台
部署文档:用 Docker 部署 MyData
使用手册:MyData 使用手册
交流 Q 群:430089673
MyData 基于数据资产理念设计,采用 Web API 作为数据传输通道 完全不侵入任何业务系统;
API 通常不是简单的调用即可获得结果,需要传递外部的参数才能得到预期结果;
身份验证和授权 类似 Web Token ,先通过认证 API 获取令牌 存储在客户端,随后每次通信都附带令牌;
参数筛选数据 当调用 API 时,通过参数筛选 准确获取所需数据,例如:员工在职状态、订单支付状态等;
分批获取数据 当处理大量数据或分页显示数据时,需要分批获取数据,例如:分页参数有 指定页数、每页的数量;
...
MyData 提供两层管理:环境管理
、变量管理
;
环境管理 结合开发流程、部署环境等场景,统一管理 API 的运行环境,比如内部的:开发环境、测试环境、生产环境,外部的第三方厂商环境等;
变量管理 按环境隔离管理变量,相同环境下 API 可共享变量;
手动登记
变量,配置静态值,需要调整时再修改;定时任务
从 API 获取并更新变量值,下图示例是每分钟调用一次认证接口获取令牌 并保存到 token2 变量;
${变量名}
格式获取变量值;
请求参数
中通过${变量名}
格式获取变量值;
基于 数据集成之任务流程 介绍任务执行流程,在任务开始与调用 API 之间 增加环境变量的解析处理;
以下是任务执行过程代码片段,其中jobVarService.parseVar(taskInfo);
是任务开始后的第一步操作,具体变量的解析处理可详见 JobVarService.java
taskInfo.appendLog("任务开始执行");
...
// 标记本次执行是否成功
boolean isJobSuccess = false;
// 获取任务操作类型
int opType = taskInfo.getOpType();
try {
// 解析并替换 api 中的环境变量
jobVarService.parseVar(taskInfo);
// 根据操作类型 执行读或写
switch (opType) {
// 提供数据
case MdConstant.DATA_PRODUCER:
...
break;
// 消费数据
case MdConstant.DATA_CONSUMER:
...
break;
default:
throw new RuntimeException("不支持的任务类型:" + opType);
}
// 任务执行成功
isJobSuccess = true;
} catch (Exception e) {
taskInfo.appendLog("任务执行失败,异常:{}", e.getMessage());
e.printStackTrace();
} finally {
// 恢复原生 header 和 param ,恢复变量表达式,下次可获取最新变量值
taskInfo.setReqHeaders(taskInfo.getOriginReqHeaders());
taskInfo.setReqParams(taskInfo.getOriginReqParams());
}