diff --git a/ecs/jskult-batch/src/batch/environment/dcf_inst_merge_environment.py b/ecs/jskult-batch/src/batch/environment/dcf_inst_merge_environment.py index 5688fa84..3da34501 100644 --- a/ecs/jskult-batch/src/batch/environment/dcf_inst_merge_environment.py +++ b/ecs/jskult-batch/src/batch/environment/dcf_inst_merge_environment.py @@ -15,6 +15,8 @@ class DCFInstMergeEnvironment(JskultBatchEnvironment): self.PROCESS_NAME = environment.PROCESS_NAME self.JSK_DATA_SEND_FOLDER = environment.JSK_DATA_SEND_FOLDER self.JSK_BACKUP_FOLDER = environment.JSK_BACKUP_FOLDER + self.TRANSFER_RESULT_FOLDER = environment.TRANSFER_RESULT_FOLDER + self.TRANSFER_RESULT_FILE_NAME = environment.TRANSFER_RESULT_FILE_NAME self.DCF_INST_MERGE_SEND_FILE_NAME = environment.DCF_INST_MERGE_SEND_FILE_NAME def validate(self): @@ -38,5 +40,9 @@ class DCFInstMergeEnvironment(JskultBatchEnvironment): super()._assert_variable_not_empty( self.JSK_DATA_SEND_FOLDER, 'JSK_DATA_SEND_FOLDER') super()._assert_variable_not_empty(self.JSK_BACKUP_FOLDER, 'JSK_BACKUP_FOLDER') + super()._assert_variable_not_empty( + self.TRANSFER_RESULT_FOLDER, 'TRANSFER_RESULT_FOLDER') + super()._assert_variable_not_empty( + self.TRANSFER_RESULT_FILE_NAME, 'TRANSFER_RESULT_FILE_NAME') super()._assert_variable_not_empty(self.DCF_INST_MERGE_SEND_FILE_NAME, 'DCF_INST_MERGE_SEND_FILE_NAME') diff --git a/ecs/jskult-batch/src/batch/environment/update_business_day_environment.py b/ecs/jskult-batch/src/batch/environment/update_business_day_environment.py index 5a5f3770..cc826e93 100644 --- a/ecs/jskult-batch/src/batch/environment/update_business_day_environment.py +++ b/ecs/jskult-batch/src/batch/environment/update_business_day_environment.py @@ -7,16 +7,17 @@ class UpdateBusinessDayEnvironment(JskultBatchEnvironment): """実消化&アルトマークのバッチ処理で使用する環境変数を管理するクラス""" def __init__(self): + self.PROCESS_NAME = environment.PROCESS_NAME + self.JSKULT_CONFIG_BUCKET = environment.JSKULT_CONFIG_BUCKET self.JSKULT_BACKUP_BUCKET = environment.JSKULT_BACKUP_BUCKET self.BATCH_MANAGE_DYNAMODB_TABLE_NAME = environment.BATCH_MANAGE_DYNAMODB_TABLE_NAME + self.ARCHIVE_STATEMACHINE_ARN = environment.ARCHIVE_STATEMACHINE_ARN self.BATCH_EXECUTION_ID = environment.BATCH_EXECUTION_ID self.MAX_RUN_COUNT = environment.MAX_RUN_COUNT - self.PROCESS_NAME = environment.PROCESS_NAME - self.TRANSFER_RESULT_FOLDER = environment.TRANSFER_RESULT_FOLDER - self.TRANSFER_RESULT_FILE_NAME = environment.TRANSFER_RESULT_FILE_NAME - self.JSK_RECEIVE_FOLDER = environment.JSK_RECEIVE_FOLDER - self.ARCHIVE_STATEMACHINE_ARN = environment.ARCHIVE_STATEMACHINE_ARN - + self.JSKULT_CONFIG_CALENDAR_FOLDER = environment.JSKULT_CONFIG_CALENDAR_FOLDER + self.JSKULT_CONFIG_CALENDAR_RUN_ARCHIVE_DAY_FILE_NAME = environment.JSKULT_CONFIG_CALENDAR_RUN_ARCHIVE_DAY_FILE_NAME + self.JSKULT_CONFIG_EXPECTED_DATA_LIST_FOLDER = environment.JSKULT_CONFIG_EXPECTED_DATA_LIST_FOLDER + self.JSKULT_CONFIG_EXPECTED_DATA_LIST_FILE_NAME = environment.JSKULT_CONFIG_EXPECTED_DATA_LIST_FILE_NAME def validate(self): """ 必須の環境変数が設定されているかどうか検査する。 @@ -25,18 +26,34 @@ class UpdateBusinessDayEnvironment(JskultBatchEnvironment): Raises: EnvironmentVariableNotSetException: 環境変数の設定ミス """ + + super()._assert_variable_not_empty( + self.PROCESS_NAME, 'PROCESS_NAME') super()._assert_variable_not_empty( self.JSKULT_BACKUP_BUCKET, 'JSKULT_BACKUP_BUCKET') + super()._assert_variable_not_empty( + self.JSKULT_CONFIG_BUCKET, 'JSKULT_CONFIG_BUCKET') super()._assert_variable_not_empty( self.BATCH_MANAGE_DYNAMODB_TABLE_NAME, 'BATCH_MANAGE_DYNAMODB_TABLE_NAME') - super()._assert_variable_not_empty(self.BATCH_EXECUTION_ID, 'BATCH_EXECUTION_ID') - super()._assert_variable_is_int(self.MAX_RUN_COUNT, 'MAX_RUN_COUNT') + super()._assert_variable_not_empty( + self.ARCHIVE_STATEMACHINE_ARN, 'ARCHIVE_STATEMACHINE_ARN') + super()._assert_variable_not_empty( + self.BATCH_EXECUTION_ID, 'BATCH_EXECUTION_ID') + super()._assert_variable_is_int( + self.MAX_RUN_COUNT, 'MAX_RUN_COUNT') # MAX_RUN_COUNTは数値として扱うため、検査後に変換 self.MAX_RUN_COUNT = int(self.MAX_RUN_COUNT) - super()._assert_variable_not_empty(self.PROCESS_NAME, 'PROCESS_NAME') + super()._assert_variable_not_empty( - self.TRANSFER_RESULT_FOLDER, 'TRANSFER_RESULT_FOLDER') + self.JSKULT_CONFIG_CALENDAR_FOLDER, + 'JSKULT_CONFIG_CALENDAR_FOLDER') super()._assert_variable_not_empty( - self.TRANSFER_RESULT_FILE_NAME, 'TRANSFER_RESULT_FILE_NAME') - super()._assert_variable_not_empty(self.JSK_RECEIVE_FOLDER, 'JSK_RECEIVE_FOLDER') - super()._assert_variable_not_empty(self.ARCHIVE_STATEMACHINE_ARN, 'ARCHIVE_STATEMACHINE_ARN') + self.JSKULT_CONFIG_CALENDAR_RUN_ARCHIVE_DAY_FILE_NAME, + 'JSKULT_CONFIG_CALENDAR_RUN_ARCHIVE_DAY_FILE_NAME') + super()._assert_variable_not_empty( + self.JSKULT_CONFIG_EXPECTED_DATA_LIST_FOLDER, + 'JSKULT_CONFIG_EXPECTED_DATA_LIST_FOLDER') + super()._assert_variable_not_empty( + self.JSKULT_CONFIG_EXPECTED_DATA_LIST_FILE_NAME, + 'JSKULT_CONFIG_EXPECTED_DATA_LIST_FILE_NAME') + diff --git a/ecs/jskult-batch/src/batch/update_business_day.py b/ecs/jskult-batch/src/batch/update_business_day.py index cdac4dbf..75bd20af 100644 --- a/ecs/jskult-batch/src/batch/update_business_day.py +++ b/ecs/jskult-batch/src/batch/update_business_day.py @@ -8,7 +8,8 @@ from src.batch.environment.update_business_day_environment import \ from src.manager.jskult_batch_run_manager import JskultBatchRunManager from src.manager.jskult_batch_status_manager import JskultBatchStatusManager from src.manager.jskult_hdke_tbl_manager import JskultHdkeTblManager -from src.error.exceptions import EnvironmentVariableNotSetException +from src.error.exceptions import (EnvironmentVariableNotSetException, + MaxRunCountReachedException) from src.logging.get_logger import get_logger from src.system_var import constants @@ -35,9 +36,9 @@ class UpdateBusinessDay(JskultBatchEntrypoint): jskult_batch_status_manager = JskultBatchStatusManager( self.environment.PROCESS_NAME, - # TODO チケットNEWDWH2021-1847の実装で作成した定数に置き換え - 'update_business_day', + constants.PROCESS_NAME_UPDATE_BUSINESS_DAY, self.environment.MAX_RUN_COUNT, + # 日付テーブル更新では連携ファイル数を参照しないため、0を指定する。 0 ) @@ -53,19 +54,26 @@ class UpdateBusinessDay(JskultBatchEntrypoint): '日次バッチ処理中でない、もしくはdump取得が正常終了していないため、日次バッチ処理を異常終了します。') # バッチ実行管理テーブルをfailedで登録 jskult_batch_run_manager.batch_failed() - - if not jskult_batch_status_manager.can_run_business_day_update(): - # 後続処理の起動条件を満たしていない場合 - # 処理ステータスを「処理待」に設定 + + # バッチステータス管理テーブルをエラーに更新 jskult_batch_status_manager.set_process_status( - constants.PROCESS_STATUS_WAITING) - - # バッチ実行管理テーブルに「retry」で登録 - jskult_batch_run_manager.batch_retry() - - logger.info('処理待:実消化&アルトマーク_日付テーブル更新') - + constants.PROCESS_STATUS_ERROR) return + + try: + if not jskult_batch_status_manager.can_run_post_process(): + # 後続処理の起動条件を満たしていない場合 + # 処理ステータスを「処理待」に設定 + jskult_batch_status_manager.set_process_status( + constants.PROCESS_STATUS_WAITING) + + # バッチ実行管理テーブルに「retry」で登録 + jskult_batch_run_manager.batch_retry() + + return + + except MaxRunCountReachedException: + logger.info('後続処理の実行が完了していないため、日付テーブル更新処理を異常終了します。') try: # TODO アーカイブ取得日カレンダーを取得する get_archive_calendar = None @@ -102,12 +110,12 @@ class UpdateBusinessDay(JskultBatchEntrypoint): # TODO jsk_receive_file_listと比較して受領予定にないファイルがあった場合(I-6)ログ出力 pass - JskultHdkeTblManager.update_batch_process_complete() + jskult_hdke_tbl_manager.update_batch_process_complete() # 処理ステータスを「処理済」に設定 jskult_batch_status_manager.set_process_status( constants.PROCESS_STATUS_DONE) - JskultBatchRunManager.batch_success() + jskult_batch_run_manager.batch_success() logger.info('[NOTICE]処理終了: 実消化&アルトマーク_日付テーブル更新') except Exception as e: diff --git a/ecs/jskult-batch/src/system_var/environment.py b/ecs/jskult-batch/src/system_var/environment.py index 9732ed5b..63fcc236 100644 --- a/ecs/jskult-batch/src/system_var/environment.py +++ b/ecs/jskult-batch/src/system_var/environment.py @@ -12,21 +12,24 @@ PROCESS_NAME = os.environ.get('PROCESS_NAME', None) # AWS JSKULT_CONFIG_BUCKET = os.environ.get('JSKULT_CONFIG_BUCKET', None) +JSKULT_BACKUP_BUCKET = os.environ.get('JSKULT_BACKUP_BUCKET', None) +BATCH_MANAGE_DYNAMODB_TABLE_NAME = os.environ.get('BATCH_MANAGE_DYNAMODB_TABLE_NAME', None) +ARCHIVE_STATEMACHINE_ARN = os.environ('ARCHIVE_STATEMACHINE_ARN', None) BATCH_EXECUTION_ID = os.environ.get('BATCH_EXECUTION_ID', None) MAX_RUN_COUNT = os.environ.get('MAX_RUN_COUNT', None) TRANSFER_RESULT_FOLDER = os.environ.get('TRANSFER_RESULT_FOLDER', None) TRANSFER_RESULT_FILE_NAME = os.environ.get('TRANSFER_RESULT_FILE_NAME', None) -DCF_INST_MERGE_SEND_FILE_NAME = os.environ.get( - 'DCF_INST_MERGE_SEND_FILE_NAME', None) -JSKULT_BACKUP_BUCKET = os.environ.get('JSKULT_BACKUP_BUCKET', None) -JSK_IO_BUCKET = os.environ.get('JSK_IO_BUCKET', None) -JSK_BACKUP_FOLDER = os.environ.get('JSK_BACKUP_FOLDER', None) -JSK_DATA_SEND_FOLDER = os.environ.get('JSK_DATA_SEND_FOLDER', None) -JSK_RECEIVE_FOLDER = os.environ.get('JSK_RECEIVE_FOLDER', None) -BATCH_MANAGE_DYNAMODB_TABLE_NAME = os.environ.get( - 'BATCH_MANAGE_DYNAMODB_TABLE_NAME', None) -ARCHIVE_STATEMACHINE_ARN = os.environ( - 'ARCHIVE_STATEMACHINE_ARN', None +JSKULT_CONFIG_CALENDAR_FOLDER = os.environ.get( + 'JSKULT_CONFIG_CALENDAR_FOLDER', None +) +JSKULT_CONFIG_CALENDAR_RUN_ARCHIVE_DAY_FILE_NAME = os.environ.get( + 'JSKULT_CONFIG_CALENDAR_RUN_ARCHIVE_DAY_FILE_NAME', None +) +JSKULT_CONFIG_EXPECTED_DATA_LIST_FOLDER = os.environ.get( + 'JSKULT_CONFIG_EXPECTED_DATA_LIST_FOLDER', None +) +JSKULT_CONFIG_EXPECTED_DATA_LIST_FILE_NAME = os.environ.get( + 'JSKULT_CONFIG_EXPECTED_DATA_LIST_FILE_NAME', None )