@ProcessDef :用来标注方法,描述工具的基本信息。
namespace() | 所在的名称空间 | 类比 maven dependency 的 groupId |
name() | 名字 | 类比 maven dependency 的 artifactId |
caption() | 别名 | 默认为空,生成工具时会取 name 作为默认值 |
description() | 描述信息 | 默认为空 |
Version() | 版本信息 | double 类型,默认1.0 |
compatibleVersion() | 兼容版本信息 | double类型,默认1.0 |
@InputDef :用来标注方法参数,绑定 process 工具的 Input 和具体参数。
name() | 名称 | 同一个工具输入名称唯一不可重复 |
caption() | 别名 | 默认为空,取 name() 作为默认值 |
description() | 描述信息 | |
isRequired() | 是否必填 | 默认为 true |
dataType() | 数据类型 | 一般不需要设置,运行时反射对应的参数获取类型即可。 |
defaultValue() | 参数的默认值 | 字符串类型,默认为"";单值参数有效,集合型参数将会忽略这个属性 |
meta() | 输入参数的附加信息 | 比如数值型参数的值域,字符串型参数是连接信息还是普通字符串等内容 |
asynchronizable() | 是否支持异步 | |
lockDataProvider() | 仅当为 false 的时候有效。有些数据类型需要进一步处理需要同步的数据,比如 Recordset,需要同步的是 Recordset.getDataset() |
-
dataType() 仅在以下几种情况有效:
- 当参数类型是 List
之类的泛型集合时,由于运行时 T 会被擦除,无法获取到正确的类型,因此需要在 dataType 里指定子项数据类型; - 当 InputDef 是同一个参数的多个注解之一时,由于程序无法知道 ParameterBuilder 会如何处理这些参数以及这些参数是什么类型,因此需要在 dataType 里指定数据类型;
- dataType()指定的类型是参数类型的子类型。
- 当参数类型是 List
-
asynchronizable()
- 当工具执行之后,会直接修改该 input 的数据对象时,强烈建议设置该值为 false;
- 这仅提供一种通用的保证异步执行模型时的数据同步机制,如需更为精细完整的同步,请在自定义数据或者自定义工具层面自行实现;
- 所有基本数据类型以及对应的封装类型,均不支持。
-
lockDataProvider()
- 这仅提供一种通用的保证异步执行模型时的数据同步机制,如需更为精细完整的同步,请在自定义数据或者自定义工具层面自行实现;
- 通过 LockDataProvider SPI 可以添加默认配置,如果 asynchronizable()设置为 false,优先使用通过注解配置的 LockDataProvider,没有注解配置,再查找 SPI 默认配置;
- 所有基本数据类型以及对应的封装类型,均不支持;
- 如果 Input 是 CollectionInput,那么这个设置针对 Collection 的子项做数据加锁;
- 如果 Input 是 SingleInput,但 type 是集合,建议直接使用 J.U.C 提供的类型实现同步。
-
目前已经支持的 meta 数据类型:
-
数值类型(自动匹配类型):double、float、int、short,key与对应含义如下:
minValue 数值类型参数规定的最小值 maxValue 数值类型参数规定的最大值 left 数值类型规定范围的左区间,可选值为:{open,close} right 数值类型规定范围的右区间,可选值为:{open,close} 例如下面的 InputDef 定义的 meta 表示的就是该参数支持[4, 200]这个数学区间上的范围。
-
String类型(需要指定字符串的具体意义)
stringType String的意义,目前支持{connection, FieldType} stringType=connection connection.mode 表示连接模型,可选值为{SELECT,CREATE} stringType=FieldType supportType 表示支持的 FieldType 类型,可选值为 FieldType 类型枚举字符串 例如下面的 InputDef 定义的 meta 表示的是为参数限定的内容是 FieldType,支持的 FieldType 为INT16,INT32,INT64,SINGLE,DOUBLE。
-
DatasetVector类型:支持的矢量数据集类型
supportType 支持的DatasetType类型 可选值为DatasetType类型枚举字符串 例如下面的 InputDef 表示的是支持 DatasetType 为 POINT,LINE,REGION 的矢量数据集(即,支持点、线、面数据集)。
-
@NamespaceDef :工具的空间名称,如果没有,则使用registry中的默认namespace。
namespace() | 名称空间id | 类比 maven dependency 的 groupId。 |
title() | 命名空间名字 | 作为处理自动化界面显示出的分级目录名 |
description() | 命名空间描述 | 与title保持一致 |
@OutputDef :用来标注工具的输出,有 OutputDefs 作为容器,支持重复注解。
name() | 名字 | 同一个工具输出名字唯一,不可重复 |
caption() | 别名 | 默认为空,取 name 作为默认值 |
description() | 描述信息 | |
outputSourceType() | 输出绑定类型 | RETURN 表示使用方法返回值作为输出数据 |
PARAMETER 表示绑定某个参数作为输出数据,与 outputSource() 搭配使用 | ||
outputSource() | 仅 outputSourceType 为 PARAMETER 时有效,与对应索引值的参数绑定 | |
meta() | 输出参数的附加信息 | 字符串为 key=value 的形式的数组,比如数据集类型等 |
isAcceptNull() | 是否接受为null的输出 |
RETURN | 表示使用方法返回值作为输出数据 |
PARAMETR | 表示绑定参数作为输出数据 |
FIELD | 表示绑定字段作为输出数据,暂时没有用上 |
getName() | 工具的 factoryName |
getDefaultNamesapce() | 工具默认的 amespace |
getTitle() | 工具的 title |
getDescription() | 工具的description |
getResourceBundleName | 资源化 |
getClasses() | 需要扫描的类,用来发现工具的类型数组 |