• 首页
  • 产品中心
    • 数式Oinone四大产品

      低代码开发平台无代码开发平台集成开发平台AI大模型开发
    • 数式Oinone体系能力

      用户与组织权限管理文件管理消息中心国际化业务审计
    • 数式Oinone核心产品特性

      低无一体面向软件公司场景无限制应用级扩容可分可合
  • 服务中心
    • 客户服务

      预约演示方案咨询私有部署找人定制
    • 开发者

      问答下载
    • Oinone学院

      社区学习

    《精讲面向软件公司的低代码平台——以Oinone为例》

  • 合作伙伴
    渠道申请伙伴名录专家库
  • 关于数式
0571-88757863

模块数据初始化(Init Module Data)


提示

本教程是 “后端框架教程” 的延伸。请确保你已完成该教程,并以你构建的 “费用管理(expenses)” 模块作为本教程练习的基础。

一、业务数据初始化

参考:与此主题相关的文档可在 “模块生命周期” 中找到。

目标:在本节结束时:

  1. 项目类型 expenses.ProjectType 模型的表格视图中增加一条固定记录。

主数据通常是模块技术或业务需求的一部分。换句话说,这类数据对于模块的正常运行往往至关重要。在安装模块时,这些数据会一同被安装。我们之前定义视图和动作时已经接触过技术数据,它们就是主数据的一种。除了技术数据,还可以定义业务数据,例如国家、货币、计量单位,以及完整的国家本地化数据(法定报告、税收定义、会计科目表)等等。例如:

@Component
public class ExpensesModuleBizDataInit implements InstallDataInit, UpgradeDataInit, ReloadDataInit {

    /**
     * 安装指令执行逻辑
     * @param command 应用生命周期命令
     * @param version 当前版本号
     * @return 安装操作是否成功
     */
    @Override
    public boolean init(AppLifecycleCommand command, String version) {
        // 此处抛出异常,可根据实际需求替换为具体的安装逻辑
        throw PamirsException.construct(ExpensesExpEnum.SYSTEM_ERROR).appendMsg("ExpensesModuleBizDataInit: install").errThrow();
        // 示例:安装指令执行逻辑
        // return Boolean.TRUE;
    }

    /**
     * 重新加载指令执行逻辑
     * @param command 应用生命周期命令
     * @param version 当前版本号
     * @return 重新加载操作是否成功
     */
    @Override
    public boolean reload(AppLifecycleCommand command, String version) {
        // 此处抛出异常,可根据实际需求替换为具体的重新加载逻辑
        throw PamirsException.construct(ExpensesExpEnum.SYSTEM_ERROR).appendMsg("ExpensesModuleBizDataInit: reload").errThrow();
        // 示例:重启指令执行逻辑
        // return Boolean.TRUE;
    }

    /**
     * 升级指令执行逻辑
     * @param command 应用生命周期命令
     * @param version 当前版本号
     * @param existVersion 现有版本号
     * @return 升级操作是否成功
     */
    @Override
    public boolean upgrade(AppLifecycleCommand command, String version, String existVersion) {
        // 此处抛出异常,可根据实际需求替换为具体的升级逻辑
        throw PamirsException.construct(ExpensesExpEnum.SYSTEM_ERROR).appendMsg("ExpensesModuleBizDataInit: upgrade").errThrow();
        // 示例:升级指令执行逻辑
        // return Boolean.TRUE;
    }

    /**
     * 指定该初始化类匹配的模块
     * @return 匹配的模块编码列表
     */
    @Override
    public List<String> modules() {
        return Collections.singletonList(ExpensesModule.MODULE_MODULE);
    }

    /**
     * 设置执行优先级
     * @return 执行优先级
     */
    @Override
    public int priority() {
        return 0;
    }
}

该类实现 InstallDataInit、UpgradeDataInit 和 ReloadDataInit 接口。这三个接口分别对应不同的业务初始化场景:

  • InstallDataInit 接口对应安装(init)操作。
  • UpgradeDataInit 接口对应升级(upgrade)操作。
  • ReloadDataInit 接口对应重新加载(reload)操作。

此外,modules 方法用于指定该初始化类与哪些模块匹配,匹配依据为模块编码;priority 方法用于设置执行优先级。

练习(Exercise)

为 expenses.ProjectType 模型,并添加一条数据记录,其名称为“基建类”

编辑此页
最近更新:2026/1/15 04:02
上一页
精通前端框架(Master the Front-End framework)
下一页
限制数据访问权限(Restrict access to data)
默认页脚
Copyright © 2026 Mr.Hope