Cube Cube
首页
  • v1.0.0
👼问答
💖支持
🤾加入咚咚群
  • 项目介绍
  • 更新记录
  • 参与研发
GitHub (opens new window)
首页
  • v1.0.0
👼问答
💖支持
🤾加入咚咚群
  • 项目介绍
  • 更新记录
  • 参与研发
GitHub (opens new window)
  • 🍤Cube简介
  • 🍑框架特性
  • 🍄快速开始

    • 🍟说明
    • 🍅集成三步走

      • 🍉SDK集成
      • 🍒申请接入
      • 🍍环境配置
    • 🍊核心楼层

      • 🍋接口开发
      • 🍣服务开发
      • 🍏任务开发
      • 🍿领域能力
    • 🍔共建楼层

      • 🫕依赖引入
      • 🍠共建仓库
        • 创建共建仓库
        • 引入共建SDK
        • 开发一个共建楼层处理器
          • 继承AbstractFloorProcessor
          • 标记共建处理器
        • 项目编译
      • 🍱应用共建
    • 🏈独立楼层

      • 🍗使用说明
      • 🥯参数注解
      • 🥫集成开发
      • 🧇楼层扩展
  • 🍓设计文档

    • 🍫资源同步设计
    • 🫕配置并发设计
    • 🍬SPI扩展设计
    • 🥩架构设计
  • 指南
  • 🍄快速开始
  • 🍔共建楼层
sizegang
2022-09-03
目录

🍠共建仓库

# 创建共建仓库

不同开发者在不同业务部门,当然涉及到不同的应用项目,本人是在商详研发组,所以需要创建一个基于商详的共建楼层,项目名:detail-cooperate。仓库地址 (opens new window)。

以下为示例项目:

示例共建

# 引入共建SDK

共建SDK提供共建执行器所需要继承的抽象类AbstractFloorProcessor和注解@CubeDomainAbility

    <dependency>
        <groupId>com.jd.cube</groupId>
        <artifactId>cube-cooperate-sdk</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </dependency>

# 开发一个共建楼层处理器

下面以价格楼层共建为例

/**
 * 共建楼层处理器样例
 *
 * @Author huleilei9
 * @Date 2022/8/1
 **/
@Slf4j
@CubeCooperateFloorProcessor(bizCode = "jdHome", code = "priceCoopFloor", description = "[京东到家]价格共建楼层处理器")
public class PriceFloorProcessorHandler extends AbstractFloorProcessor {

    @Override
    public boolean paramCheck(CooperateFloorContext context) {
        if (CollectionUtil.isEmpty(context.getParams())) {
            return false;
        }
        Object skuId = context.getParams().get("skuId");
        if (Objects.isNull(skuId)) {
            log.error("入参 skuId 缺失");
            return false;
        }
        return true;
    }

    /**
     * 逻辑执行
     *
     * @param context
     * @return
     */
    @Override
    public JSONObject execute(CooperateFloorContext context) {
        log.info("DemoFloorProcessorHandler 。。。");
        Object skuId = context.getParams().get("skuId");

        if (Objects.isNull(skuId)) {
            log.error("入参 skuId 缺失");
            return null;
        }

        JSONObject jsonObject = new JSONObject();
        jsonObject.put("skuId", skuId);
        jsonObject.put("price", "66666");
        return jsonObject;
    }

}

# 继承AbstractFloorProcessor

  • 重写paramCheck方法: 该方法为参数校验方法,如果参数校验失败则不会执行下面的execute方法
  • 重写execute方法:共建楼层执行器核心执行方法,参数为提供给共建方使用的参数信息CooperateFloorContext

# 标记共建处理器

使用@CubeCooperateFloorProcessor标记的类。 Cube会自动识别该注解将资源信息上报给Cube平台。ISV引擎在解析模板配置时会自动回调该处理器的 paramCheck方法和execute方法。

这里介绍一下 @CubeCooperateFloorProcessor注解

  • code:处理器唯一标识,不同处理器不允许重复,建议使用枚举或常量声明,重复框架会在启动时主动抛出异常
  • bizCode:处理器业务标识
  • description: 处理器描述信息,会自动上报到平台,提供给开发者配置使用
  • version:预留字段,开发者无需关注

/**
 * 共建楼层处理器
 *
 * @Author huleilei9
 * @Date 2022/8/16
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Component
@Documented
public @interface CubeCooperateFloorProcessor {



    /**
     * 楼层处理器code 最好用枚举值
     * 共建方业务身份code + 楼层处理器code ,平台唯一
     *
     * @return
     */
    String code() default "";

    /**
     * 共建方业务身份code(平台唯一)
     *
     * @return
     */
    String bizCode() default "";


    /**
     * Description string.
     *
     * @return the string
     */
    String description() default "";

    /**
     * 版本
     *
     * @return
     */
    String version() default "";
}

# 项目编译

共建房将完善好的应用程序进行打包发布到Maven景象仓库 运行以下命令

mvn clean package
帮助我们改善此文档 (opens new window)
上次更新: 2022/09/03, 20:56:28
🫕依赖引入
🍱应用共建

← 🫕依赖引入 🍱应用共建→

Theme by Vdoing | Copyright © 2022-2022 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式