我创建了一个集成流,该集成流每小时查询一个数据库并将结果上载到SAP HANA数据库。我在SAP HANA中复制的初始数据库表具有一个带有时间戳的字段,每个条目的数据都在该字段上更改。为了提高性能,而不是每次都选择原始数据库中的每个条目,我想发送一个查询以仅检索在最近一小时内更改或创建的条目的结果。为此,我需要在iFlow之外的一个变量,我可以调用该变量并使用iFlow上次运行的时间戳记进行更新,并在查询中使用它。
iFlow启动事件是一个设置为每小时运行的计时器启动事件,我尝试使用“写入变量”块来存储此变量,并将其设置为“全局范围”。但是,当集成流程结束并在一小时后运行时,它将重置此变量。
对我来说,更好的方法是什么?
谢谢。
对于大多数IFlow,首选本地作用域。仅在多个IFlow必须访问一个变量的情况下才需要Global范围。
这是我的建议:
将所有必需的功能组合到子流程中-方便地以多种方式重用任务(添加其他启动事件)。因此,将Timer事件放入顶级Integration流程并调用所需的子流程:
要获取lastRun(上次运行的dateTime)和thisRun(当前日期时间),请使用以下命令:好的格式是$ {date:now:yyyy-MM-dd'T'HH:mm:ss.SSSXXX},它是ISO8601兼容的格式。
不要混淆sap_global_store标签,它不是全局变量可见性级别。
'thisRun'变量不是流程开始的精确日期时间。实际的是msg.properties.CamelCreatedTimestamp,但是CamelCreatedTimestamp需要一些小的脚本功夫。