内建 Function
内建 Function(BuiltIn-Function)
Trantor 默认为每个类型的模型对象(快照模型除外)默认生成一组内建 Function 以供前端视图使用。
同时,还提供了更灵活的配置方式用于控制内建 Function 的生成策略和匿名访问支持,请看 内建 Function 的配置生成策略
目前内建 Function 有以下几种行为:
@Documented@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)public @interface BuiltInFunction {
BuiltInFunctionType type();
enum BuiltInFunctionType { Create, Delete, BatchDelete, Update, UpdateWithNull, Query, QueryOne, Paging, SaveSetting, QuerySetting, MarkTag, MarkTagBatch }}- Create:创建
- Delete:删除
- BatchDelete:批量删除
- Update:更新(新值如果为 NULL 则忽略)
- UpdateWithNull:更新(允许更新字段为 NULL)
- Query:查询
- QueryOne:查询单条
- Paging:分页查询
- SaveSetting:保存配置(仅针对配置模型)
- QuerySetting:查询配置(仅针对配置模型)
- MarkTag:标签打标(仅针对标签模型)
- MarkTagBatch:批量打标(仅针对标签模型)
不同类型模型会生成不同操作行为的内建 Function ,对应如下:
业务模型、非持久化模型、搜索模型:
- BatchDelete**${modelSimpleName}**BuiltInFunc
- Create**${modelSimpleName}**BuiltInFunc
- Delete**${modelSimpleName}**BuiltInFunc
- Paging**${modelSimpleName}**BuiltInFunc
- QueryOne**${modelSimpleName}**BuiltInFunc
- Query**${modelSimpleName}**BuiltInFunc
- Update**${modelSimpleName}**BuiltInFunc
- UpdateWithNull**${modelSimpleName}**BuiltInFunc
配置模型:
- QuerySetting**${modelSimpleName}**BuiltInFunc
- SaveSetting**${modelSimpleName}**BuiltInFunc
PS: ${modelSimpleName} 是模型类名(Model Class Sinple Name)
代码示例
- 业务模型 / 非持久化模型 / 搜索模型
@Data@Model(name = "Item business model", mainField = ItemBO.itemName_field)public class ItemBO extends BaseModel<Long> { // 省略字段定义...}执行 mvn clean compile 命令后可以在目录 target/generated-sources/annotations/.../func/builtin 下生成相关 buildIn-Function 类,例如上面 ItemBO 类就自动生成了以下 buildIn-Function :
- BatchDeleteItemBOBuiltInFunc
- CreateItemBOBuiltInFunc
- DeleteItemBOBuiltInFunc
- PagingItemBOBuiltInFunc
- QueryOneItemBOBuiltInFunc
- QueryItemBOBuiltInFunc
- UpdateItemBOBuiltInFunc
- UpdateWithNullItemBOBuiltInFunc
- 配置模型
@Data@SettingModel(name = "交易相关的配置")public class TradeSetting extends BaseSettingModel { // 省略字段定义...}生成的内建 Function 如下:
- QuerySettingTradeSettingBuiltInFunc
- SaveSettingTradeSettingBuiltInFunc
- 内建 Function 代码示例
我们可以随便查看一个上面的内建 Function 代码,比如 CreateItemBOBuiltInFunc:
@Generated("io.terminus.trantorframework")@BuiltInFunction(type = BuiltInFunctionType.Create)@Function(name = "Built-in ItemBO Create Function") interface CreateItemBOBuiltInFunc {
ItemBO execute(ItemBO itemBO);}可以看到可编排服务声明独有的 @Function 外,还附加了一个 @BuiltInFunction注解用于标注它是一个内建 Function。
使用注意事项
目前的内建 Function 资源只能作为前端视图调用 logicFunction="" 时使用,不能用于代码调用,但是可以使用 DS工具类代替。
例如:CreateItemBOBuiltInFunc 等同于 DS.create(Model model) ,其余类似。
前端视图使用内建 Function 跟自定义 Function 一样,例如:
<Action type="Submit" logicFunction="example_model_CreateItemBOBuiltInFunc" after="GoBack" layout="Footer"/>