Skip navigation links


com.thortech.xl.gc.spi
Interface ReconTransportProvider


public interface ReconTransportProvider

This interface should be implemented by a layer that incorporates reconciliation functionalities with a particular type of target application, to be used by a connector created through the generic technology connector. The implementation layer should mainly deal with data transport aspect of reconciliation. It would involve extraction of data from a target application that might be structured in a form which is specific to the target schema and transfer it to Oracle Identity Manager server from the target system. Implementation should provide facilities for not only extracting data but also detecting metadata of the target accounts. Examples of the implementation for this layer would be File Transport Provider, Web Services Provider and JMS Provider. The output of this layer needs to be passed to the corresponding implementation of the ReconFormatProvider interface, which would then parse the extracted data/metadata.

All the methods of this interface throw ProviderException. The implementations of this interface should utilize this fact to wrap all possible exceptions ultimately in an instance of a ProviderException. Rich provider implementation layers are expected to be modular with the main implementation methods calling a number of methods, which would internally be invoking more internal layers of business logic. In such a case it is recommended that you wrap all the possible Exceptions from all internal layers in instances of ReconciliationTransportException. The main methods of the implementation (which are actually the ones defined in this interface) would then just have the try-catch blocks with catch portion for only ReconciliationTransportException and this Exception instance could then be wrapped in a ProviderException. One important point to consider is that in most of the cases, ReconTransportProvider is expected to be intelligent enough to also understand the target data format (which is actually the job of a ReconFormatProvider and parse it. Let us try to understand it better using an example. The requirement is to write an implementation for reconciling identity accounts by picking up data from CSV files stored in a directory on the Oracle Identity Manager server and pass the output collection of TargetRecord to the reconciliation format provider. It is most likely to write the functionalities assuming that reconciliation would be frequently configured to work in a paged manner. Another frequent event is the presence of multi-valued attributes for the target parent identity account schema. The data for such attributes for any identity account would not be stored in the files where the single valued parent attributes are stored. It will be stored in a separate set of files, the entries of which might be related to the parent file entries through some method. Therefore, if the ReconTransportProvider implementation is supposed to function for paged reconciliation, it should bring all records in the page with all their complete information which could be the values for their single-valued as well as multi-valued attributes. Thus, it becomes the responsibility of the transport provider implementation itself to understand the format of the data present in these files so that it is capable of relating the parent records in one file to their child records in other files.

See Also:
ReconFormatProvider, ProviderException, ReconciliationTransportException

Method Summary
 java.lang.String end()
          This method resets the provider to start again.
 TargetRecord[] getFirstPage(int pagesize, java.lang.String timestamp)
          If reconciliation is configured to be paged, then this method fetches the first page of data.
 TargetSchema getMetadata()
          This method fetches the metadata definition of identity accounts, from the target system.
 TargetRecord[] getNextPage(int pagesize)
          If reconciliation is configured to be paged, this method fetches the pages of data next to what is fetched by ReconTransportProvider.getFirstPage(int, String).
 void initialize(Provider providerdata)
          This method initializes the provider

 

Method Detail

initialize

void initialize(Provider providerdata)
                throws ProviderException
This method initializes the provider
Parameters:
providerdata - A value object that represents a provider instance. It can also be considered as a collection of provider parameter specifications. Provider parameters, runtime as well as design could be obtained from this value object instance. Check the API documentation for Provider for more details.
Throws:
ProviderException
See Also:
Provider

getMetadata

TargetSchema getMetadata()
                         throws ProviderException
This method fetches the metadata definition of identity accounts, from the target system. The implementation might involve detecting the data structure of some sample data lying in the target application.
Returns:
TargetSchema A value object that represents the schema of an identity record in the target system. Check the API documentation for TargetSchema for more details.
Throws:
ProviderException
See Also:
TargetSchema

getFirstPage

TargetRecord[] getFirstPage(int pagesize,
                            java.lang.String timestamp)
                            throws ProviderException
If reconciliation is configured to be paged, then this method fetches the first page of data. For non-paged reconciliation, this method fetches all the data records. If reconciliation execution is executing for a particular page of records, by one thread and another thread wants to initiate reconciliation, the business logic should reset the current state and go to the first page.
Parameters:
pagesize - Page size. Provider implementations need not honor the page size arguments and the callers must deal with the size of returned records. For non-paged reconciliation, the pagesize value provided by the generic technology connector framework in the provider invocation is -1.
timestamp - Timestamp for the last reconciliation execution. It can be null for the very first reconciliation, or if ReconTransportProvider.end() didn't return any timestamp.
Returns:
An array of value objects that represent identity records in the target system. Check the API documentation for TargetRecord for more details.
Throws:
ProviderException
See Also:
TargetRecord

getNextPage

TargetRecord[] getNextPage(int pagesize)
                           throws ProviderException
If reconciliation is configured to be paged, this method fetches the pages of data next to what is fetched by ReconTransportProvider.getFirstPage(int, String). For non-paged reconciliation (i.e. a pagesize of -1), this method should ideally return a null value. If reconciliation execution is executing for a particular page of records, by one thread and another thread wants to initiate reconciliation, the business logic should reset the current state and go to the first page.
Parameters:
pagesize - Page size. Provider implementations need not honor the page size arguments and the callers must deal with the size of returned records. For non-paged reconciliation, the pagesize value provided by the generic technology connector framework in the provider invocation is -1.
Returns:
An array of value objects that represents identity records in the target system. Check the API documentation for TargetRecord for more details. When running out of records, or reached the end, this Array would be null.
Throws:
ProviderException
See Also:
TargetRecord

end

java.lang.String end()
                     throws ProviderException
This method resets the provider to start again.
Returns:
Timestamp corresponding to the last reconciliation execution after which provider was ended.
Throws:
ProviderException

Skip navigation links


Copyright © 2011, Oracle and/or its affiliates. All rights reserved.