Oracle Fusion Middleware Oracle Identity Managementアプリケーション開発者ガイド 11gリリース1(11.1.1) B56242-01 |
|
戻る |
次へ |
この章では、Oracle Directory Provisioning Integration Serviceの登録APIについて説明します。この章では、次の項目について説明します。
リリース9.0.2では、デフォルトのインタフェースはバージョン1.1でした。リリース9.0.4および10.1.2.0.0では、デフォルトのインタフェースはバージョン2.0です。リリース10.1.2.0.1では、さらに第3のバージョンが追加されました。管理者は、これらのいずれかのバージョンを使用できます。
この機能は、発信イベントでのみ使用可能です。プロビジョニング統合サービスがOracle Internet Directoryでの変更を解析し、アプリケーションに対して適切なイベントが生成および伝播されるかどうかを判断できるように、実行時に新しいイベントを定義できます。次に示すイベントは、インストール時に構成のみが行われるイベントです。
イベント定義(エントリ)は、次の属性で構成されます。
イベント・オブジェクト型(orclODIPProvEventObjectType
): これはイベントが関連付けられているオブジェクトの型を指定します。オブジェクトは、たとえばUSER
、GROUP
、IDENTITY
などになります。
LDAP変更型(orclODIPProvEventChangeType
): これは、すべてのLDAP操作でこの型のオブジェクトに対してイベントを生成できることを示します。(ADD
、MODIFY
、DELETE
など)
イベント基準(orclODIPProvEventCriteria
): 特定のオブジェクト型になるLDAPエントリを指定する追加の選択基準です。たとえば、Objectclass=orclUserV2
の場合、この基準を満たすLDAPエントリはこのオブジェクト型として識別され、このエントリを変更すると適切なイベントが生成されます。
これらの属性を保持するオブジェクト・クラスは、orclODIPProvEventTypeConfig
です。すべてのイベント型構成を格納するために、コンテナcn=ProvisioningEventTypeConfig,cn=odi,cn=oracle internet directory
が使用されます。
表13-1に、インストールの一部として事前定義されるイベント定義をリストします。
表13-1 事前定義済のイベント定義
イベント・オブジェクト型 | LDAP変更型 | イベント基準 |
---|---|---|
ENTRY |
ADD MODIFY DELETE |
objectclass=* |
USER |
ADD MODIFY DELETE |
objectclass=interorgperson objectclass=orcluserv2 |
IDENTITY |
ADD MODIFY DELETE |
objectclass=interorgperson objectclass=orcluserv2 |
GROUP |
ADD MODIFY DELETE |
objectclass=orclgroup objectclass=groupofuniquenames |
SUBSCRPTION |
ADD MODIFY DELETE |
objectclass=orclservicerecepient |
SUBSCRIBER |
ADD MODIFY DELETE |
objectclass=orclsubscriber |
すべてのイベント定義構成を格納するために、コンテナcn=ProvisioningEventTypeConfig,cn=odi,cn=oracle internet directory
が使用されます。事前定義されたイベント定義のLDAP構成は次のとおりです。
dn: orclODIPProvEventObjectType=ENTRY,cn=ProvisioningEventTypeConfig,cn=odi, cn=oracle internet directory orclODIPProvEventObjectType: ENTRY orclODIPProvEventLDAPChangeType: Add orclODIPProvEventLDAPChangeType: Modify orclODIPProvEventLDAPChangeType: Delete orclODIPProvEventCriteria: objectclass=* objectclass: orclODIPProvEventTypeConfig dn: orclODIPProvEventObjectType=USER,cn=ProvisioningEventTypeConfig,cn=odi,cn=oracle internet directory orclODIPProvEventObjectType: USER orclODIPProvEventLDAPChangeType: Add orclODIPProvEventLDAPChangeType: Modify orclODIPProvEventLDAPChangeType: Delete orclODIPProvEventCriteria: objectclass=InetOrgPerson orclODIPProvEventCriteria: objectclass=orcluserv2 objectclass: orclODIPProvEventTypeConfig dn: orclODIPProvEventObjectType=IDENTITY,cn=ProvisioningEventTypeConfig,cn=odi, cn=oracle internet directory orclODIPProvEventObjectType: IDENTITY orclODIPProvEventLDAPChangeType: Add orclODIPProvEventLDAPChangeType: Modify orclODIPProvEventLDAPChangeType: Delete orclODIPProvEventCriteria: objectclass=inetorgperson orclODIPProvEventCriteria: objectclass=orcluserv2 objectclass: orclODIPProvEventTypeConfig dn: orclODIPProvEventObjectType=GROUP,cn=ProvisioningEventTypeConfig,cn=odi, cn=oracle internet directory orclODIPProvEventObjectType: GROUP orclODIPProvEventLDAPChangeType: Add orclODIPProvEventLDAPChangeType: Modify orclODIPProvEventLDAPChangeType: Delete orclODIPProvEventCriteria: objectclass=orclgroup orclODIPProvEventCriteria: objectclass=groupofuniquenames objectclass: orclODIPProvEventTypeConfig dn: orclODIPProvEventObjectType=SUBSCRIPTION,cn=ProvisioningEventTypeConfig,cn=odi, cn=oracle internet directory orclODIPProvEventObjectType: SUBSCRIPTION orclODIPProvEventLDAPChangeType: Add orclODIPProvEventLDAPChangeType: Modify orclODIPProvEventLDAPChangeType: Delete orclODIPProvEventCriteria: objectclass=orclservicerecepient objectclass: orclODIPProvEventTypeConfig dn: orclODIPProvEventObjectType=SUBSCRIBER,cn=ProvisioningEventTypeConfig,cn=odi, cn=oracle internet directory orclODIPProvEventObjectType: SUBSCRIBER orclODIPProvEventLDAPChangeType: Add orclODIPProvEventLDAPChangeType: Modify orclODIPProvEventLDAPChangeType: Delete orclODIPProvEventCriteria: objectclass=orclsubscriber objectclass: orclODIPProvEventTypeConfig
オブジェクト型XYZ(オブジェクト・クラスobjXYZ
で修飾)の新しいイベントを定義するには、Oracle Internet Directoryに次のエントリを作成します。DIPサーバーはこの新しいイベント定義を認識し、このイベントにサブスクライブするアプリケーションに対し、必要に応じてイベントを伝播します。
dn: orclODIPProvEventObjectType=XYZ,cn=ProvisioningEventTypeConfig,cn=odi, cn=oracle internet directory orclODIPProvEventObjectType: XYZ orclODIPProvEventLDAPChangeType: Add orclODIPProvEventLDAPChangeType: Modify orclODIPProvEventLDAPChangeType: Delete orclODIPProvEventCriteria: objectclass=objXYZ objectclass: orclODIPProvEventTypeConfig
これは、オブジェクト・クラスobjXYZ
を持つLDAPエントリが追加、変更または削除された場合、DIPによってXYZ_ADD
、XYZ_MODIFY
またはXYZ_DELETE
イベントが関連するアプリケーションに伝播されることを意味します。
アプリケーションは、イベントのサプライヤおよびコンシューマとして登録できます。プロビジョニング・サブスクリプション・プロファイルは、表13-2に示す属性を持ちます。
表13-2 プロビジョニング・サブスクリプション・プロファイルの属性
属性 | 説明 |
---|---|
EventSubscriptions |
発信イベントのみ(複数の値を取ります)。 DIPがこのアプリケーションに通知を送信する必要があるイベントです。この文字列の形式は、 この文字列を異なる値で複数回リストすると、複数の値を指定できます。パラメータを指定しない場合は、デフォルトの |
MappingRules |
着信イベントのみ(複数の値を取ります)。 アプリケーションおよび修飾フィルタ条件から取得したオブジェクトの型をマップし、このイベントの対象のドメインを判断します。マッピングの形式は次のとおりです。 OBJECT_TYPE: Filter_condition: domain_of_interest 複数の値を指定できます。マッピング |
permittedOperations |
着信イベントのみ(複数の値を取ります)。 アプリケーションがプロビジョニング統合サービスに送信する権限を持つイベントの型を定義します。マッピングの形式は次のとおりです。 Event_Object: affected_domain:operation(attributes, . . . ) マッピング |
バージョン3.0のPL/SQLインタフェースを使用する前に、次の関連資料を参照してください。
『Oracle Fusion Middleware Oracle Identity Management統合ガイド』の章「プロビジョニング用のOracle Directory Integration Platformの概要」を参照してください。
『Oracle Fusion Middleware Oracle Identity Management統合ガイド』の章「プロビジョニング統合アプリケーションのデプロイ」を参照してください。
PL/SQLコールバック・インタフェースを使用するには、Oracle Directory Provisioning Integration Serviceがアプリケーション固有のデータベースで起動するPL/SQLパッケージを開発する必要があります。パッケージには任意の名前を選択できますが、サブスクリプション時にパッケージを登録する際は、必ず同じ名前を使用してください。次のPL/SQLパッケージ仕様を使用してパッケージを実装します。
DROP TYPE LDAP_EVENT_LIST_V3; DROP TYPE LDAP_EVENT_V3; DROP TYPE LDAP_EVENT_STATUS_LIST_V3; DROP TYPE LDAP_ATTR_LIST_V3; DROP TYPE LDAP_ATTR_V3; DROP TYPE LDAP_ATTR_VALUE_LIST_V3; DROP TYPE LDAP_ATTR_VALUE_V3;
-------------------------------------------------------------------------------------------------- -- Name: LDAP_ATTR_VALUE_V3 -- Data Type: OBJECT -- DESCRIPTION: This structure contains values of an attribute. A list of one or more of this object is passed in any event. --------------------------------------------------------------------------------------------------- CREATE TYPE LDAP_ATTR_VALUES_V3 AS OBJECT ( attr_value VARCHAR2(4000), attr_bvalue RAW(2048), attr_value_len INTEGER ); GRANT EXECUTE ON LDAP_ATTR_VALUE_V3 to public; CREATE TYPE LDAP_ATTR_VALUE_LIST_V3 AS TABLE OF LDAP_ATTR_VALUE_V3; / GRANT EXECUTE ON LDAP_ATTR_VALUE_LIST_V3 to public;
-------------------------------------------------------------------------------------------------- -- Name: LDAP_ATTR_V3 -- Data Type: OBJECT -- DESCRIPTION: This structure contains details regarding an attribute. A list of one or more of this object is passed in any event. --------------------------------------------------------------------------------------------------- CREATE TYPE LDAP_ATTR_V3 AS OBJECT ( attr_name VARCHAR2(256), attr_type INTEGER , attr_mod_op INTEGER, attr_values LDAP_ATTR_VALUE_LIST_V3 ); GRANT EXECUTE ON LDAP_ATTR_V3 to public; CREATE TYPE LDAP_ATTR_LIST_V3 AS TABLE OF LDAP_ATTR_V3; / GRANT EXECUTE ON LDAP_ATTR_LIST_V3 to public;
--------------------------------------------------------------------------------------------------- -- Name: LDAP_EVENT_V3 -- Data Type: OBJECT -- DESCRIPTION: This structure contains event information plus the attribute List. --------------------------------------------------------------------------------------------------- CREATE TYPE LDAP_EVENT_V3 AS OBJECT ( event_type VARCHAR2(32), event_id VARCHAR2(32), event_src VARCHAR2(1024), event_time VARCHAR2(32), object_name VARCHAR2(1024), object_type VARCHAR2(32), object_guid VARCHAR2(32), object_dn VARCHAR2(1024), profile_id VARCHAR2(1024), attr_list LDAP_ATTR_LIST_V3 ) ; / GRANT EXECUTE ON LDAP_EVENT_V3 to public; CREATE TYPE LDAP_EVENT_LIST_V3 AS TABLE OF LDAP_EVENT_V3; / GRANT EXECUTE ON LDAP_EVENT_LIST_V3 to public;
--------------------------------------------------------------------------------------------------- -- Name: LDAP_EVENT_STATUS_V3 -- Data Type: OBJECT -- DESCRIPTION: This structure contains information that is sent by the consumer of an event to the supplier in response to the actual event. --------------------------------------------------------------------------------------------------- CREATE TYPE LDAP_EVENT_STATUS_V3 AS OBJECT ( event_id VARCHAR2(32), status VARCHAR2(32), status_msg VARCHAR2(2048), object_guid VARCHAR(32) ) ; / GRANT EXECUTE ON LDAP_EVENT_STATUS_V3 to public; CREATE TYPE LDAP_EVENT_STATUS_LIST_V3 AS TABLE OF LDAP_EVENT_STATUS_V3; / GRANT EXECUTE ON LDAP_EVENT_STATUS_LIST_V3 to public;
--------------------------------------------------------------------------------------------------- -- Name: LDAP_NTFY -- DESCRIPTION: This is the interface to be implemented by provisioning integrated applications to send information to and receive information from the directory. The name of the package can be customized as needed. The function and procedure names within this package should not be changed. --------------------------------------------------------------------------------------------------- CREATE OR REPLACE PACKAGE LDAP_NTFY AS -- The Predefined Event Types ENTRY_ADD CONSTANT VARCHAR2 (32) :='ENTRY_ADD'; ENTRY_DELETE CONSTANT VARCHAR2 (32) :='ENTRY_DELETE'; ENTRY_MODIFY CONSTANT VARCHAR2 (32) :='ENTRY_MODIFY'; USER_ADD CONSTANT VARCHAR2 (32) :='USER_ADD'; USER_DELETE CONSTANT VARCHAR2 (32) :='USER_DELETE'; USER_MODIFY CONSTANT VARCHAR2 (32) :='USER_MODIFY'; IDENTITY_ADD CONSTANT VARCHAR2 (32) :='IDENTITY_ADD'; IDENTITY_DELETE CONSTANT VARCHAR2 (32) :='IDENTITY_DELETE'; IDENTITY_MODIFY CONSTANT VARCHAR2 (32) :='IDENTITY_MODIFY'; GROUP_ADD CONSTANT VARCHAR2 (32) :='GROUP_ADD'; GROUP_DELETE CONSTANT VARCHAR2 (32) :='GROUP_DELETE'; GROUP_MODIFY CONSTANT VARCHAR2 (32) :='GROUP_MODIFY'; SUBSCRIPTION_ADD CONSTANT VARCHAR2(32) :='SUBSCRIPTION_ADD'; SUBSCRIPTION_DELETE CONSTANT VARCHAR2(32) :='SUBSCRIPTION_DELETE'; SUBSCRIPTION_MODI CONSTANT VARCHAR2(32) :='SUBSCRIPTION_MODIFY'; SUBSCRIBER_ADD CONSTANT VARCHAR2(32) :='SUBSCRIBER_ADD'; SUBSCRIBER_DELETE CONSTANT VARCHAR2(32) :='SUBSCRIBER_DELETE'; SUBSCRIBER_MODIFY CONSTANT VARCHAR2(32) :='SUBSCRIBER_MODIFY'; -- The Attribute Type ATTR_TYPE_STRING CONSTANT NUMBER := 0; ATTR_TYPE_BINARY CONSTANT NUMBER := 1; ATTR_TYPE_ENCRYPTED_STRING CONSTANT NUMBER := 2; -- The Attribute Modification Type MOD_ADD CONSTANT NUMBER := 0; MOD_DELETE CONSTANT NUMBER := 1; MOD_REPLACE CONSTANT NUMBER := 2; -- The Event dispostions constants EVENT_SUCCESS CONSTANT VARCHAR2(32) :='EVENT_SUCCESS'; EVENT_IN_PROGRESS CONSTANT VARCHAR2(32) :='EVENT_IN_PROGRESS'; EVENT_USER_NOT_REQUIRED CONSTANT VARCHAR2(32) :='EVENT_USER_NOT_REQUIRED'; EVENT_ERROR CONSTANT VARCHAR2(32) :='EVENT_ERROR'; EVENT_ERROR_ALERT CONSTANT VARCHAR2(32) :='EVENT_ERROR_ALERT'; EVENT_ERROR_ABORT CONSTANT VARCHAR2(32) :='EVENT_ERROR_ABORT'; -- The Actual Callbacks FUNCTION GetAppEvents (events OUT LDAP_EVENT_LIST_V3) RETURN NUMBER; -- Return CONSTANTS EVENT_FOUND CONSTANT NUMBER:= 0; EVENT_NOT_FOUND CONSTANT NUMBER:= 1403;
着信イベントを処理できない場合、プロビジョニング・サーバーはEVENT_ERROR_ALERT
ステータスを戻し、その結果Oracle Enterprise Managerにトリガーが生成されます。
イベントを処理できるが、そのイベントが処理できないイベントである(たとえば、変更、サブスクライブまたは削除の対象となるユーザーが存在しない)場合、プロビジョニング・サーバーはEVENT_ERROR
を戻し、不具合があることをアプリケーションに示します。ステータス・イベントは、再度アプリケーションによって処理されます。
EVENT_ERROR
は、ディレクトリ操作ではエラーがなかったことを意味します。その他の理由により、イベントは処理されませんでした。
-- PutAppEventStatus() : DIP Server invokes this callback in the remote Data base after processing an event it had received using the GetAppEvents() callback. For every event received, the DIP server sends the status event back after processing the event. This API will NOT be required by the Oracle Collaboration Suite release 3.0 components. PROCEDURE PutAppEventStatus (event_status IN LDAP_EVENT_STATUS_LIST_V3); -- PutOIDEvents() : DIP Server invokes this API in the remote Database. DIP server sends event to applications using this callback. It also expects a status event object in response as an OUT parameter. This API needs to be implemented by all the Oracle Collaboration Suite release 3.0 components. PROCEDURE PutOIDEvents (event IN LDAP_EVENT_LIST_V3, event_status OUT LDAP_EVENT_STATUS_LIST_V3); END LDAP_NTFY; /
PL/SQLコールバック・インタフェースを使用するには、プロビジョニング統合サービスがアプリケーション固有のデータベースで起動するPL/SQLパッケージを開発する必要があります。パッケージには任意の名前を選択できますが、サブスクリプション時にパッケージを登録する際は、必ず同じ名前を使用してください。次のPL/SQLパッケージ仕様を使用してパッケージを実装します。
DROP TYPE LDAP_EVENT; DROP TYPE LDAP_EVENT_STATUS; DROP TYPE LDAP_ATTR_LIST; DROP TYPE LDAP_ATTR; -------------------------------------------------------------------------------- -- Name: LDAP_ATTR -- Data Type: OBJECT DESCRIPTION: This structure contains details regarding an attribute. A list of one -- or more of this object is passed in any event. --------------------------------------------------------------------------------------------------- CREATE TYPE LDAP_ATTR AS OBJECT ( attr_name VARCHAR2(256), attr_value VARCHAR2(4000), attr_bvalue RAW(2048), attr_value_len INTEGER, attr_type INTEGER , attr_mod_op INTEGER ); GRANT EXECUTE ON LDAP_ATTR to public; CREATE TYPE LDAP_ATTR_LIST AS TABLE OF LDAP_ATTR; / GRANT EXECUTE ON LDAP_ATTR_LIST to public; --------------------------------------------------------------------------------------------------- -- Name: LDAP_EVENT -- Data Type: OBJECT -- DESCRIPTION: This structure contains event information plus the attribute -- list. --------------------------------------------------------------------------------------------------- CREATE TYPE LDAP_EVENT AS OBJECT ( event_type VARCHAR2(32), event_id VARCHAR2(32), event_src VARCHAR2(1024), event_time VARCHAR2(32), object_name VARCHAR2(1024), object_type VARCHAR2(32), object_guid VARCHAR2(32), object_dn VARCHAR2(1024), profile_id VARCHAR2(1024), attr_list LDAP_ATTR_LIST ) ; / GRANT EXECUTE ON LDAP_EVENT to public; --------------------------------------------------------------------------------------------------- -- Name: LDAP_EVENT_STATUS -- Data Type: OBJECT -- DESCRIPTION: This structure contains information that is sent by the -- consumer of an event to the supplier in response to the -- actual event. --------------------------------------------------------------------------------------------------- CREATE TYPE LDAP_EVENT_STATUS AS OBJECT ( event_id VARCHAR2(32), orclguid VARCHAR(32), error_code INTEGER, error_String VARCHAR2(1024), error_disposition VARCHAR2(32)) ; / GRANT EXECUTE ON LDAP_EVENT_STATUS to public;
プロビジョニング統合サービスによって生成されたイベントをコンシュームするためのロジックを開発する必要があります。アプリケーションとプロビジョニング統合サービス間のインタフェースは、表ベースまたはPL/SQLコールバックを使用したものになります。
PL/SQLコールバック・インタフェースを使用するには、プロビジョニング統合サービスがアプリケーション固有のデータベースで起動するPL/SQLパッケージを開発する必要があります。パッケージには任意の名前を選択できますが、サブスクリプション時にパッケージを登録する際は、必ず同じ名前を使用してください。次のPL/SQLパッケージ仕様を使用してパッケージを実装します。
Rem Rem NAME Rem ldap_ntfy.pks - Provisioning Notification Package Specification. Rem DROP TYPE LDAP_ATTR_LIST; DROP TYPE LDAP_ATTR; -- LDAP ATTR ---------------------------------------------------------------- -- -- Name : LDAP_ATTR -- Data Type : OBJECT -- DESCRIPTION : This structure contains details regarding -- an attribute. -- ---------------------------------------------------------------- CREATE TYPE LDAP_ATTR AS OBJECT ( attr_name VARCHAR2(255), attr_value VARCHAR2(2048), attr_bvalue RAW(2048), attr_value_len INTEGER, attr_type INTEGER -- (0 - String, 1 - Binary) attr_mod_op INTEGER ); / GRANT EXECUTE ON LDAP_ATTR to public; ------------------------------------------------------------- -- -- Name : LDAP_ATTR_LIST -- Data Type : COLLECTION -- DESCRIPTION : This structure contains collection -- of attributes. -- ------------------------------------------------------------- CREATE TYPE LDAP_ATTR_LIST AS TABLE OF LDAP_ATTR; / GRANT EXECUTE ON LDAP_ATTR_LIST to public; ------------------------------------------------------------------------------- -- -- NAME : LDAP_NTFY -- DESCRIPTION : This is a notifier interface implemented by Provisioning System -- clients to receive information about changes in Oracle Internet -- Directory. The name of package can be customized as needed. -- The function names within this package should not be changed. -- -- ------------------------------------------------------------------------------- CREATE OR REPLACE PACKAGE LDAP_NTFY AS -- -- LDAP_NTFY data type definitions -- -- Event Types USER_DELETE CONSTANT VARCHAR2(256) := 'USER_DELETE'; USER_MODIFY CONSTANT VARCHAR2(256) := 'USER_MODIFY'; GROUP_DELETE CONSTANT VARCHAR2(256) := 'GROUP_DELETE'; GROUP_MODIFY CONSTANT VARCHAR2(256) := 'GROUP_MODIFY'; -- Return Codes (Boolean) SUCCESS CONSTANT NUMBER := 1; FAILURE CONSTANT NUMBER := 0; -- Values for attr_mod_op in LDAP_ATTR object. MOD_ADD CONSTANT NUMBER := 0; MOD_DELETE CONSTANT NUMBER := 1; MOD_REPLACE CONSTANT NUMBER := 2; --------------------------------------------------------------------------------------------------- -- Name: LDAP_NTFY -- DESCRIPTION: This is the interface to be implemented by Provisioning System -- clients to send information to and receive information from -- Oracle Internet Directory. The name of the package can be -- customized as needed. The function names within this package -- should not be changed. --------------------------------------------------------------------------------------------------- CREATE OR REPLACE PACKAGE LDAP_NTFY AS
ENTRY_ADD CONSTANT VARCHAR2 (32) := 'ENTRY_ADD'; ENTRY_DELETE CONSTANT VARCHAR2 (32) := 'ENTRY_DELETE'; ENTRY_MODIFY CONSTANT VARCHAR2 (32) := 'ENTRY_MODIFY'; USER_ADD CONSTANT VARCHAR2 (32) := 'USER_ADD'; USER_DELETE CONSTANT VARCHAR2 (32) := 'USER_DELETE'; USER_MODIFY CONSTANT VARCHAR2(32) := 'USER_MODIFY'; IDENTITY_ADD CONSTANT VARCHAR2 (32) := 'IDENTITY_ADD'; IDENTITY_DELETE CONSTANT VARCHAR2 (32) := 'IDENTITY_DELETE'; IDENTITY_MODIFY CONSTANT VARCHAR2 (32) := 'IDENTITY_MODIFY'; GROUP_ADD CONSTANT VARCHAR2 (32) := 'GROUP_ADD'; GROUP_DELETE CONSTANT VARCHAR2 (32) := 'GROUP_DELETE'; GROUP_MODIFY CONSTANT VARCHAR2 (32) := 'GROUP_MODIFY'; SUBSCRIPTION_ADD CONSTANT VARCHAR2(32) := 'SUBSCRIPTION_ADD'; SUBSCRIPTION_DELETE CONSTANT VARCHAR2(32) := 'SUBSCRIPTION_DELETE'; SUBSCRIPTION_MODI CONSTANT VARCHAR2(32) := 'SUBSCRIPTION_MODIFY'; SUBSCRIBER_ADD CONSTANT VARCHAR2(32) := 'SUBSCRIBER_ADD'; SUBSCRIBER_DELETE CONSTANT VARCHAR2(32) := 'SUBSCRIBER_DELETE'; SUBSCRIBER_MODIFY CONSTANT VARCHAR2(32) := 'SUBSCRIBER_MODIFY';
ATTR_TYPE_STRING CONSTANT NUMBER := 0; ATTR_TYPE_BINARY CONSTANT NUMBER := 1; ATTR_TYPE_ENCRYPTED_STRING CONSTANT NUMBER := 2;
MOD_ADD CONSTANT NUMBER := 0; MOD_DELETE CONSTANT NUMBER := 1; MOD_REPLACE CONSTANT NUMBER := 2;
EVENT_SUCCESS CONSTANT VARCHAR2(32) := 'EVENT_SUCCESS'; EVENT_ERROR CONSTANT VARCHAR2(32) := 'EVENT_ERROR'; EVENT_RESEND CONSTANT VARCHAR2(32) := 'EVENT_RESEND';
コールバックとは、通知イベントを送受信するために、プロビジョニング統合サービスによって起動されるファンクションです。オブジェクトのイベントを転送する際は、関連する属性が他の詳細とともに転送されます。属性は、属性コンテナのコレクション(配列)として、正規化されていないフォーマットで送信されます。つまり、属性に2つの値がある場合は、コレクションに2つの行がある状態で送信されます。
Oracle Directory Integration and Provisioningサーバーは、リモート・データベースでこのAPIを起動します。イベントに応答するのはアプリケーションです。Oracle Directory Integration and Provisioningはイベントを処理し、PutAppEventStatus()
コールバックを使用して、ステータスを戻します。GetAppEvent()
の戻り値は、イベントが戻されたかどうかを示します。
FUNCTION GetAppEvent (event OUT LDAP_EVENT) RETURN NUMBER; -- Return CONSTANTS EVENT_FOUND CONSTANT NUMBER := 0; EVENT_NOT_FOUND CONSTANT NUMBER := 1403;
イベントを処理できない(LDAPエラーが発生した)場合、プロビジョニング・サーバーはEVENT_RESEND
を戻します。GetAppEvent()
が再度起動されたときに、アプリケーションはそのイベントを再送する必要があります。
イベントを処理できるが、そのイベントが処理できないイベントである(たとえば、変更、サブスクライブまたは削除の対象となるユーザーが存在しない)場合、プロビジョニング・サーバーはEVENT_ERROR
を戻し、不具合があることをアプリケーションに示します。イベントの再送は不要です。このイベントはアプリケーションによって処理されます。
前述のEVENT_RESEND
とEVENT_ERROR
の違いに注意してください。EVENT_RESEND
の場合、イベントを適用することはできたがサーバーではできなかったことを意味します。そのため、再度イベントを取得すると正常に処理されます。
EVENT_ERROR
は、ディレクトリ操作の実行中にはエラーはなかったが、その他の理由でイベントが処理されなかったことを意味します。
Oracle Directory Integration and Provisioningサーバーは、GetAppEvent()
コールバックを使用して受信したイベントを処理した後、リモート・データベースでこのコールバックを起動します。受信した各イベントについて、Oracle Directory Integration and Provisioningサーバーはイベントを処理した後、イベントのステータスを戻します。
PROCEDURE PutAppEventStatus (event_status IN LDAP_EVENT_STATUS);
Oracle Directory Integration and Provisioningサーバーは、リモート・データベースでこのAPIを起動します。Oracle Directory Integration Serverはこのコールバックを使用して、アプリケーションにイベントを送信します。また、OUT
パラメータとして、イベント・ステータス・オブジェクトが戻されることを想定します。有効なイベント・ステータス・オブジェクトが戻されない場合、またはRESEND
の場合、Oracle Directory Integration and Provisioningサーバーはイベントを再送します。EVENT_ERROR
の場合、サーバーはイベントを再送しません。
PROCEDURE PutOIDEvent
(event IN LDAP_EVENT, event_status OUT LDAP_EVENT_STATUS);
END LDAP_NTFY;
/