行动
操作是工作流的构建基块。每个操作都有特定的用途,例如调用 HTTP 端点或将事件发布到 JSA 管道。
中止
“中止”操作将中止工作流。
工作流会立即中止,出错。如果终止标志为 false,则工作流将在下次重复时恢复,否则它将停止,直到重新启动事件收集服务或编辑日志源。
下表显示了中止操作的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
原因 |
字符串 |
是的 |
工作流中止的原因。此字符串在日志源状态中显示为错误消息。 |
终止 |
布尔 |
不 |
指示是否终止事件检索循环。默认值为 False。 仅在极端情况下使用此参数。该参数将日志源置于错误状态并完全停止它。仅当事件收集服务重新启动或编辑日志源时,日志源才会重新启动。 您可以使用 terminate 参数在身份验证失败时停止工作流,以防止帐户锁定。 |
XML 示例:
此操作将停止工作流的当前执行,但在下次重复执行时再次运行。在清除或更新日志源状态之前,它包含以下错误消息:
The password for <user value> has expired.
<Abort reason="The password for '${/user}' has expired." />
添加
“添加”操作向“状态”中的数组添加一个值。
下表显示了“添加”操作的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
路径 |
JPath |
是的 |
数组的位置。路径必须引用数组值。 |
价值 |
字符串/数字 |
是的 |
XML 示例:
此操作将字符串“V2hhdCBhIHdvbmRlcmZ1bCB3b3JsZC4uLg==”添加到位置 /tokens 的状态。
<Add path="/tokens" value="V2hhdCBhIHdvbmRlcmZ1bCB3b3JsZC4uLg==" />
调用端点
CallEndpoint 操作调用 HTTP 终结点。
下表显示了“调用终结点”操作的参数。
名字 |
数据类型 |
关系 |
必填 |
笔记 |
---|---|---|---|---|
方法 |
枚举 |
属性 |
是的 |
可能的值:
|
Url |
字符串 |
属性 |
是的 |
终结点的基 URL(不包括查询参数)。 |
保存路径 |
字符串 |
属性 |
不 |
响应存储为 JSON 对象,格式如下: /response { status_code: 200, status_message: "OK", headers: { "Date": "Tue, 16 Jun 2020 17:31:29 GMT", "Content-Type": "application/json", }, body: ... } 如果未提供 savePath 值,则终结点响应不会保存在默认位置。如果要存储响应,则必须提供 savePath 值。 |
SSL 配置 |
SSLConfiguration |
子元素 |
不 |
有关更多信息,请参阅 SSLConfiguration。 |
认证 |
认证 |
子元素 |
不 |
身份验证对象必须是以下类型之一: |
查询参数 |
查询参数 |
子元素 |
不 |
可以有多个查询参数。更多信息,请参见 查询参数。 |
requestHeaders |
请求标头 |
子元素 |
不 |
可以有多个请求标头。有关详细信息,请参阅 请求标头。 |
身体 |
请求正文 URL 编码表单请求正文 XmlRequestBody |
子元素 |
不 |
正文必须是以下类型之一: |
下表显示了 SSLConfiguration 的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
协议 |
字符串 |
不 |
要使用的 SSL 协议。默认值为 TLSv1.2。 |
允许不受信任的服务器证书 |
布尔 |
不 |
指示是否允许不受信任的服务器证书。默认值为 False。 |
XML 示例:
此示例允许不受信任的服务器证书。
<SSLConfiguration allowUntrustedServerCertificate="true" />
基本身份验证的参数如下表所示。
名字 |
数据类型 |
必填 |
---|---|---|
用户 |
字符串 |
是的 |
密码 |
字符串 |
不 |
XML 示例:
此示例设置身份验证用户名和密码。
<BasicAuthentication username="${/username}" password="${/password}" />
下表显示了持有者身份验证的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
令 牌 |
字符串 |
是的 |
访问令牌。 |
XML 示例:
此示例设置用于身份验证的访问令牌。
<BearerAuthentication token="${/access_token}" />
下表显示了摘要式身份验证的参数。
名字 |
数据类型 |
必填 |
---|---|---|
用户 |
字符串 |
是的 |
密码 |
字符串 |
是的 |
领域 |
字符串 |
不 |
Nonce |
字符串 |
不 |
算法 |
字符串 |
不 |
Qop |
字符串 |
不 |
中国康塞 |
字符串 |
不 |
随机计数 |
字符串 |
不 |
XML 示例:
此示例设置用于身份验证的用户名和密码。
<DigestAuthentication username="${/public_key}" password="${/private_key}" />
下表显示了 Akamai EdgeGrid 身份验证的参数。
名字 |
数据类型 |
必填 |
---|---|---|
访问令牌 |
字符串 |
是的 |
客户端令牌 |
字符串 |
是的 |
客户端密钥 |
字符串 |
是的 |
下表显示了 Hawk 身份验证的参数。
名字 |
数据类型 |
必填 |
---|---|---|
密钥标识 |
字符串 |
是的 |
关键 |
字符串 |
是的 |
算法 |
字符串 |
是的 |
散 列 |
字符串 |
不 |
内线 |
字符串 |
不 |
应用程序 |
字符串 |
不 |
DLG |
字符串 |
不 |
下表显示了查询参数的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
名字 |
字符串 |
是的 |
|
价值 |
字符串 |
是的 |
|
省略如果空 |
布尔 |
不 |
如果值为空,则省略该参数。 |
XML 示例:
此示例设置查询的名称和值,如果值为空,则省略该参数。
<QueryParameter name="stream_position" value="${/bookmark}" omitIfEmpty="true" />
下表显示了请求标头的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
名字 |
字符串 |
是的 |
|
价值 |
字符串 |
不 |
|
省略如果空 |
布尔 |
不 |
如果值为空,则省略标头。 |
XML 示例:
此示例设置请求标头的名称和值。
<RequestHeader name="authorization" value="client_id:${/client_id}, client_secret:${/client_secret}" />
下表显示了请求正文的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
类型 |
字符串 |
是的 |
必须是有效的 HTTP 请求内容类型。例如,application/json。 |
编码 |
字符串 |
是的 |
必须是有效的 HTTP 正文编码类型。例如,UTF-8。 |
内容 |
字符串 |
是的 |
在 <RequestBody> 元素的开始和结束标记之间包括正文内容。 |
XML 示例:
此示例设置请求正文的内容类型、正文编码和内容。
<RequestBody type="application/json" encoding="UTF-8">{ "grant_type": "client_credentials" }</RequestBody>
下表显示了 UrlEncodedFormRequestBody 的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
参数 |
映射<字符串、字符串> |
是的 |
名称/值对的集合。 |
XML 示例:
此示例设置 URL 编码表单请求正文的名称/值对。
<UrlEncodedFormRequestBody> <Parameter name="grant_type" value="urn:ietf:params:oauth:grant-type:jwt-bearer" /> <Parameter name="client_id" value="${/client_id}" /> <Parameter name="client_secret" value="${/client_secret}" /> <Parameter name="assertion" value="${/jwt_assertion}" /> </UrlEncodedFormRequestBody>
下表显示了 XmlRequestBody 的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
类型 |
字符串 |
不 |
必须是有效的 HTTP 请求内容类型。例如,application/json。 |
编码 |
字符串 |
不 |
必须是有效的 HTTP 正文编码类型。例如,UTF-8。 |
内容 |
Xml |
是的 |
正文的实际 XML 内容必须作为子元素嵌套在 <XmlRequestBody> 元素中。 |
XML 示例:
此示例设置 XML 请求正文的内容。
<XmlRequestBody> <authRequest> <maaS360AdminAuth> <billingID>${/billing_id}</billingID> <platformID>${/platform_id}</platformID> <appID>${/app_id}</appID> <appVersion>${/app_version}</appVersion> <appAccessKey>${/app_access_key}</appAccessKey> <userName>${/username}</userName> <password>${/password}</password> </maaS360AdminAuth> </authRequest> </XmlRequestBody>
XML 示例:
此操作调用使用请求标头和请求正文向 https://${/host}/auth/oauth2/token 发出 POST 请求,并将响应保存在 /get_access_token 的状态中。
<CallEndpoint url="https://${/host}/auth/oauth2/token" method="POST" savePath="/get_access_token"> <RequestHeader name="authorization" value="client_id:${/client_id}, client_secret:${/client_secret}" /> <RequestBody type="application/json" encoding="UTF-8">{ "grant_type": "client_credentials" }</RequestBody> </CallEndpoint>
清除状态
ClearStatus 操作可清除协议实例的运行时状态。这将清除日志源的状态。
XML 示例
此操作将清除为日志源显示的任何信息、警告或错误消息。
<ClearStatus />
复制
“复制”操作将状态的一部分复制到另一部分。
下表显示了“复制”操作的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
源路径 |
JPath |
是的 |
要复制的路径。此路径可以是静态路径,也可以是查询。 |
目标路径 |
JPath |
是的 |
路径复制到的位置。此路径将覆盖此位置存储的任何内容。 |
XML 示例
此操作将对象从 /events 处的数组( type_id 为 4)复制到位置 /interestEvents 的数组中,并擦除以前存储在那里的任何内容。
<Copy sourcePath="/events[@type_id = 4]" targetPath="/interestingEvents" />
创建 JWTA 令牌
JWTAccessToken 操作会创建一个 JSON Web 令牌 (JWT)。
有关详细信息,请参阅 JWT 文档。
下表显示了“创建 JWTAccessToken”操作的参数。
名字 |
数据类型 |
描述 |
必填 |
笔记 |
---|---|---|---|---|
名字 |
字符串 |
标头的名称。 |
是的 |
|
价值 |
字符串 |
标头的值。 |
不 |
名字 |
数据类型 |
描述 |
必填 |
笔记 |
---|---|---|---|---|
名字 |
字符串 |
有效负载的名称。 |
是的 |
|
价值 |
字符串 |
有效负载的值。 |
不 |
名字 |
数据类型 |
描述 |
必填 |
笔记 |
---|---|---|---|---|
价值 |
字符串 |
机密的值。 |
不 |
XML 示例
此操作使用提供的标头、有效负载和机密值创建 JWT,并将其保存在位置 /access_token 的状态中。
<CreateJWTAccessToken savePath="/access_token"> <Header> <Value name="alg" value="HS256" /> <Value name="typ" value="JWT" /> </Header> <Payload> <Value name="iss" value="${/api_key}" /> </Payload> <Secret value="${/api_secret}" /> </CreateJWTAccessToken>
删除
“删除”操作从状态中删除元素。
下表显示了“删除”操作的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
路径 |
JPath |
是的 |
要删除的元素的位置。 |
XML 示例
此操作将删除位置 /token 的状态中存在的值
<Delete path="/token" />
做而做
DoWhile 操作在条件为真时循环一系列操作。
在循环结束时评估条件。即使条件从不为 true,内容也会执行一次。此操作不同于 While 操作,后者在循环开始时评估条件。
下表显示了 DoWhile 操作的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
条件 |
JPath |
是的 |
确定是否继续循环的条件。 |
行动 |
JPath 条件 |
是的 |
必须是解析为值 或 |
XML 示例
此操作将执行嵌套的“调用终结点”操作和“后事件”操作。如果位置 /next_page 的 State 中存在值,则条件为 true,将执行嵌套操作,并执行条件检查,直到条件为 false。
<DoWhile condition="/next_page != null"> <CallEndpoint ... /> <PostEvent path="/current/event" /> </DoWhile>
Foreach
ForEach 操作为数组或对象中的每个值执行一系列操作。在 V1 中,该操作仅适用于数组中的每个值。
下表显示了 ForEach 操作的参数。
名字 |
数据类型 |
描述 |
必填 |
笔记 |
---|---|---|---|---|
项目 |
JPath |
存储迭代的当前项的路径。 |
是的 |
存储迭代的当前项的路径。 |
项目 |
JPath |
状态中要迭代的数组。 |
是的 |
状态中要迭代的数组。 |
行动 |
行动[] |
要为每个迭代执行的操作序列。 |
是的 |
要为每个迭代执行的操作序列。不能为空。 |
XML 示例
/events 的状态中存在一个对象数组。此操作循环访问数组,并为数组中的每个对象执行嵌套的 PostEvent 操作。
<ForEach item="/current_event" items="/events"> <PostEvent path="/current_event" source="${/host}" /> </ForEach>
格式日期
“格式化日期”操作将 UNIX 时间戳的格式设置为日期。
下表显示了“格式化日期”操作的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
模式 |
字符串 |
是的 |
有关可能的值,请参阅 JavaDateTimeFormatter 。 |
时区 |
字符串 |
不 |
有关可能的值,请参阅 JavaDateTimeFormatter 。 |
时间 |
数量 |
不 |
格式化的时间,以自纪元以来的毫秒为单位。默认值为当前时间。 |
保存路径 |
JPath |
是的 |
存储结果的位置。 |
XML 示例
此操作提取当前存储在 /bookmark 状态中的 UNIX 时间戳,并将其转换为 UTC 时区中采用以下格式的有意义的时间戳。
yyyy-MM-dd'T'HH:mm:ss.mmm'Z' <FormatDate pattern="yyyy-MM-dd'T'HH:mm:ss" timeZone="UTC" time="${/bookmark}" savePath="/formatted_bookmark" />
重新格式化的值保存在 /formatted_bookmark 的“状态”中。
生成HMAC
“生成HMAC”操作将 HMAC 哈希应用于给定输入。
下表显示了“生成HMAC”操作的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
算法 |
枚举 |
是的 |
可能的值:
|
秘密密钥 |
字符串 |
是的 |
要使用的机密。 |
消息 |
字符串 |
是的 |
要处理的输入消息。 |
保存格式 |
字符串 |
是的 |
可能的值:
|
保存路径 |
JPath |
是的 |
存储结果的位置。 |
XML 示例
此操作将生成存储在状态 /value 中的值的 HMAC 哈希。哈希是使用 SHA1 算法和提供的 密钥以十六进制格式生成的,并保存在位置 /signature 的状态中。
<GenerateHMAC algorithm="SHA1" secretKey="${/secret_key}" message="${/value}" saveFormat="HEX" savePath="/signature" />
If/ElseIf/Else
如果满足条件,则 If/ElseIf/Else 操作将执行操作。
If/ElseIf/Else 操作基于一个或多个互斥条件执行嵌套操作:
始终检查“如果”条件。
仅当不满足所有先前的“If”和“ElseIf”条件时,才会检查“ElseIf”条件。
“否则”操作没有条件;如果未满足上述“If”或“ElseIf”条件,则会自动执行“Else”操作。
下表显示了 If 操作的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
条件 |
JPath |
是的 |
要评估的条件。不能为空。 |
行动 |
行动[] |
是的 |
条件为 true 时要执行的操作序列。不能为空。 |
下表显示了 ElseIf 操作的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
条件 |
JPath |
是的 |
要评估的条件。不能为空。 |
行动 |
行动[] |
是的 |
条件为 true 时要执行的操作序列。不能为空。 |
下表显示了 Else 操作的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
行动 |
行动[] |
是的 |
在上述“If”或“ElseIf”条件均不成立时要执行的操作序列。不能为空。 |
XML 示例
在此示例中,将执行以下操作:
如果位置 /status 处的 State 值为 200,则仅执行将状态设置为 INFO“成功”消息的 SetStatus 操作。
如果 /status 值为 401,则仅执行将状态设置为错误“身份验证失败”消息的 SetStatus 操作。
如果 /status 值为 404,则仅执行将状态设置为错误“不存在路由”消息的 SetStatus 操作。
如果 /status 值为其他任何值,则仅执行最终的 SetStatus 操作。
<If condition="/status = 200"> <SetStatus type="INFO" message="Success." /> </If> <ElseIf condition="/status = 401"> <SetStatus type="ERROR" message="Authentication Failure." /> </ElseIf> <ElseIf condition="/status = 404"> <SetStatus type="ERROR" message="No Route Exists." /> </ElseIf> <Else> <SetStatus type="ERROR" message="An unknown error (${/status}) has occurred." /> </Else>
初始 化
“初始化”操作初始化状态中的值。
如果该位置中存在某个值,则新值不会覆盖现有值。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
路径 |
JPath |
是的 |
要初始化的位置。 |
价值 |
字符串/数字 |
是的 |
要设置的值。 |
XML 示例
此操作会将值“1”添加到位置 /书签的“状态”(如果该位置不存在任何值)。如果该位置确实存在某个值,则该操作不执行任何操作。
<Initialize path="/bookmark" value="1" />
日志
“日志”操作会记录故障排除消息。
故障排除消息通常存储在 /var/log/qradar.error、var/log/qradar.log 和 /var/log/qradar.java.debug 的 JSA 日志文件中
下表显示了日志操作的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
类型 |
枚举 |
是的 |
日志类型。 可能的值:
|
消息 |
字符串 |
是的 |
要记录的消息。 |
XML 示例
此操作将 DEBUG 级别日志写入包含指定消息的 JSA 日志。
<Log type="DEBUG" message="The value was ${/some_value}." />
合并
“合并”操作将数组合并到数组中,或将对象合并到对象中。
下表显示了“合并”操作的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
源路径 |
JPath |
是的 |
要从中复制的对象或数组。 |
目标路径 |
JPath |
是的 |
要合并到的对象或数组。 |
XML 示例:
此操作将数组中位于状态中位置 /events 的type_id值为 4 的所有对象复制到位于 /累积事件处的数组。 /累积事件 中已有的任何对象都将被保留。
<Merge sourcePath="/events[@type_id = 4]" targetPath="/cummulativeEvents" />
解析日期
ParseDate 操作将日期解析为 UNIX 时间戳。
Java DateFormatter支持ParseDate操作。一些 ParseDate 操作参数直接传递给 Java。
下表显示了“分析日期”操作的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
模式 |
字符串 |
是的 |
要使用的格式设置模式。 有关可能的值,请参阅 JavaDateTimeFormatter 。 |
时区 |
字符串 |
不 |
要使用的时区。 有关可能的值,请参阅 JavaDateTimeFormatter 。 |
日期 |
字符串 |
是的 |
要分析的格式化日期。 |
保存路径 |
JPath |
是的 |
存储结果的位置。 |
XML 示例:
此操作将存储在位置 /formatted_time 的状态中的时间戳转换为 UNIX 时间戳,并将其存储在位置 /时间戳的状态中。当前时间戳必须采用 yyyy-MM-dd'T'HH:mm:ss'Z' 格式,并表示协调世界时 (UTC) 区域中的时间。
<ParseDate pattern="yyyy-MM-dd'T'HH:mm:ss" timeZone="UTC" time="${/formatted_time}" savePath="/timestamp" />
活动后
PostEvent 操作将事件发布到 JSA 事件管道,从而允许分析、关联和存储事件。
下表显示了“事件后”操作的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
路径 |
JPath |
是的 |
要发布的元素的路径。 |
编码 |
字符串 |
不 |
事件的编码。 可能的值:
默认值为 UTF-8。 |
源 |
字符串 |
是的 |
事件的源(主机)。 源值用于将事件管道中的事件路由到正确的日志源。该事件与现有日志源的日志源标识符匹配。 如果不存在具有匹配日志源标识符的日志源,则存储事件而不进行分析,并将事件的副本发送到日志源自动检测引擎。 如果从事件中自动检测到日志源,则会在创建日志源时将其日志源标识符设置为源值。 |
XML 示例:
此操作将存储在 State at /event 中的字符串作为事件发布到 JSA 事件管道中。如果日志源的日志源标识符与 /host 中存储的值匹配,则事件将路由到该日志源。
<PostEvent path="/event" source="${/host}" />
活动后
PostEvents 操作将事件数组发布到 JSA 事件管道,从而允许分析、关联和存储事件。
下表显示了“发布事件”操作的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
路径 |
JPath |
是的 |
要发布的数组元素的路径。 |
编码 |
字符串 |
不 |
事件的编码。 可能的值:
默认值为 UTF-8。 |
源 |
字符串 |
是的 |
事件的源(主机)。 源值用于将事件管道中的事件路由到正确的日志源。该事件与现有日志源的日志源标识符匹配。 如果不存在具有匹配日志源标识符的日志源,则存储事件而不进行分析,并将事件的副本发送到日志源自动检测引擎。 如果从事件中自动检测到日志源,则会在创建日志源时将其日志源标识符设置为源值。 |
XML 示例:
此操作将存储在 State at /events 中的字符串数组作为一系列事件发布到 JSA 事件管道中。如果日志源的日志源标识符与 /host 中存储的值匹配,则事件将路由到该日志源。
<PostEvents path="/events" host="${/host}" />
正则表达式捕获
RegexCapture 操作使用正则表达式 (regex) 捕获字符串的一部分。
下表显示了正则表达式捕获操作的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
模式 |
Regex |
是的 |
正则表达式模式。 该模式只能包含一个捕获组。 正则表达式模式必须是 Java 类型的正则表达式。有关更多信息,请参见 类模式。 |
价值 |
字符串 |
是的 |
要从中捕获的值。 |
保存路径 |
JPath |
是的 |
存储结果的位置。 |
XML 示例:
此操作将模式中定义的正则表达式运行到在 State 中存储为 /data 的字符串。捕获组值存储在位置 /id 的“状态”中。提供的正则表达式捕获后面的一个或多个数字 "id="
。
<RegexCapture pattern="id=([0-9]+)" value="${/data}" savePath="/id" />
设置
“设置”操作在“状态”中设置一个值。
如果该位置存在某个值,则新值将覆盖现有值。
下表显示了“设置”操作的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
路径 |
JPath |
是的 |
存储值的位置。 |
价值 |
字符串/数字 |
是的 |
要设置的值。 |
XML 示例:
此操作将 time() 函数返回的值添加到位置 /current_time 的状态。如果该位置存在某个值,则会覆盖该值。
<Set path="/current_time" value="${time()}" />
设置状态
操作设置协议实例的运行时状态。此信息显示在日志源的状态中。
下表显示了“设置状态”操作的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
类型 |
枚举 |
是的 |
状态类型。 可能的值包括:
|
消息 |
字符串 |
是的 |
状态消息。 |
XML 示例:
此操作将协议实例的运行时状态设置为 ERROR,并显示一条消息,指出: The password has expired
此信息在 QRadar 日志源管理 应用程序和 API 中显示为日志源状态。
<SetStatus type="ERROR" message="The password has expired" />
睡眠
“睡眠”操作将工作流挂起指定的时间量。
下表显示了“睡眠”操作的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
时间 |
数量 |
是的 |
等待的时间量(以毫秒为单位)。 |
XML 示例:
此操作会导致工作流暂停执行 5 秒钟。
<Sleep duration="5000" />
分裂
“拆分”操作拆分字符串。
例如,如果 API 以长字符串形式返回一组事件,其中每个事件都由逗号或其他分隔符分隔,则可以拆分字符串以使用 PostEvent 或 PostEvents 操作。
下表显示了拆分操作的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
价值 |
字符串 |
是的 |
要拆分的值。 |
分隔符 |
字符串 |
不 |
分隔符是一个正则表达式。 默认为“换行符”。如果分隔符提供了正则表达式元素,则它必须是 Java 类型的正则表达式。 |
保存路径 |
JPath |
是的 |
存储结果的位置。 |
XML 示例:
此操作将字符串 "value 1,value 2,value 3"
拆分为由三个字符串 "value1"
、 "value2"
和 "value3"
组成的数组。字符串存储在位置 /values 的状态中。
<Split value="value 1,value 2,value 3" delimiter="," savePath="/values" />
而
While 操作在条件为真时循环一系列嵌套操作。
条件在循环开始时进行评估,因此,如果条件从不为 true,则永远不会执行其嵌套操作。此操作与 DoWhile 操作不同,在 DoWhile 操作中,条件在循环结束时进行评估。
下表显示了 While 操作的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
条件 |
JPath |
是的 |
确定是否继续循环的条件。循环是所有嵌套操作的执行。 |
行动 |
JPath 条件 |
是的 |
要执行的操作的顺序。 必须是解析为值 或 |
XML 示例:
如果位置 /next_page 的“状态”中存在值,则此操作将执行嵌套的 CallEndpoint 操作。While 操作执行嵌套的 CallEndpoint 操作,直到 /next_page 值为 null。如果 /next_page 始终为 null,则不执行嵌套操作。
<While condition="/next_page != null"> <CallEndpoint ... /> </While>
XPathQuery
XPathQuery 操作对 XML 文档值执行 XPath 查询。
如果 API 返回 XML 格式的响应,则可以从响应中提取特定值或一组值。可以使用 XPath 提取值。
下表显示了 XPathQuery 操作的参数。
名字 |
数据类型 |
必填 |
笔记 |
---|---|---|---|
xml路径 |
JPath |
是的 |
XML 文档在“状态”中的位置。 |
xPathQuery |
Xpath |
是的 |
|
单身 人士 |
布尔 |
不 |
将结果解释为单个值而不是数组。 默认值为 False。 |
保存路径 |
JPath |
是的 |
存储结果的位置。 |
XML 示例:
此操作对存储在 /xml_events 状态中的 XML 文档执行 XPath 查询"//event/id/text()"
,并将其作为单个值存储在位置 /event/id 的状态中。
<XPathQuery xmlPath="/xml_events" xPathQuery="//event/id/text()" singleton="true" savePath="/event/id" />