2012-01-19 40 views
4

"終了"が呼び出されたときにJobExecutionDeciderの終了コードに関する問題があります。私はシェルスクリプトの中でCommandLineJobRunnerを使用しています。ここで$を介して終了コードを取得しますか?呼び出されたプログラムの終了状態を示します。問題は、JobExecutionDeciderが "end on"が呼び出されるたびに、終了ステータスは常に1(失敗)に設定されます。これは、通常の「ステップ」で「終了」が呼び出された場合ではありません。そのような場合、終了コードは適切に設定されます(つまり0)。私は手作業で終了コードを "COMPLETED"に設定しようとしましたが、以下のように同じ結果が出ました。成功した終了コードでJobExecutionDeciderを終了する方法

この決定は実際には「前段階」であり、ジョブによって最初に実行されることに注意してください。処理を終了すると判定された場合には、実際の「ステップ」は実行されない。春-config設定から

< job id="jobOne" /> 
< decision id="myDecision" decider="myDecider"> 
    < end on="ABORT" exit-code="COMPLETED"/> 
    < next on="CONTINUE" to="nextStep" /> 
< /decision> 

< step id="stepOne" /> 
    < tasklet ref="myTasklet"> 
    ... 

決定者から:私は十分な情報を提供してきました

public FlowExecutionStatus decide(JobExecution jobEx, StepExecution arg1) { 
    if (abortExecution()) 
    return new FlowExecutionStatus("ABORT"); 

return new FlowExecutionStatus("CONTINUE"); 
} 

希望。どんな助けもありがとう。ありがとう。

答えて

2

CommandLineJobRunnerが順番にのみ

を発見し、私は上記の構成を持つ仕事を残し、ほぼ確信していない

  • を失敗しました状態UNKNOWN、これはexitCodeMapperから "これを知らない、私は1を返す"と解釈されます(.intValue()メソッドを参照)

    あなたは独自のCommandLineJobrunner(元のものを拡張するだけ)を提供し、exitCodeMapperの独自の実装を設定することができます

  • +0

    ありがとうございます。はい、コマンドラインのデバッグをオンにした後、exitCodeがNOOPに設定されていました。私はまだそれがNOOPに設定されていて、完了していない理由を理解していません。いずれにしても、customExitCodeマッパーを追加するのが正しい考えでした。ありがとう! – tmalvey

    関連する問題