記事
· 2020年6月28日 3m read

【はじめての InterSystems IRIS】セルフラーニングビデオ:基本その3:IRIS でクラス定義を作ろう(オブジェクト操作の練習)

IRIS でのクラス定義の作成、ObjectScript でインスタンスの生成と永続化(保存)の方法について解説します。

https://www.youtube.com/embed/kWJCzn9bndQ
[これは埋め込みリンクですが、あなたはサイト上の埋め込みコンテンツへのアクセスに必要な Cookie を拒否しているため、それを直接表示することはできません。埋め込みコンテンツを表示するには、Cookie 設定ですべての Cookie を受け入れる必要があります。]

もくじ

最初~1:55 前回のビデオの学習

1:55~2:45 今回の説明内容解説

2:45~5:15 クラスの種類について

5:15~13:20 作成するクラスの説明、定義説明

13:20~18:44 スタジオでの作成実演

18:44~22:35 VS Codeでの作成実演

22:35~27:40 ObjectScriptでインスタンス生成

27:40~29:38 インスタンス生成~永続化の実演

29:38~34:54 データの確認

34:54~40:13 マルチモデル(永続クラス=テーブル)の確認

40:13~51:25 JSONとXMLアダプタの操作実演

51:25~57:36 クラスメソッドの定義と実行

57:36~最後まで まとめ

※ YouTubeでご覧いただくと「もくじ」の秒数クリックでビデオをジャンプできます。

その他ビデオ一覧は索引ページをご参照ください。

 

クラス定義例

/// Personクラス
Class Test.Person Extends %Persistent
{

/// 名前
Property Name As %Library.String;

/// メール
Property Email As %Library.String;

ClassMethod CreateEmail(account As %String) As %String
{
    if $get(account)=""{
        return ""
    }
    return account_"@mail.com"
}

 

インスタンス生成~保存までの実行例

インスタンス生成(Test.Personに継承された%New()メソッドを使用)

set person=##class(Test.Person).%New()

 

プロパティに値を割り当てる(文字列は二重引用符で括ります)

set person.Name=”テスト太郎”
set person.Email=”taro@mail.com

 

データベースに保存(Test.Personに継承された%Save()メソッドを使用)

set status=person.%Save()

 

保存が成功したかどうかの確認(成功すると 1を返し、失敗すると内部文字列を返します)

write status

 

保存失敗時のメッセージ確認(システムオブジェクトのStatusクラスを利用します)

write $system.Status.GetErrorText(status)

 

CreateEmail()の実行

戻り値がある場合

set modori=##class(Test.Person).CreateEmail("abc")

 

戻り値がない場合 

do modori=##class(Test.Person).CreateEmail("abc")

 

グローバル変数を直接操作する例

ID=1の Test.Person の名前(Name)とメール(Email)を出力

write $LIST(^Test.PersonD(1),2)
write $LIST(^Test.PersonD(1),3)

 

ID=1 の Test.Person の名前(Name)を更新

set $LIST(^Test.PersonD(1),2)="やまだたろう"

 

 JSONアダプタの利用例

Test.Person クラスのスーパークラスに %JSON.Adapter クラスを追加する例(追加後、コンパイルが必要です)

Class Test.Person Extends (%Persistent, %JSON.Adaptor)

 

JSONオブジェクトを作成し、JSON アダプタを利用して Test.Person の新規インスタンス生成する例

set json={} 
set json.Name="すずき",json.Email="suzuki@mail.com"
set p=##class(Test.Person).%New()
set st=p.%JSONImport(json)

 

既存オブジェクトをオープンし(例ではID=1をオープン)JSON文字列に変換

set p=##class(Test.Person).%OpenId(1)
set st=p.%JSONExportToString(.moji)
write moji

 

XMLアダプタの使用例

Test.Person クラスのスーパークラスに %XML.Adapter クラスを追加する例(追加後、コンパイルが必要です)

Class Test.Person Extends (%Persistent, %XML.Adaptor)

 

既存オブジェクトをオープンし(例ではID=1をオープン)XMLに変換

set p=##class(Test.Person).%OpenId(1)
set writer=##class(%XML.Writer).%New()
set writer.Indent=1
set st=writer.RootObject(p)
write st  // 1が返れば成功

 

出力された XML を任意のファイル名で保存し、名前やメールアドレスを編集し、今度は IRIS から XML を Read します。

set reader=##class(%XML.Reader).%New()
set file="c:\kit\sample.xml"
set st=reader.OpenFile(file)
write st   // 1が返れば成功

 

読み込んだ XML と Test.Person を関連付けて、Test.Person のインスタンスを生成する

do reader.Correlate("Person","Test.Person")
do reader.Next(.obj,.st)
zwrite obj
ディスカッション (0)1
続けるにはログインするか新規登録を行ってください