Hitachi

uCosminexus Service Coordinator Interactive Workflow システム構築・運用ガイド


付録I.2 ジョブを使用した非同期処理の仕組み

ジョブとは,運用管理RESTサービスが実行する機能のうち,運用管理REST APIの呼び出しとは非同期に実行する機能のことです。案件の一括削除のように,処理に時間が掛かる機能をジョブとして提供します。ジョブに対しては次の操作ができます。

〈この項の構成〉

(1) ジョブの投入による非同期処理の実行

ジョブを実行するには,ジョブの投入APIを使用します。

ジョブの投入APIが呼び出された場合の処理の流れを次の図に示します。

図I‒2 ジョブの投入APIが呼び出された場合の処理の流れ

[図データ]

[説明]
  1. 実行する処理を,APIのリクエストボディに指定します。

  2. ジョブの投入APIが呼び出されると,運用管理RESTサービスはジョブに対応するレコード(ジョブレコード)をワーク管理データベースに登録し,ジョブをバックグラウンドで(APIの呼び出しとは非同期に)実行します。

  3. ジョブを受け付けたことを表すレスポンスが,ジョブの完了を待たずに,APIを呼び出したクライアントに返却されます。

  4. ジョブが開始されます。

    ジョブは,WorkManagerを使用してバックグラウンドで実行されます。

  5. ジョブが完了すると,運用管理RESTサービスはジョブの実行結果をジョブレコードに反映します。

ジョブレコードはジョブレコードの取得API,またはジョブレコードの一覧取得APIを使用して確認できます。

(2) ジョブレコードの取得による非同期処理の実行状況の確認

非同期処理の実行状況は,ジョブレコードの取得API,またはジョブレコードの一覧取得APIでジョブレコードを取得して確認できます。ジョブレコードは,次の表に示すプロパティで構成されます。

表I‒2 ジョブレコードのプロパティ一覧

項番

プロパティ名

内容

1

ArgumentDataList

ジョブが使用する引数データ

2

ClosedDate

ジョブの終了日時

3

Creator

ジョブの投入者

4

FunctionName

ジョブのファンクション名

5

ID

ジョブのジョブID

6

ResultDataList

ジョブの結果データ

7

ReturnCode

ジョブのリターンコード

8

StartDate

ジョブの開始日時

9

StateCode

ジョブの状態

各プロパティの詳細を説明します。

  1. ArgumentDataList

    ジョブ実行時の引数データです。

  2. ClosedDate

    ジョブが正常終了または異常終了した日時です。

  3. Creator

    ジョブの投入者です。

  4. FunctionName

    ジョブの機能を表すファンクション名です。

    ファンクション名とジョブの機能の対応を次に示します。

    表I‒3 ファンクション名とジョブの機能の対応

    ファンクション名

    ジョブの機能

    delpi

    案件の一括削除

  5. ID

    ジョブレコードを一意に識別するための識別子です。ジョブIDは,ジョブ実行前のジョブレコード登録時に,運用管理RESTサービスで採番します。

    ジョブレコードの取得APIで取得するレコードを特定する場合に使用します。

  6. ResultDataList

    ジョブの結果データです。ジョブが正常終了した時に,結果データを格納します。

  7. ReturnCode

    ジョブのリターンコードです。

  8. StartDate

    ジョブを開始した日時です。

  9. StateCode

    ジョブの状態を表すコード値です。コード値ごとの意味を次の表で示します。

    表I‒4 コード値ごとの意味

    コード値

    ジョブの状態

    意味

    d

    実行中

    ジョブが実行されている状態を示します。

    o

    正常終了

    ジョブが正常に終了した状態を示します。

    v

    異常終了

    ジョブの実行中に例外が発生し,異常終了した状態を示します。

タイミングごとにジョブレコードのプロパティに設定される値を次の表に示します。

表I‒5 タイミングごとにジョブレコードのプロパティに設定される値

項番

プロパティ名

内容

タイミングごとに設定される値

ジョブ投入時

ジョブ正常終了時

ジョブ異常終了時

1

ArgumentDataList

ジョブが使用する引数データ

ジョブの投入APIのArgumentDataList

なし(ジョブ投入時の値のまま)

なし(ジョブ投入時の値のまま)

2

ClosedDate

終了日時

なし

ジョブが終了した日時

ジョブが終了した日時

3

Creator

ジョブの投入者

ジョブの投入APIのUserDescription

なし(ジョブ投入時の値のまま)

なし(ジョブ投入時の値のまま)

4

FunctionName

ジョブのファンクション名

ジョブの投入APIのFunctionName

なし(ジョブ投入時の値のまま)

なし(ジョブ投入時の値のまま)

5

ID

ジョブのジョブID

ジョブ投入時に採番された一意なID

なし(ジョブ投入時の値のまま)

なし(ジョブ投入時の値のまま)

6

ResultDataList

結果データ

なし

ジョブの結果データ

なし

7

ReturnCode

リターンコード

なし

ジョブのリターンコード

ジョブのリターンコード

8

StartDate

開始日時

ジョブを開始した日時

なし(ジョブ投入時の値のまま)

なし(ジョブ投入時の値のまま)

9

StateCode

ジョブの状態

実行中を示すコード値(d)

正常終了を示すコード値(o)

異常終了を示すコード値(v)

重要

ジョブ実行時に障害が発生すると,「ジョブ異常終了時」列に示す値に更新できずにジョブが終了することがあります。この場合,状態は実行中(d)のままとなります。

障害発生時にジョブが終了しているかどうかは,メッセージKDIW05603-Eで確認できます。メッセージの詳細については,マニュアル「uCosminexus Service Coordinator Interactive Workflow メッセージ」を参照してください。

(3) ジョブレコードの自動削除

運用管理RESTサービスは,ジョブの開始日時から一定時間が経過したすべてのジョブレコードを,サービスの開始時に,ジョブの状態に関係なく自動的に削除します。ジョブの開始日時からの経過時間は,セットアッププロパティファイルのMngRestServiceJobTimeToDeleteで指定します。ジョブの開始日時から,次に示す計算式の時間が経過しているすべてのジョブレコードが自動削除の対象になります。

<MngRestServiceJobTimeToDeleteの値>×24時間

MngRestServiceJobTimeToDeleteの指定と自動削除されるジョブレコードの例を次の図に示します。この例では,MngRestServiceJobTimeToDelete3を指定して1月5日の7時に運用管理RESTサービスを開始しているため,1月2日の7時より前に開始したジョブのジョブレコードがすべて削除されます。

図I‒3 MngRestServiceJobTimeToDeleteの指定と自動削除されるジョブレコードの例

[図データ]

(4) ジョブの再投入による非同期処理の再実行

ジョブの実行中に障害が発生してジョブが最後まで実行されなかった場合,ジョブを再投入できます。

運用管理RESTサービスは,ジョブを実行する前のジョブレコードの登録時に,メッセージKDIW70043-Iを出力します。ジョブを再投入するには,このメッセージに出力されたファンクション名と引数データを指定して,ジョブの投入APIを実行します。

メッセージの詳細については,マニュアル「uCosminexus Service Coordinator Interactive Workflow メッセージ」を参照してください。