Rest 是否有方法捕获已在SnapLogic中执行的任务的名称?

Rest 是否有方法捕获已在SnapLogic中执行的任务的名称?,rest,api,snaplogic,Rest,Api,Snaplogic,我们有许多在相同管道上运行的触发任务,但参数不同 关于这一点,我的问题是——是否有一种可能的方法,比如一个函数或一个表达式来捕获被触发任务的名称,这样我们就可以在编写报告和电子邮件时使用这些信息,其中任务启动了错误管道。我找不到任何接近它的东西 提前感谢。此答案解决了在被调用管道中唯一标识调用方任务的要求 对于触发的任务,SnapLogic没有提供任何现成的功能。尽管如此,对于超任务,您可以从管道的输入中获得$['task\u name'] SnapLogic开箱即用地提供了以下标头,这些标头

我们有许多在相同管道上运行的触发任务,但参数不同

关于这一点,我的问题是——是否有一种可能的方法,比如一个函数或一个表达式来捕获被触发任务的名称,这样我们就可以在编写报告和电子邮件时使用这些信息,其中任务启动了错误管道。我找不到任何接近它的东西

提前感谢。

此答案解决了在被调用管道中唯一标识调用方任务的要求


对于触发的任务,SnapLogic没有提供任何现成的功能。尽管如此,对于超任务,您可以从管道的输入中获得
$['task\u name']

SnapLogic开箱即用地提供了以下标头,这些标头可以在由触发的任务启动的管道中捕获和使用。这些措施如下

  • PATH\u INFO-URL任务部分后的路径元素
  • 远程用户-调用此请求的用户的名称
  • REMOTE\u ADDR-调用此请求的主机的IP地址
  • 请求\u方法-用于调用此请求的方法
这些都不包含任务名称

在您的情况下,作为一种解决方法,要在被调用的管道中唯一地标识调用者任务,您可以执行以下三项操作之一

  • 将任务名称作为参数传递
  • 在URL中添加任务名称,如
    https://elastic.snaplogic.com/.../task-name
  • 从REST调用中添加自定义头
  • 以上三种方法都可以帮助您在调用的管道中捕获任务名称

    在您的情况下,我建议您选择自定义头,因为您在管道中传递的参数可能是特定于任务的,并且在URL中再次添加任务名称是多余的

    以下是如何在触发的任务中添加自定义标题

    来自SnapLogic文档-

    自定义标题 要传递自定义HTTP头,请通过管道设置中的参数字段指定头及其值。这个 请求将任何头与管道参数匹配,并将这些参数传递给 任务,而授权标头永远不会传递给 管道

    指南

    • 标题必须全部大写。标题区分大小写
    • 连字符必须更改为下划线
    • HTTP自定义头覆盖任务和管道参数,但查询字符串参数具有最高优先级
    例如,如果要在中传递租户ID(X-tenant-ID) 标题,添加参数X_TENANT_ID并提供默认值或离开 它是空白的。配置表达式时,请参考管道 遵循标准约定的参数:\X\u租户\u ID.在HTTP中 请求时,添加标头X-TENANT-ID:123abc,这将导致 值123abc被管道参数X_TENANT_ID替换

    在管道设置中创建任务名称参数

    在管道中使用任务名称参数

    调用触发的任务

    注意:连字符必须更改为下划线

    参考文献:

    我将此添加为一个单独的答案,因为它解决了将已执行的触发任务与管道分开记录的特定需求。此解决方案必须是一个单独的流程(或管道),而不是触发管道本身的一部分


    对于已触发任务的任务名称,没有任何显式日志条目<代码>调用程序是您必须使用的

    但是,SnapLogic用于填充仪表板的主API更加冗长。以下是谷歌Chrome开发者工具上的响应截图

    您可以使用
    invoker\u name
    pipe\u invoker
    字段来标识触发的任务

    下面是正在使用的API

    POST/rest/pm/运行时

    正文:

    {
      "state": "Completed,Stopped,Failed,Queued,Started,Prepared,Stopping,Failing,Suspending,Suspended,Resuming",
      "offset": 0,
      "limit": 25,
      "include_subpipelines": false,
      "sort": {
          "create_time": -1
      },
      "start_ts": null,
      "end_ts": null,
      "last_hours": 1
    }
    

    您可以使用一个管道定期触发此API,然后解析响应并填充日志表(或创建日志文件)。

    感谢您的响应。我需要这个用于监控目的,以减少手动工作量(在仪表板上逐个检查任务)。我使用您提出的解决方案尝试了第二种方法,并使用SnapLogic提供的管道监控API在映射器之前添加了REST Get Snap,但仍然只能捕获调用器类型[triggered,scheduled]。在这两者之间是否有我遗漏的一步?如果日志记录是您想要的,那么为什么不使用SnapLogic管道监控API呢?我已经这样做了,但是,仍然没有任务名称值,只有输出上的“invoker”。这是否意味着此信息不公开?日志项没有任务名称<代码>调用程序是您必须使用的工具。@tee\t请注意,我添加了另一个答案来满足您的日志记录要求。