モデル・クラスの作成 : メソッド
次に、いくつかの %ZEN.DataModel.ObjectDataModelOpens in a new tab コールバック・メソッドを実装します。コントローラは、フォーム (ビュー) イベントに応答して、これらのサーバ側メソッドを実行します。
以下の 4 つのメソッドを ZenTutorial.ContactModel に追加します。
-
Method %OnOpenSource(pID As %String) As %RegisteredObject { Quit ##class(ZenTutorial.Contact).%OpenId(pID) }
dataController は、このメソッドを呼び出して既存のデータベース・オブジェクトを開きます。
-
Method %OnSaveSource(pSource As ZenTutorial.Contact) As %Status { Set tSC = pSource.%Save() Set ..%id = pSource.%Id() Quit tSC }
dataController は、データベース・オブジェクトを保存するときにこのメソッドを呼び出します。
-
Method %OnNewSource(Output pSC As %Status = {$$$OK}) As %RegisteredObject { Quit ##class(ZenTutorial.Contact).%New() }
dataController は、このメソッドを呼び出して新しいデータベース・オブジェクトを作成します。
-
ClassMethod %OnDeleteSource(pID As %String) As %Status { Quit ##class(ZenTutorial.Contact).%DeleteId(pID) }
dataController は、このメソッドを呼び出してデータベース・オブジェクトを削除します。
次に、以下のメソッドを ZenTutorial.ContactModel に追加します。このメソッドは、データベース・オブジェクト (ZenTutorial.Contact) からモデル・オブジェクト (ZenTutorial.ContactModel) にデータをロードします。
Method %OnLoadModel(pSource As ZenTutorial.Contact) As %Status
{
Set ..Name = pSource.Name
Set ..ContactType = pSource.ContactType
Set ..Street = pSource.Address1.Street
Set ..City = pSource.Address1.City
Set ..State = pSource.Address1.State
Set ..Zip = pSource.Address1.Zip
Quit $$$OK
}
最後に、以下のメソッドを ZenTutorial.ContactModel に追加します。このメソッドは、モデル・オブジェクト (ZenTutorial.ContactModel) からデータベース・オブジェクト (ZenTutorial.Contact) にデータを書き込み、データベース・オブジェクトを保存します。
Method %OnStoreModel(pSource As ZenTutorial.Contact) As %Status
{
Set pSource.Name = ..Name
Set pSource.ContactType = ..ContactType
Set pSource.Address1.Street = ..Street
Set pSource.Address1.City = ..City
Set pSource.Address1.State = ..State
Set pSource.Address1.Zip = ..Zip
Quit pSource.%Save()
}