样例如下:
<coordinator-app name="test_job" frequency="${coord:days(1)}" start="${job_start}" end="${job_end}" timezone="GMT+08:00" xmlns="uri:oozie:coordinator:0.2"> <controls> <concurrency>1</concurrency> </controls> <datasets> <dataset name="input_data" frequency="${coord:days(1)}" initial-instance="${job_start}" timezone="GMT+08:00"> <uri-template>${monitor_workflow_run_status_path}</uri-template> <done-flag>_SUCCESS</done-flag> </dataset> </datasets> <input-events> <data-in name="input" dataset="input_data"> <instance>${coord:current(-1)}</instance> </data-in> </input-events> <action> <workflow> <app-path>${application_path}</app-path> <configuration> <property> <name>nominalformateDate</name> <value>${coord:formatTime(coord:nominalTime(), "yyyyMMdd")}</value> </property> <property> <name>user_name</name> <value>${coord:user()}</value> </property> <property> <name>nominal_date</name> <value>${coord:formatTime(coord:dateOffset(coord:nominalTime(), -1, 'DAY'), "yyyy-MM-dd")}</value> </property> </configuration> </workflow> </action> </coordinator-app>
当某个coordinator job 开始执行时,oozie会首先检查所有的input-events是否都已满足条件,主要检查以下内容:uri-template
1、uri-template 指定路径的文件或文件夹是否已经存在;
2、done-flag 指定的文件是否存在。
只有当input-events满足了设置的条件时,工作流才会切换到runing状态,否则将一直处于wait状态,并时刻监视指定的文件或文件夹,一但input-events满足了,工作流会立即进入running状态。
done-flag 的设置一般有三种情况:
1、直接不设置 done-flag 标签,如下:
<dataset name="input_data" frequency="${coord:days(1)}" initial-instance="${job_start}" timezone="GMT+08:00"> <uri-template>${monitor_workflow_run_status_path}</uri-template> </dataset>
oozie 将默认done-flag 为 '_SUCCESS',所以需要满足 uri-template 指定路径的文件夹下存在 _SUCCESS 文件 ,job才触发执行。
2、设置done-flag 标签,但值为空,如下:
<dataset name="input_data" frequency="${coord:days(1)}" initial-instance="${job_start}" timezone="GMT+08:00"> <uri-template>${monitor_workflow_run_status_path}</uri-template> <done-flag></done-flag> </dataset>
oozie 则直接检测 uri-template 指定路径的文件或文件夹是否存在,只要存在就直接触发 job执行。
3、设置done-flag 标签,值不为空,如下:
<dataset name="input_data" frequency="${coord:days(1)}" initial-instance="${job_start}" timezone="GMT+08:00"> <uri-template>${monitor_workflow_run_status_path}</uri-template> <done-flag>trigger.dat</done-flag> </dataset>
oozie 则直接检测 uri-template 指定路径的文件夹下是否存在done-flag指定的文件如本例的 trigger.dat 文件,只要存在就触发 job执行。