付録I.2 ジョブを使用した非同期処理の仕組み
ジョブとは,運用管理RESTサービスが実行する機能のうち,運用管理REST APIの呼び出しとは非同期に実行する機能のことです。案件の一括削除のように,処理に時間が掛かる機能をジョブとして提供します。ジョブに対しては次の操作ができます。
-
ジョブの投入
-
ジョブレコードの取得(個別と一覧)
-
ジョブの自動削除
-
ジョブの再投入
- 〈この項の構成〉
(1) ジョブの投入による非同期処理の実行
ジョブを実行するには,ジョブの投入APIを使用します。
ジョブの投入APIが呼び出された場合の処理の流れを次の図に示します。
- [説明]
-
-
実行する処理を,APIのリクエストボディに指定します。
-
ジョブの投入APIが呼び出されると,運用管理RESTサービスはジョブに対応するレコード(ジョブレコード)をワーク管理データベースに登録し,ジョブをバックグラウンドで(APIの呼び出しとは非同期に)実行します。
-
ジョブを受け付けたことを表すレスポンスが,ジョブの完了を待たずに,APIを呼び出したクライアントに返却されます。
-
ジョブが開始されます。
ジョブは,WorkManagerを使用してバックグラウンドで実行されます。
-
ジョブが完了すると,運用管理RESTサービスはジョブの実行結果をジョブレコードに反映します。
-
ジョブレコードはジョブレコードの取得API,またはジョブレコードの一覧取得APIを使用して確認できます。
(2) ジョブレコードの取得による非同期処理の実行状況の確認
非同期処理の実行状況は,ジョブレコードの取得API,またはジョブレコードの一覧取得APIでジョブレコードを取得して確認できます。ジョブレコードは,次の表に示すプロパティで構成されます。
項番 |
プロパティ名 |
内容 |
---|---|---|
1 |
ArgumentDataList |
ジョブが使用する引数データ |
2 |
ClosedDate |
ジョブの終了日時 |
3 |
Creator |
ジョブの投入者 |
4 |
FunctionName |
ジョブのファンクション名 |
5 |
ID |
ジョブのジョブID |
6 |
ResultDataList |
ジョブの結果データ |
7 |
ReturnCode |
ジョブのリターンコード |
8 |
StartDate |
ジョブの開始日時 |
9 |
StateCode |
ジョブの状態 |
各プロパティの詳細を説明します。
-
ArgumentDataList
ジョブ実行時の引数データです。
-
ClosedDate
ジョブが正常終了または異常終了した日時です。
-
Creator
ジョブの投入者です。
-
FunctionName
ジョブの機能を表すファンクション名です。
ファンクション名とジョブの機能の対応を次に示します。
表I‒3 ファンクション名とジョブの機能の対応 ファンクション名
ジョブの機能
delpi
案件の一括削除
-
ID
ジョブレコードを一意に識別するための識別子です。ジョブIDは,ジョブ実行前のジョブレコード登録時に,運用管理RESTサービスで採番します。
ジョブレコードの取得APIで取得するレコードを特定する場合に使用します。
-
ResultDataList
ジョブの結果データです。ジョブが正常終了した時に,結果データを格納します。
-
ReturnCode
ジョブのリターンコードです。
-
StartDate
ジョブを開始した日時です。
-
StateCode
ジョブの状態を表すコード値です。コード値ごとの意味を次の表で示します。
表I‒4 コード値ごとの意味 コード値
ジョブの状態
意味
d
実行中
ジョブが実行されている状態を示します。
o
正常終了
ジョブが正常に終了した状態を示します。
v
異常終了
ジョブの実行中に例外が発生し,異常終了した状態を示します。
タイミングごとにジョブレコードのプロパティに設定される値を次の表に示します。
項番 |
プロパティ名 |
内容 |
タイミングごとに設定される値 |
||
---|---|---|---|---|---|
ジョブ投入時 |
ジョブ正常終了時 |
ジョブ異常終了時 |
|||
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の指定と自動削除されるジョブレコードの例を次の図に示します。この例では,MngRestServiceJobTimeToDeleteに3を指定して1月5日の7時に運用管理RESTサービスを開始しているため,1月2日の7時より前に開始したジョブのジョブレコードがすべて削除されます。
(4) ジョブの再投入による非同期処理の再実行
ジョブの実行中に障害が発生してジョブが最後まで実行されなかった場合,ジョブを再投入できます。
運用管理RESTサービスは,ジョブを実行する前のジョブレコードの登録時に,メッセージKDIW70043-Iを出力します。ジョブを再投入するには,このメッセージに出力されたファンクション名と引数データを指定して,ジョブの投入APIを実行します。
メッセージの詳細については,マニュアル「uCosminexus Service Coordinator Interactive Workflow メッセージ」を参照してください。