代码拉取完成,页面将自动刷新
Nop平台中统一使用ResourceComponentManager来加载DSL模型。
model = ResourceComponentManager.instance().loadComponentModel(path);
/nop/rule/test/myRule/v1.rule.xml
,直接指定具体对应的资源文件,由VirtualFileSystem来处理Delta路径解析resolve-rule:test/myRule
,底层可以是虚拟文件系统管理的资源文件,也可以是存储在数据库中的数据记录。在平台初始化的过程中,会自动搜集所有/nop/core/registry/xxx.register-model.xml模型注册文件中所定义的注册信息, 建立文件类型(fileType)与加载器(ResourceObjectLoader)之间的映射关系。
fileType与fileExt的区别在于,它在fileName中查找最后两个dot, 而不是最后一个dot。 例如 a.orm.xml对应fileType=orm.xml, 而fileExt=xml。
<model x:schema="/nop/schema/register-model.xdef" xmlns:x="/nop/schema/xdsl.xdef"
name="rule">
<!--
resolve-rule:在/nop/rule目录下查找不同后缀名的模型文件,如果不存在,就使用nopDaoRuleModelLoader在数据库中查找。
-->
<resolve-handler resolveInDir="/nop/rule" defaultLoaderBean="nopDaoRuleModelLoader" />
<loaders>
<loader fileType="rule.xlsx"
class="io.nop.rule.core.model.compile.RuleExcelModelLoader"/>
<loader fileType="rule.xml"
class="io.nop.rule.core.model.compile.RuleDslModelLoader"/>
</loaders>
</model>
resolve-rule:test/myRule/v1 会查找
基本逻辑是根据文件类型或者resolve前缀确定模型类型(modelType),然后根据modelType得到注册的ComponentModelConfig,利用其中定义的Loader来实际解析DSL模型。
resolve-{modelType}:
这种动态解析路径得到modelType目前系统中内置了两种特殊的loader,可以直接使用元模型定义,无需编写特殊的Loader类
例如ORM模型的注册配置为
<model x:schema="/nop/schema/register-model.xdef" xmlns:x="/nop/schema/xdsl.xdef"
name="orm">
<loaders>
<xlsx-loader fileType="orm.xlsx" impPath="/nop/orm/imp/orm.imp.xml"/>
<xdsl-loader fileType="orm.xml" schemaPath="/nop/schema/orm/orm.xdef"/>
</loaders>
</model>
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。