@@ -372,23 +372,23 @@ nop.core.dict.return-normalized-label配置成false
372
372
### 24. CrudBizModel中的save跟update这两个方法有什么区别?
373
373
374
374
update必须具有id属性,表示修改操作。而save是新增操作,转化为insert语句。
375
- save \_ update是只要有id就识别为修改操作 ,否则识别为新增操作。
375
+ ` save_update ` 是只要有id就识别为修改操作 ,否则识别为新增操作。
376
376
377
377
### 25. action-auth.xml 也能控制 graphql action的权限,Auth 注解和 xbiz 也能控制,这个该怎么选择,如果互相冲突以哪个为准呢
378
378
379
- Nop平台采用的是多层叠加的设计,也就是说 整体逻辑 = 基础逻辑 + Delta定制逻辑,定制性强的层会覆盖变化性较低的层。xbiz中定义的内容会覆盖Java中定义的内容。xmeta中的定义优先级最高。
379
+ Nop平台采用的是多层叠加的设计,也就是说 ` 整体逻辑 = 基础逻辑 + Delta定制逻辑 ` ,定制性强的层会覆盖变化性较低的层。xbiz中定义的内容会覆盖Java中定义的内容。xmeta中的定义优先级最高。
380
380
381
- action-auth.xml并不能控制权限 ,它能定义给一组权限起一个便于管理的分组名称。具体的权限名还是服务方法上定义的。
382
- action-auth.xml可以配置缺省的角色和permission之间的绑定关系 。而后台的AuthMeta本质上是配置permission和服务函数之间的绑定关系,只是有时为了方便也可以直接指定role和服务函数之间的绑定关系。如果同时指定,实际上是同时限制的
381
+ ` action-auth.xml ` 并不能控制权限 ,它能定义给一组权限起一个便于管理的分组名称。具体的权限名还是服务方法上定义的。
382
+ ` action-auth.xml ` 可以配置缺省的角色和permission之间的绑定关系 。而后台的AuthMeta本质上是配置permission和服务函数之间的绑定关系,只是有时为了方便也可以直接指定role和服务函数之间的绑定关系。如果同时指定,实际上是同时限制的
383
383
384
384
### 26. 通过Delta定制如何处理多对多关联?
385
385
386
- 问题:在 delta.orm.xlxs 中定制 NopAuthUser 时,对于 many-to-many 关系,比如用户和商户多对多,因为要在 NopAuthUser 中生成商户相关的 java 属性,又要在商户这边生成用户相关的 Java 属性。这种情况下,中间关联表是要在 auth delta excel 中定义,还是在应用模块的 excel 中定义呢?
386
+ 问题:在 ` delta.orm.xlsx ` 中定制 NopAuthUser 时,对于 ` many-to-many ` 关系,比如用户和商户多对多,因为要在 NopAuthUser 中生成商户相关的 java 属性,又要在商户这边生成用户相关的 Java 属性。这种情况下,中间关联表是要在 auth delta excel 中定义,还是在应用模块的 excel 中定义呢?
387
387
回答:建议是在自己的业务模型中增加多对多关联表,将用户表标记为not-gen,作为外部表引用。这样不会自动为NopAuthUserEx生成多对多相关的帮助函数,这个可以手工自行添加。
388
388
389
389
### 27. nop-ooxml-xlsx模块与Java的poi库有什么区别?
390
390
391
- poi很大,最少有10几M,而且很慢。nop-ooxml-xlsx是利用Nop平台自己实现的XML解析器来解析xlsx文件 ,它的底层没有使用POI库,
391
+ poi很大,最少有10几M,而且很慢。` nop-ooxml-xlsx ` 是利用Nop平台自己实现的XML解析器来解析xlsx文件 ,它的底层没有使用POI库,
392
392
比POI快很多,内存消耗也小很多,但是支持的功能不多,只支持目前report开发中用到的xlsx特性。
393
393
394
394
### 28. Excel模型中updateTime等系统约定的特殊字段能改成自己定义的名称吗?比如updateTime修改为updatedAt
@@ -402,10 +402,10 @@ poi很大,最少有10几M,而且很慢。nop-ooxml-xlsx是利用Nop平台自
402
402
403
403
### 30. 除了主动运行gen命令,还有什么时候能生成代码?
404
404
405
- 每个DSL文件都支持x : gen-extends 和x : post-extends 子节点 ,这些段就相当于是内嵌在DSL中的generator。
405
+ 每个DSL文件都支持 ` x :gen-extends ` 和 ` x :post-extends ` 子节点 ,这些段就相当于是内嵌在DSL中的generator。
406
406
407
407
* push模式:mvn install触发precompile目录下的xgen,执行代码生成
408
- * pull模式: x: gen-extends ,加载模型的时候触发代码生成段,执行代码生成
408
+ * pull模式: ` x:gen-extends ` ,加载模型的时候触发代码生成段,执行代码生成
409
409
410
410
### 31. NopORM中的querySpace概念是什么意思?
411
411
@@ -420,7 +420,7 @@ IContext主要是提供异步上下文,并包含一些最简单的全局信息
420
420
一般情况下一个请求过来,会创建一个IContext,绑定到某个执行任务线程,然后GraphQL引擎创建IServiceContext,并引用了先前的IContext,带上了更多的信息。因此对于一个请求来讲,会有一个IServiceContext以及一个IContext。
421
421
422
422
### 33. EQL查询语言不支持` cast(value as date) ` 这种语法怎么办
423
- 可以直接用date (field)函数。具体有哪些函数,可以去看dialect.xml中函数的定义,还可以定制dialect.xml来增加函数定义 。通过template函数可以将函数定义转换为特定的SQL语法。
423
+ 可以直接用 ` date (field)` 函数。具体有哪些函数,可以去看 ` dialect.xml ` 中函数的定义,还可以定制 ` dialect.xml ` 来增加函数定义 。通过template函数可以将函数定义转换为特定的SQL语法。
424
424
425
425
### 34. 主键id必须要设置seq标签吗 现在插入的id数据怎么保证连续
426
426
主键id如果不设置seq,则需要自己手工设置。如果设置了seq标签,可以根据` nop_sys_sequence ` 表中的配置来顺序生成,每个实体对应一条记录,如果没有找到对应记录,会生成随机id。
@@ -485,6 +485,13 @@ logInfo函数的第一个参数是模板消息字符串,使用slf4j日志框
485
485
logInfo (" data: {}" ,data);
486
486
```
487
487
488
+ ## 41. 在` _delta ` 目录下定义了已经有的view文件 是按照覆盖的逻辑还是合并的
489
+ 覆盖,需要在根节点上标记` x:extends="super" ` 才会合并。DSL文件具有自说明性,只要查看DSL文件本身就知道它的XDef元模型以及它所继承的基础模型。
490
+
491
+ ## 42. 如果有多个定制的情况是按照什么顺序进行合并。比如NopAuthUser视图文件,首先是在nop内置的,经过层层的个性化,中间框架定制 ->产品定制->衍生产品定制
492
+ Nop平台通过统一的虚拟文件系统来统一管理所有DSL文件。在虚拟文件系统中,可以定义多个平级的delta目录,然后通过` nop.core.vfs.delta-layer-ids ` 配置来指定这些Delta层之间的覆盖关系。
493
+ 比如 ` nop.core.vfs.delta-layer-ids=deploy,product ` 表示` _delta/deploy ` 目录下的文件覆盖` _delta/product ` 目录下的,然后再覆盖非Delta目录下的同名文件。
494
+
488
495
## 部署问题
489
496
490
497
## 设计问题
0 commit comments