有没有办法用完成电子邮件通过电子邮件发送工作流程的持续时间?我可以使用这样的变量吗?
答案 0 :(得分:0)
我不认为这样的变量是可用的。但如果需要,你可以使用shell动作。在工作流程开始时,执行shell脚本以开始时间并将其保存在变量中。在工作流程刚刚结束之前,您的电子邮件操作有另一个shell脚本,它将计算当前时间 - 开始时间并在您的电子邮件中使用它。但这会使您的工作流程变脏
答案 1 :(得分: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 functionality,但我还没有找到提取数据的方法。