Services Integration Framework (SIF) is used to integrate the Informatica MDM with custom applications. This integration requires a prior working knowledge of MDM Hub and familiarity with Java and APIs. This article explains how to perform application integration with Informatica MDM using their given APIs.
What is the Services Integration Framework (SIF)
You can use the Services Integration Framework (SIF) to invoke the MDM Hub operations from external applications in real-time. It utilizes a service-oriented architecture that offers application integration functionality in the form of services to other applications.
You can also configure the SIF for the MDM Hub to interact with the client software. SIF functions as the intermediary, or middle tier, in the client-server model. You can use SIF access protocols to implement the request and response interactions.
Note: Private resources are accessible only to admin users via SIF requests.
Services Integration Framework (SIF) offers the following services and events:
-
Process Services
Process services are integration processes and people-to-system processes. For example, in a customer domain, the process services include activities such as verifying customers and approving customers.
-
Business Events
Business events are rule-driven events and actions based on business logic. For example, you might evaluate the impact of a new relationship.
-
Business Services
In the data model, business services operate on base objects. For instance, you can retrieve a customer base object or create one in a customer domain.
-
Data Services
Data services act on records in the tables. You can retrieve a record, insert a record, or update a record.
-
Data Events
Data events are events that affect master data or source data. For example, a customer’s last name changes in a source record or an address changes in a master record.
SIF requests can directly communicate with one other. Data services can interact with data events, process services with data services, data services with business services, and data events with process services.
Services Integration Framework (SIF) Implementation
SIF SDK
You can utilize the SIF SDK to develop Java apps and web services that communicate with the MDM Hub. The SIF SDK offers tools necessary for building and deploying SIF application integration. Moreover, it also includes sample codes to develop web services and a series of Java classes to create services.
Similarly, many developers use the SIF SDK to build client services, data objects, GUI controls, and business services for the development and delivery of web-based and rich-client applications.
The MDM Hub Resource Kit installer comes with the SIF SDK. You can easily find the directory structures, libraries, online documentation for SIF, and build files in the following directory:
<Resource Kit Installation Directory>\hub\resourcekit\sdk\sifsdk
Any client machine where you intend to create and run programs to communicate with the MDM Hub should be copied with the SIF SDK. You can use the Java classes that come with the SIF SDK if you can run a Java virtual machine (JVM) on the client system.
Access Protocols
You can use the following access protocols for the SIF request and response interactions:
- Tightly coupled Java remote procedure calls based on Enterprise JavaBeans (EJB) in a Java development environment.
- Loosely coupled web services that use SOAP protocol. Use Web Services Description Language (WSDL) to define the request and response XML. The development environment can be Microsoft Visual Studio, Eclipse, or other web service client tools.
- XML over HTTP protocol, which is quite similar to web services but without the SOAP envelope.
- Asynchronous JMS-based messages that use XML over HTTP protocol.
The access protocol runs on top of the native MDM Hub protocol, which accepts requests in the XML or EJB format and returns responses in the same format.
You can also use the SiperianClient proxy in a Java development environment to manage the communication protocol for the SIF requests.
Here’s an image that shows how SIF processes the request and response communications:
Setting Up the SIF SDK
The SIF SDK is packaged with the MDM Hub Resource Kit installer. You can use the MDM Hub Resource Kit installer to install the SIF SDK and SIF API reference documentation. Once you have installed the Resource Kit, you can find the libraries, directory structures, build files, and SIF API reference documentation in the following directory:
<Resource Kit Installation Directory>\hub\resourekit\sdk\sifsdk.
Setting Up a Sample Eclipse Client
Use the sample .project file that is part of the SIF SDK to create a sample Eclipse client.
1. In the Eclipse IDE, import the sample .project file located in the
<Resource Kit Installation Directory>\hub\resourcekit\sdk\sifsdk
directory into your Eclipse workspace.
2. Identify the missing library JAR files that are specific to the application integration server and add them to the build classpath. The sample .project file requires the library JAR files to set up the proper Java build path.
3. You have to tailor the following files according to your environment:
- <Resource Kit Installation Directory>\hub\resourcekit\sdk\sifsdk\build.xml
- <Resource Kit Installation Directory>\hub\resourcekit\sdk\sifsdk\my.properties
- <Resource Kit Installation Directory>\hub\resourcekit\sdk\sifsdk\source\properties\log4j.xml
- <Resource Kit Installation Directory>\hub\resourcekit\sdk\sifsdk\source\properties\siperian-client.properties
Sample Code to Retrieve Records
After setting up an Eclipse client, the code be developed now to interact with the MDM Hub. For example, create a class and add the following sample code that uses the SearchQueryRequest
and SearchQueryResponse classes to retrieve records:
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import com.siperian.sif.client.SiperianClient;
import com.siperian.sif.client.SoapSiperianClient;
import com.siperian.sif.message.Parameter;
import com.siperian.sif.message.Record;
import com.siperian.sif.message.mrm.SearchQueryRequest;
import com.siperian.sif.message.mrm.SearchQueryResponse;
public class SearchQuery {
public static void main(String[] args) {
File file = new File(“E:\\siperian-client.properties”);
System.out.println(“Reading File:” + file.getAbsolutePath());
if (!file.exists()) {
System.out.println(“***ERROR -> Properties File does not exist in location – “);
return;
}
SoapSiperianClient sipClient = (SoapSiperianClient) SiperianClient.newSiperianClient(file);
SearchQueryRequest request = new SearchQueryRequest();
request.setRecordsToReturn(5);
request.setSiperianObjectUid(“BASE_OBJECT.C_PARTY”);
request.setFilterCriteria(“C_PARTY.FIRST_NAME =?”);
ArrayList params = new ArrayList(2);
params.add(new Parameter(“3333”));
request.setFilterParameters(params);
SearchQueryResponse response = (SearchQueryResponse) sipClient.process(request);
List <Record> records = response.getRecords();
for (Record record : records) {
System.out.println(“Period Start Date: ” + record.getField(“PERIOD_START_DATE”).getDateValue().toString());
System.out.println(“Period End Date: ” + record.getField(“PERIOD_END_DATE”).getDateValue().toString());
}
}
}
Running the Sample Code to Retrieve Records
Run the sample class as a Java application once you have created a class.
To run the sample class as a Java application, in the Eclipse IDE, right-click the sample class, and select Run As -> Java Application. The Console View displays the output.
Request and Response Objects
A set of request and response objects is necessary for each operation that is performed using SIF. The methods in a request object specify the action you wish to take on the MDM Hub, and the methods in a response object return the outcome of that action.
A SIF class can represent a response object or a request object. A SIF class that represents a request object has a suffix of ‘Request,’ and a SIF class that represents a response object has a suffix of ‘Response.’ For example, the PutRequest class represents a request object, and the
PutResponse class represents the response to the PutRequest object.
Request Objects
A request object includes methods that indicate the action that needs to be performed on the MDM Hub. A SIF class that represents a request object is a subclass of the SiperianRequest
class and extends the SiperianRequest class.
For example, the following sample uses the SearchQueryRequest object:
SearchQueryRequest request = new SearchQueryRequest();
request.setRecordsToReturn(5); //Required
request.setSiperianObjectUID(“PACKAGE.PARTY_ADDRESS_READ_PKG”);//Required
request.setFilterCriteria(“PARTY_FULL_NAME LIKE ?”);
The request runs the PARTY_ADDRESS_READ_PKG package, uses the PARTY_FULL_NAME LIKE
filter criteria and returns no more than five records.
Response Objects
A response object represents the response to the corresponding request object and includes methods that return the result of the action that you perform on the MDM Hub. A SIF class that represents a response object is a subclass of the SiperianResponse class and extends the
SiperianResponse class into it.
For example, the following sample uses the GetOrsMetadataResponse object:
GetOrsMetadataResponse getOrsMetadataResponse = (GetOrsMetadataResponse)
sifClient.process(getOrsMetadataRequest );
System.out.println(“ORS Metadata (first line only): ” +
getOrsMetadataResponse.getRepositoryXml().substring(0, 80));;
Conclusion
We hope this article helps you understand the Services Integration Framework (SIF) APIs you can use to integrate an application with Informatica MDM.
In case you need further assistance, contact us at [email protected].