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?

中断された注文の処理

ユーザが注文を中断すると、ユーザのブラウザは Caché への要求の送信を停止します。要求の間に若干の時間が経過すると、セッションが "タイムアウト" します。つまり、システムは自動的にセッションを終了します。セッションが終了した後、"削除する" メソッドを提供する必要があります。これを行うために、2 つのタスクを実行する必要があります。それは、Caché が削除メソッドを見つけることができる場所を指定し、メソッドを提供することです。

%session オブジェクトの EventClass プロパティの値を指定する AddShow メソッドに 1 行のコードを追加することにより、最初のタスクを実行します。一般に、EventClass プロパティの値は、%session に関連するイベント (例えばタイムアウト) が発生したときに実行する必要があるメソッドを見つける場所を Caché に通知します。

—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()

        // Set up a event class
        Set %session.EventClass = "Cinema.Utils"
    }

    // ...
    Quit
}

セッションが終了するとき (この場合、タイムアウトにより)、Caché は some クラスの OnEndSession メソッドを呼び出します。Which クラスは、“Cinema.Utils” に設定した EventClass プロパティによって決定されます。ユーザが AddShow を初めて実行するときにこの Else ブロックが実行されるので、EventClass プロパティの値をここで設定している点に注意してください。つまり、ユーザが初めて注文作成プロセスを開始するときに、Else ブロックが実行されます。

最後のタスクは、OnEndSession メソッドを Utils クラスへ追加することです。

FeedbackOpens in a new tab