この特集のトップページへ
Chapter 5:ビジネスロジック層の構築

5.1.3 コンテキストの詳細
●オブジェクトコンテキストオブジェクト
 オブジェクトコンテキストオブジェクトは,その時点のCOMオブジェクトの状態を保持するオブジェクトである。オブジェクトコンテキストオブジェクトは,GetObjectContext関数(Visual Basicの場合)かCoGetObjectContext関数(Visual C++の場合)を呼び出すと取得できる。

 Visual Basicの場合,オブジェクトコンテキストオブジェクトはObjectContextオブジェクトとして参照できる。ObjectContextオブジェクトは,Table 5-2に示すプロパティとメソッドを備えている。Table 5-2を見るとわかるように,いくつかのメソッドは,SecurityCallContextオブジェクトと重複しており,重複している情報はObjectContextオブジェクトから取得してもSecurityCallContextオブジェクトから取得しても同じ値が得られる。一般的に,特殊なセキュリティ管理を実現したい場合以外は,ObjectContextオブジェクトから得られる情報で十分である。

 オブジェクトコンテキストオブジェクトは,トランザクションと密接な関係がある。トランザクションについては,「5.4 COM+のトランザクション機能」で説明する。

Table 5-2 ObjectContextオブジェクト
プロパティ
ContextInfo As ContextInfoContextInfoオブジェクトを得る(Table 5-3
Count As LongObjectContextオブジェクトが保持する付加情報の数を得る
Item(name As String)

ObjectContextオブジェクトが保持する付加情報を得る。引数nameに指定できる情報については,Table 5-1を参照のこと

Security As SecurityProperty SecurityPropertyオブジェクトを得る(Table 5-4)。ただし,COM+アプリケーションのプロパティにおける[セキュリティ]ページで[プロセスレベルでのみアクセスチェックを実行する]を選択した場合には,常にNothingが格納される
メソッド
CreateInstance(bstrProgID As String) 同じコンテキストのもとで動作するCOMコンポーネントを実体化する。MTSとの互換性を維持するためにのみ使われる。COM+ではNewキーワードやCreateObject関数によってCOMコンポーネントを実体化するので,CreateInstanceメソッドは使わない
DisableCommit() トランザクションのコミットを不許可にする
EnableCommit() トランザクションのコミットを許可にする
IsCallerInRole(bstrRole As String) As Boolean メソッドを直接呼び出したユーザーもしくはプロパティを直接参照したユーザーがbstrRoleというロールに属しているかどうかを調べる。属していればTrue,そうでなければFalseが戻る。なお,セキュリティ設定が無効である場合(IsSecurityEnabledメソッドがFalseを返す場合)には,常にTrueを返すので注意すること
IsInTransaction() As Boolean トランザクション機能が有効であるかどうかを調べる。有効であればTrueが,そうでなければFalseが戻る
IsSecuriryEnabled() As Boolean セキュリティ設定が有効かどうかを調べる。Fig.4-26において,[このアプリケーションへのアクセスチェックを行う]にチェックが付いていればTrueが,そうでなければFalseが戻る
SetAbort() トランザクションをアボート(中止)する
SetComplete()

トランザクションをコミット(成功)する

Table 5-3 ContextInfoオブジェクト
メソッド
GetActivityId() As String アクティビティのIDを得る
GetContextId() As String コンテキストのIDを得る
GetTransaction() As Unknown トランザクションオブジェクトを得る
GetTransactionId() As String トランザクションのIDを得る
IsInTransaction() As Boolean トランザクション機能が有効であるかどうかを調べる。有効であればTrueが,そうでなければFalseが戻る
Table 5-4 SecurityPropertyオブジェクト
メソッド
GetDirectCallerName() As String メソッドを直接呼び出したユーザーもしくはプロパティを直接参照したユーザーの名前(実ユーザー名)を得る
GetDirectCreaterName() As String 直接このCOMオブジェクトを実体化したユーザーの名前(実ユーザー名)を得る
GetOriginalCallerName() As String COM+の管理下にある最初のCOMオブジェクト(COM+の管理外から呼び出されたCOMオブジェクト。「5.4 COM+のトランザクション機能」で説明するルートオブジェクト)を実体化したユーザーの名前(COMクライアント側の実ユーザー名)を得る
GetOriginalCreaterName() As String COM+の管理下にある最初のCOMオブジェクト(COM+の管理外から呼び出されたCOMオブジェクト。「5.4 COM+のトランザクション機能」で説明するルートオブジェクト)を呼び出したユーザーの名前(COMクライアント側の実ユーザー名)を得る
prevpg.gif Chapter 5-1 6/23 nextpg.gif