Exemple #1
0
 public void DipAlmiLogPremonitorTest([EventHubTrigger("ms-010", Connection = "ConnectionString")] string message, ILogger log)
 {
     log.EnterJson("{0}", message);
     try
     {
         var result = _service.ReadAlarmJudgementTarget();
         _service.CreateAndEnqueueAlarmInfo(result.Entity);
         _service.UpdateAlarmJudgedAnalysisResult(result.Entity);
     }
     catch (Exception ex)
     {
         // [TODO]:Blobへクライアントメッセージを保存する処理を追加する(ControllerではなくServiceで実行する?)
         log.Error(ex, "想定外のエラー");
     }
     finally
     {
         log.LeaveJson("{0}", message);
     }
 }
Exemple #2
0
        public void MonitorAlmilogAnalysisResultTable([TimerTrigger("0 0 16 * * *")] TimerInfo timerInfo, ILogger log)
        {
            log.EnterJson("{0}", timerInfo);
            try
            {
                // アプリケーション設定でSystem名・SubSystem名が設定されていない場合、実行時にエラーとする
                if (string.IsNullOrEmpty(_settings.SystemName))
                {
                    throw new RmsInvalidAppSettingException($"{nameof(_settings.SystemName)} is required.");
                }

                if (string.IsNullOrEmpty(_settings.SubSystemName))
                {
                    throw new RmsInvalidAppSettingException($"{nameof(_settings.SubSystemName)} is required.");
                }

                // Sq1.1: アルミスロープログ解析結果を取得する
                if (_service.ReadAlarmJudgementTarget(out List <DtAlmilogAnalysisResult> unjudgedItems, out List <List <DtAlmilogAnalysisResult> > alarmItemsList))
                {
                    // Sq1.2: アルミスロープログ予兆監視アラーム定義を取得する
                    _service.ReadAlarmDefinition(alarmItemsList, out List <List <Tuple <DtAlmilogAnalysisResult, DtAlmilogPremonitor> > > models);

                    // Sq1.3: アラーム生成の要否を判断する
                    bool needsAlarm = models != null && models.Count > 0;
                    if (!needsAlarm)
                    {
                        // アラーム生成不要
                        IEnumerable <long?> sidArray = alarmItemsList == null ? new long?[] { } : alarmItemsList.Select(x => x.FirstOrDefault()?.Sid);
                        log.Info(nameof(Resources.UT_DAP_DAP_004), new object[] { string.Join(",", sidArray) });
                        return;
                    }

                    // Sq1.4: アラームキューを生成する
                    // Sq1.5: キューを登録する
                    if (_service.CreateAndEnqueueAlarmInfo(models))
                    {
                        // アラームキュー登録完了
                        IEnumerable <long?> sidArray = models.Select(x => x.FirstOrDefault()?.Item1?.Sid);
                        log.Info(nameof(Resources.UT_DAP_DAP_007), new object[] { string.Join(",", sidArray) });
                    }

                    // Sq1.6: 判断の実施済みフラグを更新する
                    if (_service.UpdateAlarmJudgedAnalysisResult(unjudgedItems))
                    {
                        // 判定済みフラグの更新完了
                        IEnumerable <long> sidArray = unjudgedItems.Select(x => x.Sid);
                        log.Info(nameof(Resources.UT_DAP_DAP_009), new object[] { string.Join(",", sidArray) });
                    }
                }
            }
            catch (RmsInvalidAppSettingException e)
            {
                log.Error(e, nameof(Resources.UT_DAP_DAP_010), new object[] { e.Message });
            }
            catch (Exception e)
            {
                log.Error(e, nameof(Resources.UT_DAP_DAP_001));
            }
            finally
            {
                log.LeaveJson("{0}", timerInfo);
            }
        }