5.8 KiB
5.8 KiB
SHJ-8 共通バッチ処理ログシステム
概要
SHJ-8は全てのSHJ系バッチ処理の実行ログをbatch_logテーブルに登録する共通機能です。 仕様書に基づき、batch_logテーブルの各フィールドを活用してSHJ-8の要件を満たします:
フィールドマッピング
- デバイスID →
parameters(JSON形式) - プロセス名 →
process_name - ジョブ名 →
messageの一部 - ステータス →
status - ステータスコメント →
message、error_details - 登録日時 →
start_time、created_at - 更新日時 →
end_time、updated_at
処理フロー
【処理1】入力パラメーターをチェックする
- デバイスID: device表での存在確認
- プロセス名/ジョブ名: いずれか必須の確認
- ステータス: 必須チェック
- 登録日時/更新日時: yyyy/mm/dd形式の検証
【処理2】バッチ処理ログを登録する
- batch_logテーブルへのINSERT処理
- job_log_idはAUTO_INCREMENTで自動生成
- status_commentは処理成功時に「処理成功」を設定
- 仕様書指定の日付でcreated_at/updated_atを設定
【処理3】処理結果を返却する
- 処理結果: 0=正常終了、1=異常終了
- 異常情報の詳細メッセージ
使用方法
コマンド実行
php artisan shj:batch-log {デバイスID} {プロセス名} {ジョブ名} {ステータス} {登録日時} {更新日時}
実行例
# SHJ-4C室割当処理のログ記録
php artisan shj:batch-log 9999 "SHJ-4C" "室割当処理" "success" "2025/01/15" "2025/01/15"
# SHJメール送信処理のログ記録
php artisan shj:batch-log 9999 "SHJ-MAIL-SEND" "メール送信" "running" "2025/01/15" "2025/01/15"
# その他のSHJ系バッチのログ記録
php artisan shj:batch-log 9999 "SHJ-5" "駐車場空き確認" "completed" "2025/01/15" "2025/01/15"
テストデータ
database/seeders/ShjBatchLogTestSeeder.phpにテスト用のデバイスデータが含まれています。
テストデータ挿入
php artisan db:seed --class=ShjBatchLogTestSeeder
テストデバイス
- device_id: 9999 (テスト用プリンター)
データベーステーブル
batch_log(統一テーブル)
CREATE TABLE `batch_log` (
`id` bigint(20) UNSIGNED NOT NULL,
`process_name` varchar(50) NOT NULL COMMENT 'プロセス名',
`status` varchar(20) NOT NULL COMMENT 'ステータス',
`start_time` datetime NOT NULL COMMENT '開始時刻',
`end_time` datetime DEFAULT NULL COMMENT '終了時刻',
`parameters` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'パラメータ(JSON形式)',
`message` text DEFAULT NULL COMMENT 'メッセージ',
`error_details` text DEFAULT NULL COMMENT 'エラー詳細',
`execution_count` int(11) NOT NULL DEFAULT 0 COMMENT '実行回数',
`success_count` int(11) NOT NULL DEFAULT 0 COMMENT '成功回数',
`error_count` int(11) NOT NULL DEFAULT 0 COMMENT 'エラー回数',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL
)
device
CREATE TABLE `device` (
`device_id` int(10) UNSIGNED NOT NULL,
`park_id` int(10) UNSIGNED DEFAULT NULL,
`device_type` varchar(255) DEFAULT NULL,
`device_subject` varchar(255) DEFAULT NULL,
-- その他のフィールド...
)
ファイル構成
モデル
app/Models/Device.php- deviceテーブルのEloquentモデルapp/Models/Batch/BatchLog.php- batch_logテーブル対応モデル- SHJ-8仕様に基づく共通バッチログ機能
createShjJobLog()メソッドでbatch_logに統一記録- 全SHJ系バッチで共通利用
コマンド
app/Console/Commands/ShjBatchLogCommand.php- Artisanコマンド
サービス
app/Services/ShjBatchLogService.php- 核となるビジネスロジック
設定
app/Providers/AppServiceProvider.php- サービスの依存関係注入設定
ログ
処理の詳細なログはstorage/logs/laravel.logに出力されます。
エラーハンドリング
- デバイスID存在チェックエラー
- パラメータ形式エラー
- 日付形式エラー
- データベース挿入エラー
- 全てのエラーはbatch_logテーブルに記録
入出力仕様
入力パラメーター
| No | パラメーター | 桁数 | 型 | 多重度 | 備考 |
|---|---|---|---|---|---|
| 1 | デバイスID | 10 | 数字列 | 1 | |
| 2 | プロセス名 | 20 | 文字列 | 1 | |
| 3 | ジョブ名 | 20 | 文字列 | 1 | |
| 4 | ステータス | 10 | 文字列 | 1 | |
| 5 | 登録日時 | 10 | 日付(yyyy/mm/dd) | 1 | |
| 6 | 更新日時 | 10 | 日付(yyyy/mm/dd) | 1 |
出力パラメーター
| No | パラメーター | 桁数 | 型 | 多重度 | 備考 |
|---|---|---|---|---|---|
| 1 | 処理結果 | 1 | 数値 | 1 | 0:正常終了/1:異常終了 |
| 2 | 異常情報 | ## | 文字列 | 1 |
出力結果(仕様書準拠)
正常終了時
{
"処理結果": 0,
"異常情報": "",
"batch_log_id": 1
}
エラー時
{
"処理結果": 1,
"異常情報": "エラー: デバイスID 9999 が見つかりません",
"batch_log_id": 1
}
処理結果の値
- 0: 正常終了
- 1: 異常終了
異常情報
- 正常時: 空文字
- エラー時: エラーの詳細内容
注意事項
- デバイスIDは事前にdeviceテーブルに存在している必要があります
- プロセス名とジョブ名はいずれか必須ですが、どちらも設定可能です
- 日付形式はyyyy/mm/dd形式で入力してください
- batch_logテーブルを使用してSHJ-8の機能を実現しています
- すべてのSHJ系バッチで共通利用できる統一ログシステムです