[自研开源] MyData v0.8.1 更新日志

开源地址:gitee | github
详细介绍:MyData 基于 Web API 的数据集成平台
部署文档:用 Docker 部署 MyData
使用手册:MyData 使用手册
试用体验:https://demo.mydata.work
交流Q群:430089673

介绍

MyData ,一个旨在简化 Web 应用之间数据对接的工具,提高日常工作效率,如其名“我的数据” 旨在让用户更好的掌控和管理数据。

通过界面配置 实现多应用之间 基于API的数据对接。

诚邀体验,免费技术支持,详见 https://blog.csdn.net/tle3212000/article/details/137639827

0.8.1

主要更新内容:

  1. 新增Web hook推送数据模式;
  2. API地址支持{PathVariable}模式;
    在这里插入图片描述

新功能

  • 任务管理

    • 提供数据类型 增加“调用API”和“接收推送”模式选项,平台提供接口接收数据;
      在这里插入图片描述
  • 接收推送

    • 新增接口,支持web hook或API主动推送数据,实现认证和接收推送的数据,并通过任务执行后续流程;
@Slf4j
@RestController
@AllArgsConstructor
@RequestMapping(MdConstant.API_PREFIX_MANAGE + "/integration")
public class IntegrationEndpoint {
    @Resource
    private final ITaskService taskService;

    @Resource
    private final JobExecutor jobExecutor;

    @PostMapping("/{task_url}")
    public R post(@PathVariable("task_url") String taskUrl, @RequestHeader HttpHeaders httpHeaders, @RequestBody String body) {
        log.info("integration post");
        return execute(taskUrl, httpHeaders, body);
    }

    @PutMapping("/{task_url}")
    public R put(@PathVariable("task_url") String taskUrl, @RequestHeader HttpHeaders httpHeaders, @RequestBody String body) {
        log.info("integration put");
        return execute(taskUrl, httpHeaders, body);
    }

    private R execute(String taskUrl, HttpHeaders httpHeaders, String body) {
        log.info("integration url : {}", taskUrl);
        log.info("integration headers : {}", httpHeaders);
        log.info("integration body : {}", body);

        Assert.notEmpty(taskUrl, "操作失败:地址 {} 无效!", taskUrl);
        Task task = taskService.findByApiUrl(taskUrl);
        Assert.notNull(task, "操作失败:地址 {} 无效!", taskUrl);
        Assert.equals(task.getTaskStatus(), MdConstant.TASK_STATUS_RUNNING, "操作失败:任务未启动 无法执行!");

        Integer authType = task.getAuthType();
        if (MdConstant.TASK_AUTH_TYPE_NONE.equals(authType)) {
            // do nothing
        } else {
            // 检查认证参数配置是否有效
            Map<String, String> authParams = task.getAuthParams();
            if (CollUtil.isNotEmpty(authParams)) {
                Assert.notNull(task, "操作失败:认证参数未配置!");
            }

            // 校验认证参数
            if (MdConstant.TASK_AUTH_TYPE_API_KEY.equals(authType)) {
                checkApiKey(authParams, httpHeaders);
            } else if (MdConstant.TASK_AUTH_TYPE_BASIC.equals(authType)) {
                checkBasicAuth(authParams, httpHeaders);
            } else if (MdConstant.TASK_AUTH_TYPE_HMAC.equals(authType)) {
                // TODO
            } else {
                throw new IllegalArgumentException("操作失败:不支持任务的认证类型!");
            }
        }

        // 执行任务流程 接收数据
        jobExecutor.acceptData(task, body);
        return R.success(StrUtil.format("任务 [{}] 开始执行,请查看日志。", task.getTaskName()));
    }
    // ...
}

  • API管理
    • url支持{field}格式的变量 适配PathVariable模式,调用API时从数据中提取指定字段值并替换;
      在这里插入图片描述

优化

  • 任务管理

    • 优化cron编辑器,减少占用空间;
      在这里插入图片描述

    • 简化任务卡片,其他信息通过点击显示;
      在这里插入图片描述

    • 订阅消费支持选择来源任务,以便指定触发执行的前置任务;
      在这里插入图片描述

    • 消费数据类型 增加“单数据模式”开关,以便发送一条记录时 用集合或单个对象;

    • 增加下次执行时间,以便了解任务运行情况;

  • 定时任务

    • 任务日志 提前到存入缓存时就生成,以便了解任务运行情况;

    • 增加数据对比,减少无变更数据的更新写入操作;

修复

  • 任务管理

    • 消费数据类型任务,向API发送业务数据后 修复未接收返回和更新自定义变量的问题;
  • 定时任务

    • 增加数据批次标识,解决分批获取数据后订阅任务丢失数据问题;

    • 修复过滤条件值类型不匹配问题;

  • 23
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值