web-dev-qa-db-ja.com

Autosysは、ジョブから返されたステータス値にビットマスクなどの計算を適用できますか?

添付ファイル付きのいくつかの電子メールの1つについてメールボックスをポーリングするジョブを作成したいと思います(ビジネスがWebサービスをフォークしない理由を聞かないでください、しかし私たちはあります)。電子メールは任意の順序で表示でき、プロセスはメールボックスをポーリングし、見つかった添付ファイルをダウンロードしてから、検出されたファイルに基づくステータスビットのビットマスクを含むステータスコードを返します。

次に、ステータス結果の関連ビットが設定されているかどうかに応じて、autosysバッチで各ファイルの処理ジョブを開始します。少数のジョブのフォールバック位置は、ビットの一意の組み合わせごとにチェックし、返された数に対応する適切なジョブを開始することです。ただし、2〜3ステータスビットを超えると、これは扱いにくくなり始めます。

Autosysが何らかの方法で戻り値の特定のビットを調べることは可能ですか?次と同等です:

  • ビット0が設定されている場合(結果&0x01 = 0x01)、ジョブAを実行します
  • ビット1が設定されている場合(結果&0x02 = 0x02)、ジョブBを実行します
  • ビット2が設定されている場合(結果&0x04 = 0x04)、ジョブCを実行します

... 等々?

ある種のフロー制御を実装しようとしているようです。 AutosysはあなたのEメールやカスタムコードなどについて何も知らないことを覚えておいてください。前提条件とジョブフローに基づいて決定を下します。

あなたの場合、私はボックスMAIL_BATCHを持っているところでこのようなことをします。内部には、ポーリングなどを実行し、終了コード(0,1,2,3)を返すコマンドMAIL_CHECKがあります。したがって、0〜2はジョブA、B、Cのいずれかの条件であり、3はエラー条件です。次に、MAIL_JOB_A、MAIL_JOB_B、MAIL_JOB_Cコマンドがあり、前の戻りコードに基づいて実行を決定します。したがって、MAIL_JOB_Aの前提条件はS(MAIL_JOB_CHECK)AND E(MAIL_JOB_CHECK)= 0です。次のジョブは、E(MAIL_JOB_CHECK)= 1などをチェックします。

1
trane