总体描述
Oinone有一个非常重要的特性:通过平台承载标准化产品(标品)。针对不同客户的个性化需求,不再直接修改标准产品代码,而是以扩展包的形式进行扩展和定制化,通过继承和重写标准产品的能力来满足客户需求。
本文讲解述怎么通过标品构建扩展工程的过程。
构建标品
按照Oinone的规范构建标品工程
构建扩展包
在定制模块中指定上游模块
上游依赖模块upstreams
,模块定义如下:
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Module {
// 显示名称
@AliasFor("displayName")
String value() default "";
// 依赖模块名列表
String[] dependencies() default ModuleConstants.MODULE_BASE;
// 上游模块名列表
String[] upstreams() default {};
……
扩展模块示例
@Component
@Module(
name = SecondModule.MODULE_NAME,
displayName = "DEMO扩展",
version = "1.0.0",
// 指定上游模块(标品模块,可以为多个)
upstreams = DemoModule.MODULE_MODULE,
priority = 1,
dependencies = {ModuleConstants.MODULE_BASE,
CommonModule.MODULE_MODULE,
UserModule.MODULE_MODULE,
AuthModule.MODULE_MODULE,
BusinessModule.MODULE_MODULE,
// 上游模块(标品模块,可以为多个)
DemoModule.MODULE_MODULE,
}
)
@Module.module(SecondModule.MODULE_MODULE)
@Module.Advanced(selfBuilt = true, application = true)
@UxHomepage(@UxRoute(model = WorkRecord.MODEL_MODEL))
public class SecondModule implements PamirsModule {
public static final String MODULE_MODULE = "demo_core_ext";
public static final String MODULE_NAME = "DemoCoreExt";
@Override
public String[] packagePrefix() {
return new String[]{
"pro.shushi.pamirs.second"
};
}
}
application.yml配置文件
pamirs:
boot:
modules:
.....
- demo_core // 加标准工程
- demo_core_ext
maven配置
父工程依赖
<dependencyManagement>
<dependencies>
.....
<dependency>
<groupId>pro.shushi.pamirs.demo</groupId>
<artifactId>pamirs-demo-api</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>pro.shushi.pamirs.demo</groupId>
<artifactId>pamirs-demo-core</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
.....
</dependencies>
</dependencyManagement>
api子工程加入依赖
<dependency>
<groupId>pro.shushi.pamirs.demo</groupId>
<artifactId>pamirs-demo-api</artifactId>
</dependency>
boot子工程加入依赖
<dependency>
<groupId>pro.shushi.pamirs.demo</groupId>
<artifactId>pamirs-demo-core</artifactId>
</dependency>
数据库设置
base数据库要跟标品工程一致
注意事项
标品工程的第三方依赖,在扩展工程都要有,否则启动会报错
扩展模块功能开发
- 菜单扩展
1、可以按需隐藏标品的菜单;
2、可以根据扩展包的实际情况增加菜单; - 模型扩展
1、扩展包可继承标品已有模型;
2、扩展包可根据实际情况新增自有模型; - 函数扩展
1、扩展包可根据实际情况【覆写】标品中的函数;
2、扩展包可根据实际情况【新增】自有函数;
3、扩展包可通过Hook机制实现业务的个性化;
4、扩展包可根据自身业务情况实现标品中的扩展点;
5、……
Oinone社区 作者:望闲原创文章,如若转载,请注明出处:https://doc.oinone.top/kai-fa-shi-jian/13346.html
访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验