記事へ Toshihiko Minamoto · 2021年4月13日 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プロパティ)が格納されます。ラフな説明ですみません。ご不明な点等ありましたら、ご連絡ください。
記事へ Toshihiko Minamoto · 2021年3月29日 Ohataさん すみません、instanceof と同等のメソッドとして、%IsA()メソッドがあります。これは、インスタンスがパラメータに指定されたクラスまたはそのサブクラスかどうかをチェックするものです。USER>write a.%IsA("Sample.Person")1よろしくお願いします。
記事へ Toshihiko Minamoto · 2021年3月29日 Ohataさんこんにちは。型(クラス名)を取得するには$classname()関数を使用したり、%ClassName()メソッドを使用します。例えば、USER> set a=##class(Sample.Person).%OpenId(1)でaというインスタンスを作成した場合、USER>write $classname(a)Sample.PersonUSER>write a.%ClassName(1)Sample.Personとクラス名が文字列で返ります。
記事へ Toshihiko Minamoto · 2021年3月14日 Amanoさん、こんにちは。非同期動作の場合、Serverメソッドを正常終了(quit $$$OK)すると、その後メッセージを受信するとOnClientMessage()が呼ばれます。 Method OnClientMessage(data As %String = "", close As %Integer) As %Status { // メッセージ受信処理 Quit 1 } ここで、dataはクライアントから送信されたメッセージが入り、クライアントがWebSocketをcloseすると、closeパラメータに1が入ります。 OnClientMessageの戻り値が1の場合、正常終了とみなされます。
記事へ Toshihiko Minamoto · 2021年2月25日 Amanoさん 投稿ありがとうございます。 ターミナルからの起動ではないので、エスケープシーケンス等正しく表示されない可能性はありますが、Vscodeでの簡単な設定で、ルーチンやシステム関数の戻り値などをちょっと試すのに便利ですね。
記事へ Toshihiko Minamoto · 2021年2月25日 Hiroseさん投稿ありがとうございます。現状、修正は依頼しているのですが、まだ最新のバージョンには反映されていないようです。将来的には修正されるかと思います。よろしくお願いいたします。
記事へ Toshihiko Minamoto · 2021年2月23日 データプラットフォームと同じかもしれませんが、個人的にはデータベースと言語が一体となったシステムだと思います。(MUMPSやCachéも同じですが。。。) データベースと言語が一体となっているので、言語からデータベースの内容を簡単かつ安全、高速に参照、更新できるところが利点だと思います。また、以前はデータベース=RDBとなっていたので、拒絶反応を示されることが多かったのですが、最近ではドキュメントDBやグラフDBなどリレーショナルでないものもいろいろと出てきているので、少しご理解いただけるようになってきているのでは。と思います。
記事へ Toshihiko Minamoto · 2021年2月22日 Hiroseさん、コメントありがとうございます。 お作法的にはこちらの記事が正統ではあるのですが、ベースとしていくつかのクラスを作成する必要があり、ちょっとした連携をするには敷居が高いのかなと思いまして、この記事を書いてみました。 また機会がありましたら、試してみてください
記事へ Toshihiko Minamoto · 2021年1月28日 Yamadaさん、こんにちは。日付を変換されている set array(key)=$zdh(data,3) に以下のようにtry-catch文を入れてはいかがでしょうか。 try { set array(key)=$zdh(data,3) } catch { set array(key)="" } こうすれば、$zdh()関数にてエラーが発生すると、catch文のブロックが実行されarray変数に空文字が入り、処理が継続されます。もし、arrayにエラーメッセージを入れるのでしたら、catchの後ろに例外変数を入れ、そのNameプロパティを代入してください。 try { set array(key)=$zdh(data,3) } catch err { set array(key)=err.Name }
記事へ
Ohataさん
こんにちは。
頂いたエラーが出力されているTestAsou2というビジネスサービスはEnsLib.RecordMap.Service.FileServiceクラスを利用されているのではないかと思います。
であれば、アラート出力を利用する方が良いかと思います。
まず、以下のようにEns.AlertRequestメッセージを受信するビジネスオペレーションクラスを作成します。
作成したビジネスオペレーションを追加します。この時、オペレーションクラスには先ほど作成したクラス名、
オペレーション名には「Ens.Alert」を指定します。
最後にエラーを受信したいビジネスホストの設定タブにある「エラー時に警告」にチェックを入れます。
こうすると、各ビジネスホストでエラーが発生すると、Ens.AlertにEns.AlertRequestメッセージが流れ、
^Logグローバルにエラーメッセージ(AlertTextプロパティ)や発生元のビジネスホスト(SourceConfigNameプロパティ)が格納されます。
ラフな説明ですみません。
ご不明な点等ありましたら、ご連絡ください。
記事へ
Ohataさん
すみません、instanceof と同等のメソッドとして、%IsA()メソッドがあります。これは、インスタンスがパラメータに指定されたクラスまたはそのサブクラスかどうかをチェックするものです。
USER>write a.%IsA("Sample.Person")
1
よろしくお願いします。
記事へ
Ohataさん
こんにちは。
型(クラス名)を取得するには$classname()関数を使用したり、%ClassName()メソッドを使用します。
例えば、
USER> set a=##class(Sample.Person).%OpenId(1)
でaというインスタンスを作成した場合、
USER>write $classname(a)
Sample.Person
USER>write a.%ClassName(1)
Sample.Person
とクラス名が文字列で返ります。
記事へ
Amanoさん、こんにちは。
非同期動作の場合、Serverメソッドを正常終了(quit $$$OK)すると、その後メッセージを受信するとOnClientMessage()が呼ばれます。
ここで、dataはクライアントから送信されたメッセージが入り、クライアントがWebSocketをcloseすると、closeパラメータに1が入ります。
OnClientMessageの戻り値が1の場合、正常終了とみなされます。
記事へ
Amanoさん
投稿ありがとうございます。
ターミナルからの起動ではないので、エスケープシーケンス等正しく表示されない可能性はありますが、
Vscodeでの簡単な設定で、ルーチンやシステム関数の戻り値などをちょっと試すのに便利ですね。
記事へ
Hiroseさん
投稿ありがとうございます。
現状、修正は依頼しているのですが、まだ最新のバージョンには反映されていないようです。
将来的には修正されるかと思います。
よろしくお願いいたします。
記事へ
データプラットフォームと同じかもしれませんが、個人的には
データベースと言語が一体となったシステム
だと思います。(MUMPSやCachéも同じですが。。。)
データベースと言語が一体となっているので、言語からデータベースの内容を簡単かつ安全、高速に参照、更新できるところが利点だと思います。
また、以前はデータベース=RDBとなっていたので、拒絶反応を示されることが多かったのですが、最近ではドキュメントDBやグラフDBなどリレーショナルでないものもいろいろと出てきているので、少しご理解いただけるようになってきているのでは。と思います。
記事へ
Hiroseさん、コメントありがとうございます。
お作法的にはこちらの記事が正統ではあるのですが、ベースとしていくつかのクラスを作成する必要があり、ちょっとした連携をするには敷居が高いのかなと思いまして、この記事を書いてみました。
また機会がありましたら、試してみてください
記事へ
Henriqueさん、ありがとうございます!
早速インストールさせていただきました
1画面でワクチン接種状況が見えて良いですね
記事へ
Yamadaさん、こんにちは。
日付を変換されている
に以下のようにtry-catch文を入れてはいかがでしょうか。
こうすれば、$zdh()関数にてエラーが発生すると、catch文のブロックが実行されarray変数に空文字が入り、処理が継続されます。もし、arrayにエラーメッセージを入れるのでしたら、catchの後ろに例外変数を入れ、そのNameプロパティを代入してください。