总体描述
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"
};
}
}
扩展模块功能开发
- 菜单扩展
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低代码应用平台体验