概述
为了更快更准确的使用 Trantor 扩展,需理解不同类型 App 其扩展资源的生效机制,建议仔细阅读: Trantor 应用
在Trantor 1.0 版本中,不同类型的 Trantor 应用 对资源进行扩展的方式不同。本节以【应用】对【基础产品】的资源进行扩展为例介绍可扩展资源及如何定义扩展。
应用可以声明自己的研发资源, 即模型/视图/逻辑流 等,同时应用也可以扩展父应用的资源,以满足复杂多变的业务需求,常见的扩展资源是模型、视图以及逻辑,因此本文会着重讲述这些资源如何实现扩展,其他类型的资源扩展原理与之类似。
在 Trantor 下,每个资源都有唯一对应的 resourceKey,针对父应用对应的资源key,只需要增加相同的资源 key,Trantor根据就近原则,会先在当前应用内寻找相同key的资源,有则直接使用, 没有则继续向上找到父应用对应的资源,一直找到标品如果还没有找到, 则会认为该资源不存在。
建议配合 示例代码 一起学习
扩展模型
详细使用参考 扩展模型
模型扩展就是对原模型进行修改或者新增字段,扩展后的模型还使用原模型,不会产生新的模型,扩展模型需要给扩展类打上@ExtendModel(OriginModel.class)注解,OriginModel 代表原模型类名。继承原模型并不是必须的,使用继承是为了更方便的获取扩展字段。
下面的代码演示了在原模型Equipment上新增一个设备使用状态的字段
@Data@ExtendModel(Equipment.class)public class EquipmentExtend extends Equipment {
@Field(name = "设备使用状态", nullable = false) @DictionaryMeta(value = EquipmentUseStatus.class) private String status;}💡Tips:扩展模型的字段定义与原模型一致,参考字段
扩展字典
详细使用参考 扩展字典
扩展字典就是对原字典进行修改或者新增字典项,不会产生新的字典。
扩展字典需要给扩展类打上@io.terminus.trantorframework.api.annotation.ExtendDictionary注解,且扩展类必须继承原字典类或其他扩展字典。
下面的代码演示了在原字典 CompanyStatus 上新增一个字典项
@ExtendDictionary()public interface CompanyStatusExtend extends CompanyStatus { @DictionaryItem(value = "歇业") Integer rest = 3;}扩展视图
如果想扩展父应用的原视图,只需要定义相同的视图key即可。 如:想扩展第一节创建的应用中的Equipment.view.xml视图,只需要在trantor_custom应用下定义相同的名称的视图xml即可。
下图展示了如何扩展视图,扩展视图(右)相比于原视图(左),新增了一个使用状态的字段
扩展视图是会产生一个新的资源,所以扩展视图的文件与原视图文件大致相同,但不是在原文件上修改,而是一个新的xml文件

扩展逻辑
如果想扩展原 Flow/Function/Extension,我们只需要实现原始接口,那么这个接口就有多个实现,然后在Trantor 交付控制台 ( T-Console ) 进行配置,让我们定制业务域的逻辑实现生效即可。
下面对比扩展flow前后的代码,扩展前(左)、扩展后(右)

上报资源
创建应用

安装基础产品
创建应用成功之后我们需要进入项目安装本应用依赖的标准产品(也可以安装应用)。

此标准产品为进入Trantor的世界一节中所创建。

扩展资源上报
完成扩展之后,需要对资源进行上报。

1、在父工程目录下执行 mvn clean install
2、在标品目录下执行 mvn clean compile -Dtrantor.deploy=true
3、在扩展工程目录下执行mvn clean compile -Dtrantor.deploy=true
💡注意:由于maven本身的机制,在进行资源上报时,会尝试从maven仓库中获取所有依赖,而使用demo演示不需要将jar发布到远程仓库,而扩展项目需要依赖标品项目以及本身的api模块,但是远程仓库没有这些依赖的jar,因此在对扩展项目进行资源上报时会失败,需要在父工程目录下执行 mvn clean install 命令将jar发布到本地仓库,如果是正式开发,远程仓库有最新的依赖可以忽略第一步。在对扩展项目进行资源上报前,需要先对依赖的标品项目进行资源上报。
创建模块&配置菜单
与标品一致,这里不再赘述。

管理运行环境
新建该应用对应的运行环境。

发布运行
发布业务域&模块。


扩展项目的发布运行与标品一致,不需要额外的操作,详细操作请查看发布资源 和运行展示两部分内容。
扩展视图效果展示:扩展前视图(上)、扩展后视图(下)


扩展逻辑效果展示:扩展前(上)、扩展后(下)

