【问题标题】:How to store an editable variable outside the integration flow in HCP PI?如何在 HCP PI 的集成流之外存储可编辑变量?
【发布时间】:2017-10-23 12:11:56
【问题描述】:

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

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

如何更好地做到这一点?

谢谢。

【问题讨论】:

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


【解决方案1】:

对于大多数 IFlow,Local 范围更可取。仅当多个 IFlow 必须访问一个变量时才需要全局范围。

以下是我的建议:

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    • 1970-01-01
    相关资源
    最近更新 更多