Sap 如何在HCP PI中的集成流之外存储可编辑变量?

Sap 如何在HCP PI中的集成流之外存储可编辑变量?,sap,hana,sap-cloud-platform,cloud-integration,Sap,Hana,Sap Cloud Platform,Cloud Integration,我创建了一个集成流,用于查询数据库,并每小时将结果上传到SAP HANA数据库。我在SAP HANA中复制的初始数据库表有一个字段,其中包含更改每个条目数据的时间戳。为了提高性能,每次我都要发送一个查询来检索在过去一小时内更改或创建的条目的结果,而不是选择原始数据库中的每个条目。为此,我需要iFlow之外的一个变量,我可以调用该变量并使用iFlow上次运行的时间戳进行更新,并在查询中使用它 iFlow start事件是一个计时器启动事件,设置为每小时运行一次,我尝试使用“Write Variab

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

iFlow start事件是一个计时器启动事件,设置为每小时运行一次,我尝试使用“Write Variables”块存储此变量,并将其设置为全局范围。但当集成流程结束并在一小时后运行时,它会重置此变量

对我来说,更好的方法是什么


谢谢。

对于大多数iFlow,本地范围更可取。只有当多个iFlow必须访问一个变量时,才需要全局范围

以下是我的建议:

  • 将所有必需的功能组合到子流程中——可以方便地以多种方式重用任务(添加其他启动事件)。 因此,将计时器事件放入顶级集成流程,并调用所需的子流程:

  • 要获取lastRun(上一次运行的日期时间)和thisRun(当前日期时间),请使用以下命令: 好的格式是${date:now:yyyy-MM-dd'HH:MM:ss.SSSXXX},它是ISO8601 complient one

  • 对于写入变量步骤“[3]lastRun”,请使用以下命令:

您可以在数据存储查看器中管理lastRun变量:

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


“thisRun”变量不是进程启动的精确日期时间。真正的是msg.properties.CamelCreatedTimestamp,但是CamelCreatedTimestamp需要一些脚本技巧。

下面是关于iFlows中持久性的SAP帮助页面: