action.ts
14.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
export default {
title: '动作',
description: '执行特别动作',
assignToCustomer: {
name: '分配给客户',
details:
'按客户名称模式查找目标客户,然后将发起者实体分配给该客户。如果不存在将创建新客户,并且【如果不存在则创建新客户]设置为true。',
description: '将消息发起人实体分配给客户',
fields: {
customerNamePattern: '客户名称模式',
createCustomerIfNotExists: '创建新客户(如果不存在)',
customerCacheExpiration: '客户缓存过期时间(秒)',
},
},
clearAlarm: {
name: '清除告警',
details:
"详情-基于传入消息创建JSON对象的JS函数。该对象将被添加到Alarm.details字段中。节点输出:如果告警未被清除,则返回原始消息。否则,返回类型为【告警】新消息【msg】属性和【metadata】中的告警对象将包含【isClearedAlarm】属性。可以通过【msg】属性访问消息负载。例如'temperature='+msg.temperature。也可以通过【metadata】属性访问消息元数据。例如'name='+metadata.customerName。",
description: '清除告警',
fields: {
alarmType: '报警类型',
alarmDetailsBuildJs: '报警详细信息生成器',
alarmTypeButtonName: '测试详情函数',
},
},
copyToView: {
name: '复制到视图',
details:
'根据实体视图配置,将属性从资产/设备复制到相关的实体视图。复制将仅针对开始日期和结束日期之间的属性,并根据属性键进行配置。将消息发起者更改为相关的实体视图,并根据更新的实体视图的计数生成新消息。',
description: '将属性从资产/设备复制到实体视图,并将消息发起者更改为相关实体视图。',
},
createAlarm: {
name: '创建告警',
details:
"详情-基于传入消息创建JSON对象的JS函数。该对象将被添加到Alarm.details字段中。节点输出:如果告警未被创建,则返回原始消息。否则,返回类型为【告警】的新消息,【msg】属性和【metadata】中的告警对象将包含其中一个属性【isNewAlarm/isExistingAlarm】。可以通过【msg】属性访问消息负载。例如'temperature='+msg.temperature。可以通过【metadata】属性访问消息元数据。例如'name='+metadata.customerName。",
description: '创建或更新告警。',
fields: {
alarmDetailsBuildJs: '报警详细信息生成器',
useMessageAlarmData: '使用消息报警数据',
overwriteAlarmDetails: '覆盖报警详细信息',
alarmType: '报警类型',
severity: '报警严重性模式',
propagate: '向相关实体传播警报',
relationTypes: '要传播的关系类型',
propagateToOwner: '向实体所有者(客户或租户)传播警报',
propagateToTenant: '向租户传播警报',
dynamicSeverity: '使用警报严重性模式',
scriptButtonName: '测试详情函数',
},
},
createRelation: {
name: '创建关联关系',
details: '如果关系已存在或已成功创建;通过Success链发送消息,否则将使用Failure链路。',
description:
'按实体名称模式和(资产、设备的实体类型模式)查找目标实体,然后按类型和方向创建与发起人实体的关系。如果所选实体类型:资产、设备或客户将创建新实体(如果不存在),并选中【创建新实体】;如果从邮件发起人到所选实体的关系不存在,并且选中【删除当前关系】,则在创建新关系之前,将删除按类型和方向与邮件发起人的所有现有关系;如果创建了从邮件发件人到所选实体的关系,并且选中了【将发件人更改为相关实体】,则出站邮件将作为来自该实体的邮件进行处理。',
fields: {
direction: '方向',
entityType: '类型',
entityNamePattern: '名称模式',
entityTypePattern: '类型模式',
relationType: '关系类型模式',
createEntityIfNotExists: '如果不存在,则创建新实体',
removeCurrentRelations: '删除当前关系',
changeOriginatorToRelatedEntity: '将发起人变更为相关实体',
entityCacheExpiration: '实体缓存过期时间(秒)',
},
},
deleteRelation: {
name: '删除关联关系',
details: '如果成功删除关系;通过则走Success链发送消息,否则将使用Failure链。',
description:
'如果“删除单个实体”设置为true,则按实体名称模式查找目标实体,然后按类型和方向删除与发起者实体的关系,否则规则节点将按类型和顺序,删除与消息发起人的所有关系。',
fields: {
deleteForSingleEntity: '删除与特定实体的关系',
direction: '方向',
entityType: '类型',
entityNamePattern: '名称模式',
relationType: '关系类型模式',
entityCacheExpiration: '实体缓存过期时间(秒)',
},
},
delay: {
name: '延迟(已弃用)',
details:
'为消息传输配置一段时间的延迟。请注意,此节点确认当前队列中的消息(消息将从队列中删除)。不推荐,因为已确认的消息仍保留在内存中(待延迟),并且即使选择了【重试失败和超时】处理策略,也不能保证消息得到处理。',
description: '延迟传入消息(已弃用)',
},
deviceProfile: {
name: '设备配置',
details:
'根据设备配置文件中定义的告警规则,创建和清除报警。输出关联类型为【告警创建】、【告警更新】、【告警严重性更新】和【告警已清除】,如果没有告警受到影响,则仅为【成功】。',
description: '根据设备配置文件处理设备消息。',
fields: {
persistAlarmRulesState: '保持告警规则的状态',
fetchAlarmRulesStateOnStart: '获取告警规则的状态',
},
},
generator: {
name: '生成器',
details: '生成具有可配置周期的消息。用于生成消息的Javascript函数。',
description: '定期生成消息。',
fields: {
msgCount: '消息计数(0-无限制)',
periodInSeconds: '周期(秒)',
jsScript: '产生',
originatorType: '类型',
jsScriptButtonName: '测试生成器函数',
},
},
gpsGeofencingEvents: {
name: 'GPS地理围栏事件',
details: '从传入消息中提取纬度和经度参数,并根据配置参数返回不同的事件。',
description: '使用基于GPS的地理围栏生成传入消息。',
fields: {
latitudeKeyName: '纬度键名称',
longitudeKeyName: '经度关键字名称',
perimeterType: '周界类型',
fetchPerimeterInfoFromMessageMetadata: '从消息元数据中获取周边信息',
perimeterKeyName: '周界密钥名称',
centerLatitude: '中心纬度',
centerLongitude: '中心经度',
range: '范围',
rangeUnit: '量程单位',
polygonsDefinition: '范围单位多边形定义',
minInsideDuration: '最小内部持续时间',
minInsideDurationTimeUnit: '最小内部持续时间单位',
minOutsideDuration: '最小外部持续时间',
minOutsideDurationTimeUnit: '最小外部持续时间单位',
},
},
log: {
name: '日志',
details:
'将配置JS函数的传入Message转换为String,并将最终值记录到平台日志文件中。可以通过msg属性访问消息负载。例如temperature= +msg.temperature。可以通过metadata属性访问消息元数据。例如name= +metadata.customerName。',
description: '使用JS脚本记录传入消息,将Message转换为String。',
fields: {
jsScript: '转换成字符串',
jsScriptButtonName: '测试转字符串函数',
},
},
messageCount: {
name: '消息计数',
details: '对指定间隔内的传入消息进行计数,并生成具有消息计数的POST_ELEMETRY_REQUEST消息。',
description: '统计传入消息。',
fields: {
interval: '间隔(秒)',
telemetryPrefix: '输出时间序列密钥前缀',
},
},
pushToEdge: {
name: '推送消息到边缘端',
details:
'将消息从云端推送到边缘。消息发起者必须分配给指定边缘,或者消息发起方是边缘实体本身。此节点仅在云实例上用于将消息从云推送到边缘。一旦消息到达该节点,它将被转换为边缘事件并保存到数据库中。节点不直接将消息推送到边缘,而是将事件存储在边缘队列中;支持下一个发起方类型:DEVICE/ASSET/ENTITY_VIEW/DASHBOARD/TENANT/CUSTOMER/EDGE;节点也支持下一条消息类型:POST_ELEMETRY_REQUEST/POST_ATTRIBUTES_REQUEST/ATTRIBUTES_UPDATED/ATTRIBUTES_DELETED/ALARM;如果节点无法将边缘事件保存到数据库或到达了不受支持的发起者类型/消息类型,则消息将通过Failure进行路由。在成功存储边缘事件到数据库的情况下,消息将通过Success进行路由。',
description: '将消息从云端推送到边缘端。',
fields: {
scope: '设备属性范围',
},
},
rpcCallReply: {
name: 'rpc请求回复',
details: '应为任何消息类型的消息。将消息正文转发到设备。',
description: '从设备发送对RPC调用的答复。',
fields: {
requestIdMetaDataAttribute: '请求Id元数据属性名称',
},
},
rpcCallRequest: {
name: 'RPC调用请求',
details:
'带有method和params的消息,将响应从设备转发到下一个节点。如果RPC调用请求是由用户的REST API调用发起的,则会立即将响应转发给用户。',
description: '将RPC调用发送到设备。',
fields: {
timeoutInSeconds: '超时(秒)',
},
},
saveAttributes: {
name: '保存属性',
details: '根据可配置的作用域参数保存实体属性。消息类型为POST_ATTRIBUTES_REQUEST的消息',
description: '保存属性数据。',
fields: {
notifyDevice: '通知设备',
scope: '设备属性范围',
},
},
saveEvent: {
name: '保存事件',
details: '保存实体事件,消息类型为POST_EVENT_REQUEST的消息。',
description: '保存设备事件数据。',
fields: {
configuration: '配置',
configurationDesc: "定义的配置指令 'tkMsgEventNodeConfiguration' 不可用。",
},
},
saveTimeseries: {
name: '保存时序数据',
details:
'根据可配置的TTL参数保存时序遥测数据,消息类型为POST_TELEMETRY_REQUEST的消息。时间戳(以毫秒为单位)将取自元数据时间戳,否则将应用现在消息时间戳,如果skipLatestPersistence设置为true,则允许停止更新最新ts_kv表中传入键的值。启用【useServerTs】参数以使用消息处理的时间戳,而不是消息中的时间戳。如果合并的消息来自多种类型(设备、资产等)的消息,则对各种顺序处理都很有用。在顺序处理的情况下,平台保证消息按照提交到队列的顺序进行处理。然而,由多个设备/服务器发起的消息的时间戳可能早在它们被推送到队列之前就不同步了。如果新记录的时间戳比以前的记录旧,则DB层具有某些优化,可以忽略“属性”和“最新值”表的更新。因此,为了确保所有消息都得到正确处理,应该为顺序消息处理场景启用此参数。',
description: '保存时序数据。',
fields: {
defaultTTL: '默认TTL(秒)',
skipLatestPersistence: '跳过更新最新时序数据表(ts kv latest)',
useServerTs: '使用服务器时间戳',
useServerTsDesc: '启用此设置可以使用消息处理的时间戳,而不是消息中的时间戳。',
},
},
saveToCustomTable: {
name: '保存到自定义表',
details:
'管理员应设置不带前缀的自定义表名:【cs_tb_】,管理员可以配置消息字段名称和Table列名称之间的映射;注意:如果映射键为【$entity_id】;由消息发起人标识,然后到适当的列名(映射值)将写入消息发起人id。如果指定的消息字段不存在或不是标准JSON,出站消息将通过failure链路;否则,消息将通过success链进行。',
description:
'节点将来自Cassandra数据库的传入Message有效负载的数据,存储到预定义的自定义表中,该表应以cs_tb_为前缀,以避免数据插入到公共tb表中。注意:规则节点只能用于Cassandra DB。',
fields: {
fieldsMapping: '字段映射',
tableName: '自定义表名称',
filesMappingValidateMsg: '至少应该指定一个字段映射。',
messageField: '消息字段',
columnName: '表列名',
},
},
synchronizationEnd: {
name: '同步结束',
details: '',
description: '此节点现在已弃用。请改用“检查数据点”。',
},
synchronizationStart: {
name: '同步启动',
details:
'此节点应与“同步结束”节点一起使用。此节点将根据消息发起方id将消息放入队列。在上一条消息处理完成或发生超时事件之前,不会处理后续消息。每个发起方的队列大小和超时值可在系统级别进行配置。',
description: '此节点现在已弃用。请改用【检查数据点】。',
},
delayDeprecated: {
fields: {
useMetadataPeriodInSecondsPatterns: '使用周期(秒)模式',
periodInSeconds: '周期(秒)',
periodInSecondsPattern: '以秒为单位的周期模式',
maxPendingMsgs: '最大挂起消息数',
useMetadataPeriodInSecondsPatternsDesc:
'如果选中,则规则节点使用消息元数据或数据中的以秒为单位的时间间隔模式。',
},
},
unassignFromCustomer: {
name: '从客户取消分配',
details: '按客户端名称模式查找目标实体客户,然后取消分配该客户的发起者实体。.',
description: '从客户取消分配消息发起者实体。',
fields: {
customerNamePattern: '客户名称模式',
customerCacheExpiration: '客户缓存过期时间(秒)',
},
},
};