中断された注文の処理
ユーザが注文を中断すると、ユーザのブラウザは Caché への要求の送信を停止します。要求の間に若干の時間が経過すると、セッションが "タイムアウト" します。つまり、システムは自動的にセッションを終了します。セッションが終了した後、"削除する" メソッドを提供する必要があります。これを行うために、2 つのタスクを実行する必要があります。それは、Caché が削除メソッドを見つけることができる場所を指定し、メソッドを提供することです。
%session オブジェクトの EventClass プロパティの値を指定する AddShow メソッドに 1 行のコードを追加することにより、最初のタスクを実行します。一般に、EventClass プロパティの値は、%session に関連するイベント (例えばタイムアウト) が発生したときに実行する必要があるメソッドを見つける場所を Caché に通知します。
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 クラスへ追加することです。