質問
Ohata Yuji · 2021年4月13日

RecordMapでのエラー情報の取得について。

こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。

InteroperabilityのRecordMapの仕組みを利用した、ファイル取り込みについて、
取り込み時のエラー内容を独自のログ出力グローバルに吐き出したいと考えております。

管理ポータル上だと以下のように表示されている内容を
文字列として取得したいだけなのですが、何か方法はありませんでしょうか?

 

Ent_Util.Logの中を見ると上記の内容は確認できたのですが、
わざわざシステムが吐いているログを見なくとも、
ビジネス・サービスの結果として取得できる情報があるのでは?と考えております。

Product version: IRIS 2020.1
00
1 0 4 44
Log in or sign up to continue

返信

Ohataさん
こんにちは。

頂いたエラーが出力されているTestAsou2というビジネスサービスはEnsLib.RecordMap.Service.FileServiceクラスを利用されているのではないかと思います。
であれば、アラート出力を利用する方が良いかと思います。

まず、以下のようにEns.AlertRequestメッセージを受信するビジネスオペレーションクラスを作成します。

/// アラートデータの保存
Class Util.Alert.StoreAlert Extends Ens.BusinessOperation [ Language = objectscript ]
{
 Parameter INVOCATION = "Queue";
 Parameter SETTINGS = "-AlertOnError";
 Method StoreError(pRequest As Ens.AlertRequest, Output pResponse As Ens.Response) As %Status
 { 
    set ^Log($I(^Log))=$lb(pRequest.AlertText,pRequest.AlertTime
                            ,pRequest.SourceConfigName,pRequest.SessionId)
    return $$$OK
 } 
 XData MessageMap
 {
 <MapItems>
    <MapItem MessageType="Ens.AlertRequest"> 
        <Method>StoreError</Method>
    </MapItem>
 </MapItems>
 } 
}

作成したビジネスオペレーションを追加します。この時、オペレーションクラスには先ほど作成したクラス名、
オペレーション名には「Ens.Alert」を指定します。

最後にエラーを受信したいビジネスホストの設定タブにある「エラー時に警告」にチェックを入れます。
こうすると、各ビジネスホストでエラーが発生すると、Ens.AlertにEns.AlertRequestメッセージが流れ、
^Logグローバルにエラーメッセージ(AlertTextプロパティ)や発生元のビジネスホスト(SourceConfigNameプロパティ)が格納されます。

ラフな説明ですみません。
ご不明な点等ありましたら、ご連絡ください。
 

Minamoto さん

ご回答いただきありがとうございます!
Ens.Alert機能自体あまり利用したことがなかったため、
確認に時間がかかっているところとなります。

RecordMap読み込みにおいてはParseOnlyをTrueにしてるのですが、
この時にアラートが飛んできていないような気がしていて、その点の確認中です。
解消しましたら改めてご連絡させて頂きます!

Minamoto さん

Alertでログが取れそうなことが確認できました!ありがとうございます。
ただ、ParseOnlyをTrueにするとVer 2020.1ではやはり通知が来ていなさそうなので、
別途サポートに問い合わせるようにします。

Ohataさん

ご連絡ありがとうございます。
ちなみに私の手元のIRIS 2020.3で試してみましたところ、アラートメッセージが送られました。
お手数ですが、サポートセンターに問い合わせて頂ければと思います。