2

有没有办法通过完成电子邮件通过电子邮件发送工作流程的持续时间?有没有我可以使用的变量?

4

2 回答 2

0

我不认为这样的变量是可用的。但如果需要,您可以使用 shell 操作来执行此操作。在您的工作流程启动期间,执行一个 shell 脚本作为启动时间并将其保存在一个变量中。在您的电子邮件操作之前完成工作流程时,有另一个 shell 脚本将计算当前时间 - 开始时间并在您的电子邮件中使用它。但这会使您的工作流程变脏

于 2014-12-07T07:37:47.040 回答
0

这是 Oozie 的一个显着缺点。我们的每个工作流程都以一个 shell 操作开始,该操作调用一个简单的 bash 脚本来获取时间戳。

<action name="start-time">
  <shell xmlns="uri:oozie:shell-action:0.1">
    <job-tracker>${jobTracker}</job-tracker>
    <name-node>${nameNode}</name-node>
    <exec>utc-time.sh</exec>
    <file>../common/utc-time.sh#utc-time.sh</file>
    <capture-output/>
  </shell>
  <ok to="the-first-actual-action"/>
  <error to="fail"/>
</action>

这可以在我们发送完成时发送的电子邮件中使用 Java EL 进行测试,错误,如下所示:

<action name="email">
  <email xmlns="uri:oozie:email-action:0.1">
    <to>${emailsToAlert}</to>
    <subject>COMPLETED: ${wf:name()}</subject>
    <body>
      Workflow ID: ${wf:id()}
      Workflow Name: ${wf:name()}
      Workflow app path: ${wf:appPath()}
      Start Time: ${wf:actionData('start-time')['time']}
      End Time: ${timestamp()}
    </body>
  </email>
  <ok to="end"/>
  <error to="fail"/>
</action>

获取持续时间是另一个跳跃式练习,涉及将开始时间和结束时间传递给 bash 脚本。

我正在研究Oozie SLA 功能,但我还没有找到提取数据的方法。

于 2018-01-08T03:17:31.457 回答