Package 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.- Version:
- 1.4, Oracle Identity Manager 9.1
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionend()
This method resets the provider to start again.getFirstPage
(int pagesize, String timestamp) If reconciliation is configured to be paged, then this method fetches the first page of data.This method fetches the metadata definition of identity accounts, from the target system.getNextPage
(int pagesize) If reconciliation is configured to be paged, this method fetches the pages of data next to what is fetched bygetFirstPage(int, String)
.void
initialize
(Provider providerdata) This method initializes the provider
-
Method Details
-
initialize
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 forProvider
for more details.- Throws:
ProviderException
- See Also:
-
getMetadata
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:
-
getFirstPage
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 ifend()
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:
-
getNextPage
If reconciliation is configured to be paged, this method fetches the pages of data next to what is fetched bygetFirstPage(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:
-
end
This method resets the provider to start again.- Returns:
- Timestamp corresponding to the last reconciliation execution after which provider was ended.
- Throws:
ProviderException
-