处理器
处理器是 GeoEvent 服务中用于在 GeoEvent 从输入传输到输出期间对 GeoEvent 执行识别或丰富等特定操作的组件。
GeoEvent Processor 包括以下处理器:
字段计算器
字段计算器处理器可将计算的值写入现有字段或由处理器创建的新字段。处理器使用来自当前事件字段的值以及处理器配置中的常量值来执行其计算。字段计算器可以评估数学表达式并重新组合字符串值,以生成派生事件数据;它还可以写入常量值来丰富或优化事件数据。
使用字段计算器处理器执行的计算可以是数学性的或词汇性的(基于字符串,而非数值)。将计算的值写入现有字段时,这一计算值会替换正在处理的事件中的当前字段值。处理器会试图转换计算值以匹配现有字段的数据类型;如果数据类型转换失败,则会写入空值。
将计算值写入新字段会更改事件的方案,这需要 GeoEvent Processor 创建将由系统管理的新 GeoEvent 定义。在使用处理器创建新字段时,必须指定字段名称和数据类型。可以为 GeoEvent 定义指定名称以及可选标签,并应将此名称应用于新字段。
在配置处理器时,必须指定名称。此名称应区分大小写,并将用于在 GeoEvent 服务中唯一识别处理器。正在配置的处理器类型可通过处理器下拉箭头指定;字段计算器处理器的属性如上所示。
字段计算器处理器支持常规数学表达式、词汇表达式和逻辑表达式。表达式中的运算对象可以是来自 GeoEvent 定义的文字字段名称,或是已应用于 GeoEvent 定义中字段的标签。例如,表达式 Odom1 + Odom2 可用于将名为 Odom1 和 Odom2 的字段中的值相加,以获得简单总和。如果字段 Odom1 标记为 MILEAGEA 且字段 Odom2 标记为 MILEAGEB,则可以使用表达式 MILEAGEA + MILEAGEB。
字段计算器处理器支持的运算符和函数如下所示。
运算 | 运算符 | 示例 |
加 | + | Odom1 + Odom2 表达式会将字段 Odom1 和 Odom2 中的数值相加,以获得简单总和。同时,支持字符串串联(例如,"Hello" + "World")。 |
减 | - | VALUEA - VALUEB 表达式会将标记为 VALUEA 和 VALUEB 的字段中的数值相减,以获得简单差值。 与支持字符串串联的加法不同,你不能使用减法计算两个字符串间的差值。 |
乘 | * | Altitude * 0.3048 表达式会将名为 Altitude 字段中的数值和常数 0.3048 相乘,以获得简单乘积(此案例是将以英尺计的值转换为以米计的等效值)。 |
除 | / | Distance / 1.609344 表达式会用名为 Distance 的字段中的数值除以常数 1.609344,以获得简单的商(将以千米计的值转换为以英里计的等效值)。 |
模 | % | VALUEA % VALUEB 表达式用标记为 VALUEA 的字段中的数值除以标记为 VALUEB 的字段中的数值,并以双精度值形式返回余数。 |
逻辑与 (AND) | && | Flag1 && Flag2 表达式对名为 Flag1 和 Flag2 的字段中的布尔值执行逻辑与 (AND) 运算,以获得布尔型结果。输入字段必须为布尔型。表达式中的文本字符串(如“TRUE”)和常量值(如 1)不会转换为属于评估一部分的等效布尔值。 |
逻辑或 (OR) | || | Flag1 || Flag2 表达式对名为 Flag1 和 Flag2 的字段中的布尔值执行逻辑或 (OR) 运算,以获得布尔型结果。 |
逻辑非 (NOT) | ! | !(Flag1) 表达式对字段 Flag1 中的布尔值执行逻辑非运算,以获得布尔型结果。支持嵌套表达式,如 !(Flag1 && Flag2)。 |
大于 | > | Altitude > 12500 表达式会执行逻辑评估,以确定字段 Altitude 中的值是否大于指定的常数(结果为布尔值)。 |
大于等于 | >= | Altitude >= 12500 表达式会执行逻辑评估,以确定字段 Altitude 中的值是否大于或等于指定的常数(结果为布尔值)。 |
小于 | < | Altitude < 1500 表达式会执行逻辑评估,以确定字段 Altitude 中的值是否小于指定的常数(结果为布尔值)。 |
小于等于 | <= | Altitude <= 1500 表达式会执行逻辑评估,以确定字段 Altitude 中的值是否小于或等于指定的常数(结果为布尔值)。 |
等于 | == | VALUEA == VALUEB 表达式会执行逻辑评估,以确定标记为 VALUEA 和 VALUEB 的字段中的值是否相等(结果为布尔值)。只有初始产品版本 (10.2.0) 中的数字类型支持相等运算。 |
不等于 | != | VALUEA != VALUEB 表达式会执行逻辑评估,以确定标记为 VALUEA 和 VALUEB 的字段中的值是否不相等(结果为布尔值)。只有初始产品版本 (10.2.0) 中的数字类型支持不等于运算。 |
字段计算器处理器等于和不等于运算符不应该直接应用于浮点值。为正确比较两个十进制值是否相等,必须首先对数值进行进位运算,将数值取整为长整数,然后比较这些长整数值。
- 不比较 MyFloat1 == MyFloat2。
- 需改为比较 round(MyFloat1*1000) == round(MyFloat2*1000)。
字段计算器处理器包括可对 java.lang.Math 中所得结果进行镜像处理的函数。有关完整的技术规范和函数列表,请参考 Java 开发者文档最常用函数的汇总如下。
常数 | |
函数 | 说明 |
E() | 返回以欧拉数 (e) 为底并以指定双精度值为指数的幂。 |
PI() | 返回以双精度表示的 pi(圆的周长与直径之比)。 |
常用函数 | |
函数 | 描述 |
abs(value) | 返回参数的绝对值。 |
ceil(double) | 返回指定双精度值的上限(接近的最大整数)。 |
floor(double) | 返回指定双精度值的下限(接近的最小整数)。 |
hypot(double x, double y) | 返回不含中间溢出或下溢的 sqrt((x*x) + (y*y))。 |
max(value a, value b) | 返回 2 个指定参数值中较大的值。 |
min(value a, value b) | 返回 2 个指定参数值中较小的值。 |
random() | 返回大于等于 0.0 并小于 1.0 的双精度值。 |
round(value) | 返回最接近参数的长整数(假设参数为双精度值)。 |
字段计算器处理器会在可能的情况下处理数值类型转换。例如,当为函数(例如 max(3.14159,25))提供的数值类型不同时,为执行比较,会将这些值转换为可比类型(整型、浮点型或双精度型)。将计算值写入事件的属性字段时,处理器会对这些值进行转换(例如,在事件字段的类型为双精度时,6 + 7 将作为 13.0 写入)。
指数 | |
函数 | 描述 |
sqrt(double) | 返回指定双精度值的平方根。 |
cbrt(value) | 返回指定双精度值的立方根。 |
exp(double) | 返回以欧拉数 (e) 为底并以指定双精度值为指数的幂。 |
pow(double, double) | 返回以第一个参数为底并以第二个参数为指数的幂。 |
对数 | |
函数 | 描述 |
log(double) | 返回双精度值的自然对数(以 e 为底)。 |
log10(double) | 返回双精度值的以 10 为底的对数。 |
字符串函数 | |
函数 | 描述 |
int length(source) | 返回字符串的长度。 |
boolean isEmpty(source) | 如果源的长度为 0,则返回 true。 |
boolean isNull(source) | 如果源值为空,则返回 true。 |
boolean equals(source, Object anObject) | 将源字符串与指定的对象进行比较。如果给定的对象表示一个字符串且与源字符串相同,则返回 true,否则返回 false。 |
boolean equalsIgnore(source, String anotherString) | 不考虑大小写的情况下,将源字符串与另一字符串进行比较。如果这两个字符串的长度相等并且其中的相应字符相同(不区分大小写),则两个字符串将被视作相同(不区分大小写)。如果参数非空并且表示等效字符串(不区分大小写),则返回 true;否则返回 false。 |
int compareTo(source, String prefix) | 按字母顺序将两个字符串进行比较。如果 str 参数与源字符串相同,则返回值 0;如果按字母顺序进行排序时源字符串在 str 参数之前,则返回小于 0 的值;如果按字典顺序进行排序时源字符串在 str 参数之后,则返回大于 0 的值。 |
int compareToIgnore(source, String str) | 按字母顺序将两个字符串进行比较,不区分大小写。如果指定的字符串大于、等于或小于源字符串(不区分大小写),则相应返回一个负整数值、零或一个正整数值。 |
boolean startsWith(source, String prefix) | 测试源字符串是否以指定的前缀开头。如果由前缀参数表示的字符序列与由源字符串表示的字符序列的前缀相同,则返回 true,否则返回 false。 |
boolean endsWith(source, String suffix) | 测试源字符串是否以指定的后缀结束。如果由后缀参数表示的字符序列与由源对象表示的字符序列的后缀相同,则返回 true,否则返回 false。 |
int indexOf(source, String str) | 返回源字符串中首次出现指定子字符串 str 的索引。如果字符串参数以源对象中的子字符串形式出现,则返回首个这种子字符串的第一个字符的索引;如果字符串参数没有以子字符串的形式出现,则返回 -1。 |
int indexOf(source, String str, int fromIndex) | 从指定的索引开始,返回源字符串中首次出现指定子字符串的索引。从指定的索引开始,返回源字符串中首次出现指定子字符串的索引。 |
int lastIndexOf(source, String str) | 返回源字符串中最右侧出现指定子字符串时的索引。如果字符串参数作为源对象的子字符串出现一次或多次,则返回最后一个这种子字符串的第一个字符的索引。如果字符串参数没有以子字符串的形式出现,则返回 -1。 |
int lastIndexOf(source, String str, int fromIndex) | 从指定的索引开始向后搜索,返回源字符串中最后出现指定子字符串的索引。返回源字符串中最后出现指定子字符串时的索引。 |
String substring(int beginIndex) | 返回一个新字符串,该字符串为源字符串的子字符串。该子字符串以指定的索引中的字符开头,并延长至源字符串的末尾。 |
String substring(source, int beginIndex, int endIndex) | 返回一个新字符串,该字符串为源字符串的子字符串。该子字符串以指定的 beginIndex 开头,并延长至索引 endIndex - 1 中的字符。 |
String concat(source, String str) | 将指定的字符串连接在源字符串的末尾。 |
boolean matches(source, String regex) | 判断源字符串是否与给定的正则表达式相匹配。仅当源字符串与给定的正则表达式匹配时才返回。 |
boolean contains (CharSequence s) | 仅当源字符串包含 char 值的指定序列时返回 true。如果源字符串包含 s,则返回 true,否则返回 false。 |
String replaceFirst(source, String regex, String replacement) | 用给定的替代替换与给定的正则表达式相匹配的源字符串的首个子字符串。返回得到的字符串。 |
String replaceAll(source, String regex, String replacement) | 用给定的替代替换与给定的正则表达式相匹配的源字符串的每个子字符串。返回得到的字符串。 |
String replace(source, CharSequence target, CharSequence replacement) | 用指定的文本替换序列替换与文本目标序列相匹配的源字符串的每个子字符串。该替换从字符串的开头进行到其结尾。返回得到的字符串。 |
String toLowerCase(source) | 使用默认区域规则将源字符串中的所有字符转换成小写形式。返回该字符串,将其转换为小写形式。 |
String toUpperCase(source) | 使用默认区域规则将源字符串中的所有字符转换成大写形式。返回该字符串,将其转换为大写形式。 |
String trim(source) | 返回源字符串的副本,忽略前导或尾随空白区。 |
String valueOf(Object obj) | 返回 Object 参数的字符串表示。 |
三角函数 | |
函数 | 描述 |
acos(double) | 返回值的反余弦值(返回角度范围为从 0.0 到 pi)。 |
asin(double) | 返回值的反正弦值(返回角度范围为从 -pi/2 到 pi/2)。 |
atan(double) | 返回值的反正切值(返回角度范围为从 -pi/2 到 pi/2)。 |
atax2(double y, double x) | 返回由直角坐标 (x, y) 转换为极坐标 (r, theta) 而得到的角 theta。 |
cos(double) | 返回角的三角余弦值。 |
cosh(double) | 返回双精度值的双曲余弦值。 |
sin(double) | 返回角的三角正弦值。 |
sinh(double) | 返回双精度值的双曲正弦值。 |
tan(double) | 返回角的三角正切值。 |
tanh(double) | 返回双精度值的双曲正切值。 |
toDegrees(double) | 将以弧度为单位的角转换为以度为单位的近似角。 |
toRadians(double) | 将以度为单位的角转换为以弧度为单位的近似角。 |
字段计算器(正则表达式)
字段计算器(正则表达式)处理器支持使用正则表达式在目标字段中查找模式。对于根据接收的事件相关属性数据计算和构建导数值而言,正则表达式模式匹配是一种强大的工具。字段计算器(正则表达式)处理器不支持普通字段计算器处理器所支持的常规数学表达式、词汇表达式和逻辑表达式。
将计算值写入新字段会更改事件的方案,这需要 GeoEvent Processor 创建将由系统管理的新 GeoEvent 定义。在使用处理器创建新字段时,必须指定字段名称和数据类型。可以为 GeoEvent 定义指定名称以及可选标签,并应将此名称应用于新字段。
在配置处理器时,必须指定名称。此名称应区分大小写,并将用于在 GeoEvent 服务中唯一识别处理器。正在配置的处理器类型可通过处理器下拉箭头指定;字段计算器(正则表达式)处理器的属性如上所示。
字段计算器(正则表达式)处理器通常用于识别和提取目标字段中的子字符串。随后,已提取的子字符串要么被写回目标字段以代替字段原始值,要么被写入新字段。
处理器支持多种正则表达式。可通过正则表达式配置此类处理器,从而提取 FlightID 的数字部分并将所得的值写入名为 FlightNumber 的新字段。有关此操作的分步说明,请参阅 GeoEvent Processor 教程页面中的 GeoEvent Processor 简介教程。
字段计算器(正则表达式)处理器不支持指定正则表达式模式中的反向引用。
字段丰富器(要素服务)
字段丰富器(要素服务)处理器支持对事件数据进行丰富,方法是将属性信息从要素图层或已发布要素服务的非空间表复制到正在处理的事件。这等效于连接操作。
在配置处理器时,必须指定名称。此名称应区分大小写,并将用于在 GeoEvent 服务中唯一识别处理器。正在配置的处理器类型可通过处理器下拉箭头指定;字段丰富器(要素服务)处理器的属性如上所示。
字段丰富器(要素服务)处理器必须配置有为丰富事件而查找并使用要素服务所需的信息。其中包含 ArcGIS Server 连接、服务文件夹、要素服务名称及要素服务内的目标图层。
处理器必须配置有要素服务与正进行丰富的事件均包含的字段名称,以及作为连接执行基础的事件方案中的字段名称。如上所示,在要素图层连接字段文本框中输入要素服务的字段名称。GeoEvent 连接字段文本框将接受已在事件 GeoEvent 定义中应用的标签(例如,上图所示的 TRACK_ID)或来自事件方案的特定字段名称。
单击丰富字段属性中的选择字段按钮以指定要从要素图层表复制的字段名称。另外,也可采用以逗号分隔的列表形式指定 GeoEvent Processor 应用于每个新建字段的标签。
丰富事件操作会从要素服务的一个或多个字段复制数据,并将这些字段作为新数据附加到正在处理的事件。这会更改事件方案并要求 GeoEvent Processor 创建将由系统管理的新 GeoEvent 定义。已指定字段名称,也将传递此要素服务中的字段数据类型,因此不会作为处理器配置的一部分来指定数据类型。指定 GeoEvent Processor 应该对因此要创建的 GeoEvent 定义使用的名称。
有关使用字段丰富器(要素服务)处理器将事件数据与要素服务数据相连接的分步说明,请参阅 GeoEvent Processor 教程页面中的 GeoEvent Processor 简介教程练习。
字段丰富器(文件)
字段丰富器(文件)处理器支持通过将属性信息从系统文件复制到正在处理的事件对事件数据进行丰富。这与字段丰富器(要素服务)处理器相似,只是丰富源为系统文件而非要素服务。
在配置处理器时,必须指定名称。此名称应区分大小写,并将用于在 GeoEvent 服务中唯一识别处理器。正在配置的处理器类型可通过处理器下拉箭头指定;字段丰富器(文件)处理器的属性如上所示。
必须指定包含要用作丰富数据源的文件的系统文件夹。在处理器配置完成前,此系统文件夹需要作为数据存储注册到 GeoEvent Processor。文件名称不是可注册项目;必须指定文件名称,并由 GeoEvent Processor 在已注册的数据存储中查找具有该名称的文件。
处理器必须配置有系统文件与正进行丰富的事件均包含的字段名称,以及作为连接执行基础的事件方案中的字段名称。如上所示,在文件连接字段文本框中输入系统文件数据表中的这个字段名称。GeoEvent 连接字段文本框将接受已在事件 GeoEvent 定义中应用的标签(例如,上图所示的 TRACK_ID)或来自事件方案的特定字段名称。
在丰富字段属性中,采用以逗号分隔的列表形式指定从要素图层表复制的字段名称。另外,也可采用以逗号分隔的列表形式指定 GeoEvent Processor 应用于每个新建字段的标签。
丰富事件操作会从系统文件的一个或多个字段复制数据,并将这些字段作为新数据附加到正在处理的事件。这会更改事件方案并要求 GeoEvent Processor 创建将由系统管理的新 GeoEvent 定义。已指定字段名称,字段数据类型也会在系统文件中指定,因此不会作为处理器配置的一部分来指定数据类型。指定 GeoEvent Processor 应该对因此要创建的 GeoEvent 定义使用的名称。
有关使用字段丰富器(文件)处理器将事件数据与系统文件数据相连接的分步说明,请参阅 GeoEvent Processor 教程页面中的 GeoEvent Processor 简介教程练习。
使用文本文件作为丰富源时,文件必须采用下图所示的格式。具体来说,文件的第一行必须以逗号分隔值的形式标识字段名称。第二行必须指定每个字段的数据类型。从文件的第三行开始输入文件数据值。
字段映射器
字段映射器处理器支持数据对齐。在 GeoEvent Processor 中,每个 GeoEvent 均具有可为事件数据确定属性字段和数据类型(日期、字符串和整型等)的关联方案。这个方案被称为 GeoEvent 定义。特定输入数据流的 GeoEvent 定义可能包括一些字段,这些字段的名称与由 GeoEvent Processor 更新的已发布要素服务的方案不匹配。在这种情况下,字段映射器处理器则会用于映射输入方案中的字段,以使数据与输出方案相匹配。
在配置处理器时,必须指定名称。此名称应区分大小写,并将用于在 GeoEvent 服务中唯一识别处理器。正在配置的处理器类型可通过处理器下拉箭头指定;字段映射器处理器的属性如上所示。
通过选择相应属性设置源 GeoEvent 定义和目标 GeoEvent 定义。属性对话框将列出 GeoEvent 定义目标字段,允许从源字段中选择应该映射到目标的字段。随即列出目标字段的数据类型,以确定最适合从源 GeoEvent 定义映射到目标 GeoEvent 定义的数据。
上图中将 <Field Name> 显示为目标 GeoEvent 定义实际字段名称的替代。字段名称和数据类型的实际列表应取决于被选择作为目标 GeoEvent 定义的 GeoEvent 定义。
字段映射器处理器可用于减少从输入传输到输出的属性字段的数量,因为只有源 GeoEvent 定义中的选定字段将会映射到目标 GeoEvent 定义的字段。这在输入数据流包含大量可能不太重要的属性值时十分有用。当输入的事件数据与输出 GeoEvent 定义的数据类型不匹配时,字段映射器处理器也可用于处理数据类型的转换。例如,可将整型数据转换为双精度表示,或将数字数据转换为字符串表示。这会使输入数据与所需的输出 GeoEvent 定义相匹配。
字段映射器处理器的另一个使用案例是在数据方案需要进行平面化时使用。实时数据流有时不会以单个离散数据类型表示属性数据,而是以一组类型多样的多个属性值来表示属性数据。如果没有先将各个组元素映射到与已发布要素服务方案相匹配的输出 GeoEvent 定义的离散字段,此类层次数据结构就不能用于更新已发布的要素服务。
字段缩减器
在 GeoEvent Processor 中,每个 GeoEvent 均具有可为事件数据确定属性字段和数据类型(日期、字符串和整型等)的关联方案。这个方案被称为 GeoEvent 定义。字段缩减器处理器支持通过移除事件不需要的属性来优化数据方案,从而允许对事件的简化版本进行附加处理或输出。
在配置处理器时,必须指定名称。此名称应区分大小写,并将用于在 GeoEvent 服务中唯一识别处理器。正在配置的处理器类型可通过处理器下拉箭头指定;字段缩减器处理器的属性如上所示。
处理器接收的事件的 GeoEvent 定义会指定所接收事件的字段名称和数据类型。因此,只有从已接收事件中移除的字段才必须以逗号分隔的列表形式指定。在上图所示的要移除的字段属性中输入要移除的字段列表。
通过移除属性字段修改事件数据改变了事件的方案,这需要 GeoEvent Processor 为简化事件创建并管理新的 GeoEvent 定义。在属性对话框中,为由此创建的 GeoEvent 定义指定名称 GeoEvent Processor。
地理标记器
地理标记器处理器支持通过追加与事件具有空间关系的 GeoFences 的相关信息来丰富事件。例如,如果在已知的感兴趣区中找到某事件位置,其所包含的 GeoFence 类别和名称可作为新属性值附加到事件。这样便可通过某时间点上事件与感兴趣区的空间关系信息来丰富事件。
在配置地理标记器处理器之前必须将 GeoFences 从要素服务导入至 GeoEvent Processor。有关在 GeoEvent Processor 中使用 GeoFences 的详细信息,请参阅管理 GeoFence。
在配置处理器时,必须指定名称。此名称应区分大小写,并将用于在 GeoEvent 服务中唯一识别处理器。正在配置的处理器类型可通过处理器下拉箭头指定;地理标记器处理器的属性如上所示。
必须配置处理器以识别预计将与事件具有空间关系的 GeoFence。通过在如上图所示的属性对话框的 GeoFence(s) 字段中输入简单的正则表达式来指定一组 GeoFence。可在 GeoEvent Processor 内指定一个或多个类别的一个或多个 GeoFence。例如,假设有多个 GeoEvent 已导入到 States 类别。可通过表达式 States/.* 对地理标记器处理器进行配置,以指明在搜索已接收事件的空间关系时,所有 States 类别内的已命名区域都应加以考虑。输入 .*/.* 使处理器对任何已命名类别的全部已知 GeoFence 均加以考虑。
空间运算符属性指定了事件位置与给定 GeoFence 应有的空间关系。要了解 GeoEvent Processor 中可用空间关系的详细信息,请参阅过滤器。为确定事件与 GeoFence 的空间关系,该事件必须具有类型为“几何”的字段。GeoEvent 几何字段属性将接受标签(如上文所述的 GEOMETRY)或 GeoEvent 定义中的特定字段名称。
事件的空间关系一旦确定,便会将 GeoFence 的名称追加到事件数据来丰富事件。处理器将创建的字段名称会在地理标记字段名称文本框中指定。默认操作是将数据以逗号分隔的列表形式追加到事件;此操作由地理标记格式属性指定。丰富数据可包括 GeoFence 名称或 GeoFence 名称与类别。将 GeoFence 类别包含在地理标记中属性指定了丰富级别。
地理标记器处理器执行的丰富操作可改变事件的方案。GeoEvent Processor 将为已丰富的事件创建和管理新的 GeoEvent 定义。处理器包括一个字段,该字段可指定 GeoEvent Processor 将创建的 GeoEvent 定义的名称。
有关使用地理标记器处理器的分步说明,请参阅 GeoEvent Processor 教程页面中的 GeoEvent Processor 简介教程。
事件检测器
事件检测器处理器使用指定的属性和空间条件来发现和报告事件点。可在处理器属性中指定开启条件和关闭条件,这使得事件点可涵盖一段时间内的一系列事件。例如,用于报告车辆位置和当前速度的基于事件的数据流可在车辆超过一定速度或驶入危险区域时生成一个事件点。当车辆恢复到安全速度或驶离危险区域后,该事件点便会关闭。
在配置处理器时,必须指定名称。此名称应区分大小写,并将用于在 GeoEvent 服务中唯一识别处理器。正在配置的处理器类型可通过处理器下拉箭头指定;事件检测器处理器的属性如上所示。
由事件检测器处理器生成的事件点需要具有名称,这样便可据此识别所创建的事件点。例如,为提醒车辆超速而创建的事件检测器处理器可以命名为 SpeedingVehicle。如上文所述在事件点名称属性中输入名称。所有由事件检测器处理器生成的事件点都必须具有开启条件和关闭条件,这两个条件均由表达式构建器构建。
必须指定开启条件。如果未指定关闭条件,则将使用开启条件的逻辑非。
事件检测器处理器可用于将指定的严重性应用于生成的事件点。可用级别分别是通知、警告和紧急。给定处理器创建的事件点会限制为单个的严重性级别;必须编辑处理器并且重新发布 GeoEvent 服务以更改处理器分配给其事件点的严重性级别。
事件检测器处理器创建的事件点类型也是处理器属性的一部分。存在两种可能的事件类型:时间点类型和累积类型。
- 时间点事件没有关闭条件。可将这些事件视为瞬间事件,它们在生成后会立即关闭,因此不具有事件持续时间。
- 累积事件既有开启条件,也有关闭条件。从事件生成到事件过期(或关闭)的这段时间即为事件持续时间。随着附加事件数据的接收,累积事件会由 GeoEvent Processor 进行监控和更新。
每个事件检测器处理器都具有与其所生成的事件点相关的特定 Geometry Type。大多数事件点和事件更新都与某个特定时间的某个点位置相关,所以通常会选择点几何。但是,多点和折线也是所生成事件点的受支持的几何类型。
某用例可能在一段时间后自动关闭事件点。使用过期时间配置事件检测器处理器后,即使未满足事件点的关闭条件,也允许 GeoEvent Processor 在一段时间后自动关闭事件点。过期时间是以秒为单位的数值;输入零值可禁用处理器所创建事件点的自动过期。
有关如何配置事件检测器处理器的分布练习,请参阅 GeoEvent Processor 教程页面中的 GeoEvent Processor 简介教程。
追踪间距检测器
追踪间距检测器处理器用于检测事件的缺失。与事件检测器处理器一样,当在事件流中检测到间距时,追踪间距检测器将生成一个新事件进行报告。该处理器可配置为或在预期事件未接收期间生成连续通知,或在检测到间距时生成单个通知,并在处理器开始再次接收事件时通知您第二个事件。
在配置处理器时,必须指定名称。此名称应区分大小写,并将用于在 GeoEvent 服务中唯一识别处理器。正在配置的处理器类型可通过处理器下拉箭头指定;追踪间距检测器处理器的属性如上所示。
间距通知模式属性将指定上述通知行为。选择 OnChange 指定当检测到间距时,处理器应生成一个单个事件,并且当处理器开始再次接收事件时,应生成第二个事件。选择 Continuous 说明您希望在处理器未接收新事件期间为每个轮询间隔生成一个事件。
间距持续时间(秒)属性指定在确定输入数据流中已发生间距前处理器将等待的时间(以秒为单位)。使用上图所示值,处理器仅能够确定自上次处理器接收事件开始至少 300 秒后会存在间距。
间距检测间隔(秒)属性将指定处理器的轮询间隔。同样,使用上图所示值,处理器每隔 120 秒将进行一次检查,以查看自上次处理器接收事件以来是否存在不少于 300 秒的间距。当间距通知模式设置为 Continuous 通知时,轮询间隔还能够控制生成通知事件的频率。当设置为 OnChange 通知时,仅在处理器轮询并发现事件流已停止时(即处理器之前接收事件时)才发送事件;反之亦然,当处理器检测到间距,然后轮询并发现已再次接收事件时将发送事件。
几何字段名称属性为预期包含几何的事件字段指定名称。最后接收的几何将追加到通过处理器生成的通知事件。例如,如果事件流报告车辆位置,并且处理器被配置为每隔 30 秒进行一次轮询以确定自上次接收车辆报告以来是否存在至少 120 秒的间距,则可将处理器配置为包含最后报告的车辆位置及其间距通知。
无操作
无操作处理器不会采取任何操作,并且对它接收到的 GeoEvent 无任何影响。事件经过无操作处理器时不会受到任何影响。
在配置处理器时,必须指定名称。此名称应区分大小写,并将用于在 GeoEvent 服务中唯一识别处理器。正在配置的处理器类型可通过处理器下拉箭头指定;无操作处理器的属性如上所示。此处理器类型无需配置其他属性。
无操作处理器可用于在 GeoEvent 服务中包含 Stub 或 NoOp 组件作为占位符。之后可使用另一个处理器来替代无操作处理器,这样便可专注于设计和测试 GeoEvent 服务的其他部分。
无操作处理器在下列情况中也是很有用处的:
- 对未按预期运行的已发布 GeoEvent 服务进行故障排除。配置无操作处理器执行无操作可有效将其从 GeoEvent 服务中移除,而不必强制重绘服务的工作流。
- 在完成开发一个或多个组件之前设计事件处理并过滤 GeoEvent 服务的工作流。完成开发所有附属组件后,无操作处理器便可重新配置为另一个处理器。
- 说明如何暂时关闭由 GeoEvent 服务的特定组件执行的处理过程。通过将某个现有处理器配置为无操作处理器并重新发布 GeoEvent 服务,可高亮显示 GeoEvent Processor 正在执行的事件处理过程。