この章では、コンテキストおよびコンテキストの作成について説明します。この章の内容は次のとおりです。
コンテキストは、Oracle Identity Managerの操作が実行される環境です。たとえば、管理コンソールで行われるユーザー作成の操作は、Webコンテキストで実行されます。この操作が実行されるコンテキストまたは環境は、次のとおりです。
操作を実行するユーザー
ユーザー作成のリクエストを送信するコンピュータのIPアドレス
リクエストの送信日時
アプリケーション・サーバーへのアクセスに使用されるプロキシ
また、バルク・ロード・ユーティリティを実行してユーザーを作成する場合は、バルク・ロード・ユーティリティを起動したユーザー、操作を実行するコンピュータなどがコンテキストに含まれます。
コンテキストは、コンテキストの変数名および変数値を格納するメモリー・ベースのリポジトリのように機能します。操作に関連のある各機能要素は、コンテキストに変数を追加できます。コンテキストの値は、設定のみ可能であり、変更はできません。コンテキストの値は、操作に関連のあるコンポーネント間で情報をやりとりする手段として機能します。
コンテキストの値は、操作時に判断を行うために使用される場合があるため、コンテキスト・マネージャは、署名済(検証済)のコンテキストの値という概念をサポートします。つまり、デジタル証明書を使用して、コンテキストに設定するコンテキストの値に署名することができます。それ以降、コンテキスト・マネージャは、コンテキストに変数値をロードするたびにコンテキストの値の妥当性を検証します。この検証には、格納中または通信中に値が変更されたかどうか、およびシステムが署名者を信頼できるかどうかのチェックが含まれます。ただし、コンテキスト・マネージャは、署名者が特定の名前および値を設定できるかどうかの検証は行いません。このような検証を行う場合は、その名前および値を使用する機能コンポーネントが行う必要があります。
コンテキストの変数値は、必要な場合にのみ、メモリーにロードされます。これにより、パフォーマンスが向上します。コンテキストは、イベント・ハンドラにより要求される一般的な値のキャッシュとしても機能します。これにより、必要な値を毎回、リポジトリからフェッチする必要がなくなります。
各コンテキストはThreadLocal変数に配置されるため、アプリケーション・サーバーでは複数のスレッドが独自のアイデンティティ管理実行コンテキストを保持できます。
子コンテキストは、操作の進行中に開始されるサブコンテキストです。たとえば、ユーザー作成の操作に特定のイベント・ハンドラの実行が含まれる場合、そのイベント・ハンドラが実行される環境は、ユーザーが作成される環境の子です。これは、コンテキストのネストおよびコンテキストのスタックが可能であることを意味します。機能コンポーネントによって新規コンテキストが作成され、作成された新しいコンテキストを使用して追加の処理を開始できます。
コンテキスト・データは、データベースに格納されます。データの形式により、必要に応じてデータをレポート表に移動できるように、データベースでの抽出、変換およびロード(ETL)を実行できます。データの使用後、データはデータ・モデルによりアーカイブされます。
コンテキストは、単純な文字列型、整数型および日付型から複合型まで、様々な型の値を格納できます。複合型は、XML値またはバイナリ値として格納されます。バイナリ値はすばやく取得できますが、XML値はレポートにおいて高い有用性を提供します。コンテキストの値をリモート・サービスに転送する場合、またはBPELやその他のXML形式で使用する場合、次のスキーマを適用できます。
<?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.example.org/context/" targetNamespace="http://www.example.org/context/"> <complexType name="context-type"> <sequence> <element name="context-value" type="tns:context-value-type"> </element> <element name="parent-context" type="tns:context-type"></element> </sequence> </complexType> <complexType name="context-value-type"> <sequence> <element name="string-value" type="string"></element> <element name="numaric-value" type="int"></element> <element name="date-value" type="dateTime"></element> <element name="large-string-value" type="any"></element> <element name="binary-value" type="hexBinary"></element> </sequence> <attribute name="type" type="string"></attribute> <attribute name="class" type="string"></attribute> </complexType> </schema>
コンテキスト・マネージャは、Oracle Identity Managerの操作が実行される環境を作成します。この環境またはコンテキストをデータベースに保存することによって、非同期でのOracle Identity Manager操作の実行および監査が可能になります。
コンテキスト・マネージャでは、コンポーネント間の通信のために、変数、オブジェクトおよびランタイム情報をコンテキストに格納できます。このインテリジェントなコンテキスト・メカニズムは、広範囲にわたって影響をもたらします。コンテキスト・マネージャにより、特定の操作が実行される環境を保存する場所が作成されます。
次に、コンテキスト・マネージャの機能の概要を順を追って説明します。
新しいコンテキストを設定します。
スレッドからコンテキストをクリアします。
コンテキストに値を追加します。値を追加する際、値に署名するための証明書を割り当てます。
注意: 値をコンテキストに追加した後、その値を削除または変更することはできません。 |
コンテキストをデータベースに保存します。
データベースからコンテキストをロードします。
リモート・メソッドの呼出しの際にコンテキストを渡すことができるように、コンテキストをXMLにラップします。
リモートAPIで取得されたらXMLコンテキストをアンラップしてコンテキストを再設定します。