2017-05-23 82 views
1

我创建了一个查询数据库的集成流程,并将结果每小时插入SAP HANA数据库。我在SAP HANA中复制的初始数据库表具有一个字段,其中包含每个条目的数据发生更改的时间戳。为了提高性能,我们不是每次选择原始数据库中的每个条目,而是发送一个查询来检索仅在最近一小时内更改或创建的条目的结果。为此,我需要一个iFlow以外的变量,我可以调用该变量并使用iFlow最后一次运行的时间戳进行更新,并在查询中使用它。SAP HCI PI - 如何在集成流程之外存储可编辑的变量?

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

对我来说这样做更好的方法是什么?

谢谢。

回答

3

对于大多数IFlows而言,本地范围更可取。全局范围仅适用于多个IFlow需要访问一个变量的情况。

这里是我的建议:

  • 撰写所需的所有功能集成到子 - 这是很方便的重用你的任务很多方面(添加其他启动事件)。 因此,将计时器事件到顶层一体化进程和调用所需的子流程:Sample of timer

  • 为了得到LASTRUN(上次运行的日期时间)和thisRun(当​​前日期时间),使用下列内容: Content modifier 好格式$ { date:now:yyyy-MM-dd'T'HH:mm:ss.SSSXXX},它是ISO8601兼容的。

  • 对于写变步 “[3] LASTRUN” 使用: Write thisRun into lastRun

您可以在数据存储管理观众变量LASTRUN:Data store viewer

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

'thisRun'变量不是过程开始的精确dateTime。真正的是msg.properties.CamelCreatedTimestamp,但CamelCreatedTimestamp需要一些小功能的功夫。

相关问题