2016-12-29 13 views
2

ワークフローに2つのアクションノードがあります:javaMainActionjavaMainAction2です。LoadApplicationServiceの完了ステータスをどのようにチェックしますか?

私のLoadApplicationServiceメソッドは、実行後にSUCCESSまたはFAILUREを返します。

SUCCESSが返された場合の応答の確認方法は?

workflow.xml:

<workflow-app name="WorkflowJavaMainAction" xmlns="uri:oozie:workflow:0.1"> 
    <start to="javaMainAction" /> 
    <action name="javaMainAction"> 
     <java> 
      <job-tracker>${jobTracker}</job-tracker> 
      <name-node>${nameNode}</name-node> 
      <configuration> 
       <property> 
        <name>mapred.job.queue.name</name> 
        <value>${queueName}</value> 
       </property> 
      </configuration> 
      <main-class>in.augmentiq.maxiq.dataschedular.services.LoadApplicationService</main-class> 
      <arg>${workflowAppPath}/javaMainActionInput/schedule_config.properties</arg> 
      <arg>${workflowAppPath}/javaMainActionInput/appRequestParams.json</arg> 
      <capture-output/> 
     </java> 
     <ok to="javaMainAction2" /> 
     <error to="killJobAction" /> 
    </action> 
    <action name="javaMainAction2"> 
     <java> 
      <job-tracker>${jobTracker}</job-tracker> 
      <name-node>${nameNode}</name-node> 
      <configuration> 
       <property> 
        <name>mapred.job.queue.name</name> 
        <value>${queueName}</value> 
       </property> 
      </configuration> 
      <main-class>in.augmentiq.maxiq.dataschedular.services.LoadApplicationService</main-class> 
      <arg>${workflowAppPath}/javaMainAction2Input/schedule_config.properties</arg> 
      <arg>${workflowAppPath}/javaMainAction2Input/appRequestParams.json</arg> 
      <capture-output/> 
     </java> 
     <ok to="end" /> 
     <error to="killJobAction" /> 
    </action> 
    <kill name="killJobAction"> 
     <message>"Killed job due to error: ${wf:errorMessage(wf:lastErrorNode())}"</message> 
    </kill> 
    <end name="end" /> 
</workflow-app> 
+0

タイトルをより絞り込む。 – clearlight

答えて

1

LoadApplicationServiceが例えばkey=pair形式に出力を書き込むために必要response=SUCCESS

${wf:actionData("action-name")["key"]} 

比較すると決定Decision_Control_Nodeを取るための使用決定制御ノード:あなたはこのような出力を検査することができます。コメントを


編集:Javaのアクションでプロパティを作成する方法。

main()メソッドは、oozie.action.output.properties ENVIRONMENT変数で指定されたパスにプロパティファイルを書き込みます。 Reference

public static void main (String[] args) 
    { 
     String fileName = args[0]; 
     try{ 
     File file = new File(System.getProperty("oozie.action.output.properties")); 
     Properties props = new Properties(); 
     props.setProperty("PASS_ME", "123456"); 

     OutputStream os = new FileOutputStream(file); 
     props.store(os, ""); 
     os.close(); 
     System.out.println(file.getAbsolutePath()); 
     } 
     catch (Exception e) { 
     e.printStackTrace(); 
     } 
    } 
+0

の前にチェックする方法は? – Bond

+0

編集した回答を確認してください。ありがとう。 – YoungHobbit

+0

@ YoungHobbit:これにより、シェル・ジョブ(エコー)の出力をキャプチャーできましたが、Javaメイン・アクション・ジョブ(sysoutによって生成された出力)による出力をキャプチャーできませんでした。これに関する提案はありますか? – Bond

関連する問題