跳转到内容

内建 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)

代码示例

  1. 业务模型 / 非持久化模型 / 搜索模型
@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
  1. 配置模型
@Data
@SettingModel(name = "交易相关的配置")
public class TradeSetting extends BaseSettingModel {
// 省略字段定义...
}

生成的内建 Function 如下:

  • QuerySettingTradeSettingBuiltInFunc
  • SaveSettingTradeSettingBuiltInFunc
  1. 内建 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"/>