更新 knowledge.md

This commit is contained in:
oyo
2025-10-27 15:16:49 +08:00
parent 6c8032e25c
commit 41489ba150

View File

@@ -705,9 +705,12 @@ meeting_with_room_and_agenda_wo示例
- 提取需求中的查询信息,以输入的查询对象作为上下文,构建查询语句 - 提取需求中的查询信息,以输入的查询对象作为上下文,构建查询语句
- 如返回数据有列表属性过滤需求filter提取需求中的过滤信息针对可过滤字段(列表属性)分别创建过滤条件。过滤条件不能使用列表属性作为查询条件属性(不能使用contains语法)。属性字段是从根节点属性到当前属性的路径 - 如返回数据有列表属性过滤需求filter提取需求中的过滤信息针对可过滤字段(列表属性)分别创建过滤条件。过滤条件不能使用列表属性作为查询条件属性(不能使用contains语法)。属性字段是从根节点属性到当前属性的路径
- **查询语法和过滤语法** - **查询语法和过滤语法**
- **核心规则**:所有一元和二元操作符的左侧必须是字段或对象属性
- 字段来自WO定义中的属性包括关联对象的字段
- 变量:以#开头的变量,由调用方传入
- 基本语法格式:属性名 操作符 变量或常量,变量格式为#变量名;枚举类型常量用单引号包围,例如:'MALE' - 基本语法格式:属性名 操作符 变量或常量,变量格式为#变量名;枚举类型常量用单引号包围,例如:'MALE'
- 数值、时间类型属性操作符:!=, ==, >, <, <=, >=, in, notIn, isNullOrNot - 数值、时间类型属性操作符(左侧必须是字段,不能是#变量)!=, ==, >, <, <=, >=, in, notIn, isNullOrNot
- 文本类型属性操作符like, isNotNull, isNull, !=, ==, in, notIn, isNullOrNot - 文本类型属性操作符(左侧必须是字段,不能是#变量)like, isNotNull, isNull, !=, ==, in, notIn, isNullOrNot
- isNullOrNot是三元操作符根据入参判断过滤某值是否为null。例如gender isNullOrNot #genderIsNullOrNot若入参为true等价于where gender is null若为false等价于where gender is not null - isNullOrNot是三元操作符根据入参判断过滤某值是否为null。例如gender isNullOrNot #genderIsNullOrNot若入参为true等价于where gender is null若为false等价于where gender is not null
- 对象属性或列表对象属性操作符isNull, isNotNull, isNullOrNot。本对象不能直接用此操作符 - 对象属性或列表对象属性操作符isNull, isNotNull, isNullOrNot。本对象不能直接用此操作符
- 对象属性可对其子属性进行上述查询 - 对象属性可对其子属性进行上述查询
@@ -716,7 +719,7 @@ meeting_with_room_and_agenda_wo示例
- 可插入括号()对条件分组 - 可插入括号()对条件分组
- 列表对象属性只能使用contains、isNull、isNotNull操作符wo列表类型可用contains(子查询)表示列表属性中需包含至少一个满足子查询条件的对象其他列表类型只能用isNull或isNotNull - 列表对象属性只能使用contains、isNull、isNotNull操作符wo列表类型可用contains(子查询)表示列表属性中需包含至少一个满足子查询条件的对象其他列表类型只能用isNull或isNotNull
- 通过and, or, not连接符拼装子查询完成查询。不要使用未提及的操作符号、连接符 - 通过and, or, not连接符拼装子查询完成查询。不要使用未提及的操作符号、连接符
- 查询条件中的入参可在运行时传入或不传入值,不传入值表示该参数相关条件不起作用基于这种动态效果多条件联合查询可优先使用AND - 查询条件中的变量可在运行时传入或不传入值,不传入值表示该变量相关条件不起作用基于这种动态效果多条件联合查询可优先使用AND
- 使用点号(.)访问当前对象的单值对象类型子属性,可多个点号组合访问嵌套单值对象属性 - 使用点号(.)访问当前对象的单值对象类型子属性,可多个点号组合访问嵌套单值对象属性
- 查询条件中的属性必须是当前查询对象的属性或单值对象属性或单值对象子属性 - 查询条件中的属性必须是当前查询对象的属性或单值对象属性或单值对象子属性
- 禁止使用filter语法 - 禁止使用filter语法
@@ -794,9 +797,37 @@ meeting_with_room_and_agenda_wo示例
} }
@detectDelim @detectDelim
</code> </code>
- **操作符使用的核心规范,必须遵循**
读方案查询条件遵循严格的操作符规范。以下是完整的操作符使用白名单:
- **一元操作符(仅作用于字段):**
- isNull判断字段值是否为null
用法field isNull
示例meeting_title isNull
- isNotNull判断字段值是否不为null
用法field isNotNull
示例creator_id isNotNull
- **二元操作符(字段 操作符 值/变量):**
- 比较类:==, !=, >, <, >=, <=
用法field == #param 或 field == 'constant'
示例meeting_date == #meetingDate
- 集合类in, notIn
用法field in #paramList 或 field notIn #presetConstants
示例status in #statusList
- 文本类like
用法field like #keyword
示例title like #searchKeyword
- **三元操作符仅isNullOrNot**
- isNullOrNot根据布尔变量判断字段值是否为null
用法field isNullOrNot #booleanParam
语义:如果#booleanParam为true等价于 field is null
如果#booleanParam为false等价于 field is not null
示例gender isNullOrNot #filterNullGender
- **禁止的错误用法(黑名单):**
- 错误1: #param isNull / isNotNull / isNullOrNot变量不能是操作符左侧
- 错误2: (field == #param OR #param isNull)(不能对变量使用判空操作符)
- 错误3: #param == 'constant'(变量只能作为右侧值)
- 错误4: #paramA in #paramB变量不能作为操作符左侧
- **创建读方案易错点,必须严格参照,如果违背则为非法读方案** - **创建读方案易错点,必须严格参照,如果违背则为非法读方案**
- 读方案查询语法中,#name == 'a' 或 #type isNull为非法原因是参数不能在操作符的左侧
- 读方案查询语法中判空语句只有以下三种是合法的1.name isNull2.name isNotNull3.name isNullOrNot #nameIsNull参数名可以按需指定
- 读方案至少需要选择一种返回方式请设置supportPagination为true或者supportWaterfall为true或者supportQueryAll或者supportCount为true - 读方案至少需要选择一种返回方式请设置supportPagination为true或者supportWaterfall为true或者supportQueryAll或者supportCount为true
- 如果读方案的supportPagination为true或者supportWaterfall为true则必须至少设置一个默认排序字段 - 如果读方案的supportPagination为true或者supportWaterfall为true则必须至少设置一个默认排序字段
- **读方案设计元素的表达** - **读方案设计元素的表达**