19.2. 在轮询从 OData 服务返回数据时触发集成
要在从 OData 服务获取数据时触发集成执行,请在启动连接时将 OData 连接添加到简单集成。当集成运行时,OData 连接会按您指定的间隔轮询服务。当连接找到满足连接配置的数据时,连接会将数据传递给集成中的下一步。
前提条件
您创建了 OData 连接。
流程
- 在左侧的 Fuse Online 面板中,单击 Integrations。
- 点 Create Integration。
- 在 Choose a connection 页面上,单击您要用来启动集成的 OData 连接。
- 在 Choose an action 页面上,选择 Read action。
配置 Read 操作:
- 在 Resource Collection 字段中,选择要查询的 OData 资源的名称。Fuse Online 从 OData 服务获取数据,以提供可用资源集合的列表。
-
在 Entity Key Predicate 字段中,若要获取特定的实体,请通过指定其 key predicate 来识别您想要的实体。例如,指定诸如
UserName='Bob'
或Categories (1)
的内容。要获取多个实体,请将此字段留空。 在 Query Options 字段中,输入您要应用到资源的查询。使用 OData 语法。例如,
$filter=startswith (name, 'N')
返回资源中的每个实体的消息,其名称
字段以N
开头。您可以指定 Entity Key Predicate 和 Query Options。如果您这样做,OData 服务会获取指定的实体,并将查询应用到该实体。例如,假设您将 Entity Key Predicate 设置为
UserName='russellwhyte'/Emails
,并将 Query Options 设置为$filter=contains ($it,'example')
。连接会创建一个类似如下的请求:https://services.odata.org/TripPinRESTierService/People(UserName='russellwhyte')/Emails?$filter=contains($it, 'example')
该服务返回包含域
示例
的 Russell 为什么的所有电子邮件地址。- 选中 Filter Old Results 复选框,以只获取特定消息一次。
如果您希望连接返回单个消息而不是一组信息,请选择 Split Results 复选框。
Fuse Online 还提供离散分割和聚合步骤,您可将它们添加到流中。如果要在一个或多个步骤中处理单个消息,然后将消息聚合到一个集合中,请不要选择 Split Results 复选框。相反,将复选框留空,然后在此连接后向流添加分割步骤。如果您希望流中的聚合步骤,则需要分割步骤。
- 在 Interval Before Polling Starts 字段中,接受默认值 1 秒,或者输入连接开始轮询 OData 服务前要经过的时间长度。
- 在 Delay 字段中,接受默认值 30 秒,或者输入您希望连接轮询 OData 服务的时间间隔。
在 Backoff Idle Threshold 字段中,接受默认值 1 或输入整数,表示无法返回任何数据的连续轮询数量。在这个轮询数后,连接会增加后续轮询之间的间隔。连接通过将 Delay 值乘以 Backoff Multiplier 值来指定轮询间隔的新长度。
例如,假设轮询间隔( Delay 值)是默认值 30 秒,backoff Idle Threshold 设置为 5,并且 Backoff Multiplier 设置为 12。5 连续轮询返回任何数据后,连接会在再次轮询前等待 360 秒(30 x 12)。连接会每 360 秒轮询一次,直到轮询返回数据为止。在轮询返回数据后,连接每 30 秒恢复轮询。
在 Backoff Multiplier 字段中,接受默认值 1 或输入整数,表示在达到 Backoff Idle Threshold 的值时增加轮询间隔的倍数。
如果您接受 backoff Multiplier 的默认值 1,那么无论连续的轮询没有结果,连接都会在指定间隔上继续轮询。
为 Backoff Idle Threshold 和 Backoff Multiplier 指定的值可用于减少 CPU 开销,因为连接可以在静默期间自动轮询较少的。
- 点击 Next。
结果
集成现在有一个启动连接,Fuse Online 会提示您选择完成连接。
在执行期间,连接返回的内容取决于您在 Entity Key Predicate 和 Query Options 字段中指定的内容。OData 连接可以返回:
实体或实体属性集合
例如,这可能是资源中的所有 Person 实体,也可能是所有 Person 实体的所有 期限 属性。连接会返回一个消息中的集合。Fuse Online 在集合一次执行一次流程中的后续步骤。但是,当您配置 Read 操作时,如果您选择 Split Results,则连接会返回每个实体或其自身消息中的每个属性。Fuse Online 为每个消息执行一次流中的后续步骤。
实体或实体属性
例如,这可能是其 UserName 属性为 Bob 的 Person 实体,也可能是 UserName 为ob 实体的 Age 属性。连接返回消息中的 entity 或 entity 属性,该属性传递给流中的下一步。
后续步骤
添加集成的完成连接以及您要包含在集成中的任何其他连接。当集成包含所需的所有连接时,如果 OData 连接返回集合,请考虑是否需要在 OData 连接后添加分割步骤。集成通常需要将 OData 连接返回的数据映射到随后流中连接使用的字段。有时,您可以映射集合,但通常需要分割集合,才能映射到目标字段。
在 OData 连接后,向流中添加数据映射程序步骤。准确在流中的什么位置取决于您要进行的流。例如,在 OData 连接后,您可以添加基本过滤器步骤,然后添加数据映射程序步骤。