Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

オブジェクトの接続

これで、新しい TicketItem オブジェクトを Show オブジェクトと TicketOrder に接続することができます(TicketItem を定義したとき、これらの参照を保持するために同じ名前 —Show および TicketOrder— を持つプロパティを作成しました)。

これらの接続を行うには、どのようにすればいいでしょうか。これらの接続を作成するには、オブジェクトをメモリに運んだ %New%OpenID メソッドで返される oref と同様に、プロパティを設定するだけです。

たった今生成した TicketItem オブジェクトに対する oref は既に既に持っていますが、Show オブジェクトに対する oref は持っていません。持っているものは、AddShow メソッドのパラメータとして渡された Show オブジェクトに対するオブジェクト ID です。この %OpenId メソッドのオブジェクト ID を使用して Show オブジェクトをオープンし、その oref を shw 変数に割り当てます。

 // Connect to a Show object
 Set shw = ##class(Cinema.Show).%OpenId(ShowID)
 Set itm.Show = shw
 // Connect to the Order object
 Set itm.TicketOrder = ord

後は、shw 変数と ord 変数で保持されている oref の値を、itm.Show プロパティと itm.TicketOrder プロパティに割り当てるだけです。

—Utils.AddShow—
Utils.AddShow
ClassMethod AddShow(ShowID As %String)
{
    // Get an order object
    If $data(%session.Data("Order")) {
        Set ord = ##class(Cinema.TicketOrder).%OpenId(%session.Data("Order"))
    }
    Else {
        Set ord=##class(Cinema.TicketOrder).%New()
        // ...
    }

    // Create a new TicketItem object
    Set itm = ##class(Cinema.TicketItem).%New()

    // Connect to a Show object
    Set shw = ##class(Cinema.Show).%OpenId(ShowID)
    Set itm.Show = shw
    // Connect to the Order object
    Set itm.TicketOrder = ord

    // ...
    // Save incomplete order and remember its Id in %session.
    Do ord.%Save()
    Set %session.Data("Order") = ord.%Id()
}
FeedbackOpens in a new tab