SAP HCI PI - 如何在集成流程外存储可编辑变量?

时间:2017-05-23 13:41:01

标签: sap hana hana-cloud-platform cloud-integration

我创建了一个集成流,用于查询数据库并每小时将结果存储到SAP HANA数据库。我在SAP HANA中复制的初始数据库表有一个字段,其中包含每个条目数据被更改的时间戳。为了提高性能,我不想每次都选择原始数据库中的每个条目,而是发送查询以仅检索在过去一小时内更改或创建的条目的结果。为此,我需要一个iFlow之外的变量,我可以调用它,并使用上次运行iFlow时的时间戳进行更新,并在查询中使用它。

iFlow启动事件是设置为每小时运行一次的Timer Start事件,我尝试使用“Write Variables”块存储该变量并将其设置为Global Scope。但是当集成流程结束并在一小时后运行时,它会重置此变量。

这对我来说有什么好办法呢?

谢谢。

1 个答案:

答案 0 :(得分:3)

对于大多数IFlow,最好使用Local范围。仅当多个IFlow必须访问一个变量时才需要全局范围。

以下是我的建议:

  • 将所有必需的功能组合到子流程中 - 以多种方式重复使用您的任务(添加其他启动事件)非常方便。 因此,将Timer事件放入顶级Integration过程并调用所需的子进程:Sample of timer

  • 要获取lastRun(上次运行的dateTime)和thisRun(当​​前日期时间),请使用以下命令: Content modifier 好的格式是$ {date:now:yyyy-MM-dd' H&C:HH:mm:ss.SSSXXX},它是ISO8601兼容的。

  • 对于Write变量步骤" [3] lastRun"用这个: Write thisRun into lastRun

您可以在DataStore查看器中管理lastRun变量:Data store viewer

不要混淆sap_global_store标签,它不是全局变量可见性级别。

' thisRun'变量不是过程开始的精确日期时间。真正的一个是msg.properties.CamelCreatedTimestamp,但CamelCreatedTimestamp需要一些小脚本功夫。