IRIS でのクラス定義の作成、ObjectScript でインスタンスの生成と永続化(保存)の方法について解説します。 もくじ 最初~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でご覧いただくと「もくじ」の秒数クリックでビデオをジャンプできます。 その他ビデオ一覧は[索引ページ](https://jp.community.intersystems.com/post/%E3%80%90%E3%81%AF%E3%81%98%E3%82%81%E3%81%A6%E3%81%AE-intersystems-iris%E3%80%91%E3%82%BB%E3%83%AB%E3%83%95%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E3%83%93%E3%83%87%E3%82%AA%E3%80%80%E7%B4%A2%E5%BC%95)をご参照ください。   クラス定義例

/// 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"
}

</div>

 

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

インスタンス生成(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)</div>

 

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)</div>

 

既存オブジェクトをオープンし(例では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

 

</body></html>