Objectif
L’objectif de ce tutoriel est de faire un appel à un Web Service via l’utilisation du SIF.
Pour ce tutoriel on utilisera l’ORS SAMPLE, et le service GET.
Exemple d’appel avec SoapUI :
NB :
- on utilisera pour outil de développement java NetBeans 7.
- Le MDM fonctionne avec JBoss 5x
Import des librairies (CLASSPATH)
Une fois le projet Java créé dans NetBeans, il faut importer les bonnes librairies (jars) java.
Ces librairiez proviennent de :
- La solution MDM (répertoire [Installation du MDM]\resourcekit\sifsdk\lib)
- De JBoss (répertoire [Installation de JBoss]\client)
- D’Apache (pour Log4J)
NB :
- Avec JBoss 5 il est important de telecharger et utiliser le jar de log4j en version 1.2.16 minimum pour que cela fonctionne.
- De plus déplacer le jaj log4j en première position pour éviter tout conflit avec la même librairie déjà présente (mais incorrecte) dans les jars de JBoss.
Préparation du fichier de configuration
Il faut configurer un fichier de paramètre qui sera ensuite utilisé par l’API pour appeler le Web Service (ici on utilisera le fichier C:/WORK/MyWork/TestWSCall/properties/siperian-client.properties).
Adaptez bien sur avec votre contexte :
[code]
################################################################################
#
# This file contains the parameters used to connect from the web service to
# the Siperian Hub (using the Siperian Hub MrmClient libraries).
#
################################################################################
################################################################################
# Properties used in each request to Siperian Hub
#
# These may be set programmatically on each VerbRequest, but are typically static.
# Note, in some programming contexts, the usernames and passwords below should be set programmatically or secured.
# TODO: set the database parameter (and others if not being set within the web service)
siperian-client.orsId=<strong>orcl.localdomain-CMX_ORS_SAMPLE</strong>
siperian-client.username=<strong>admin</strong>
siperian-client.password=<strong>admin</strong>
################################################################################
# Connection protocol may be: http, ejb or soap
# ejb is recommended as it is the only one that allows separate requests to
# participate in transaction.
# TODO: Choose a protocol
siperian-client.protocol=<strong>ejb</strong>
java.naming.provider.url=<strong>jnp://localhost.localdomain:1099/</strong>
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
jnp.socketFactory=org.jnp.interfaces.TimedSocketFactory
jnp.timeout=20000
jnp.sotimeout=20000
jnp.discoveryTimeout=50000
################################################################################
# Parameters for HTTP
# Use this with protocol=http
http.call.url=<strong>http://localhost.localdomain:8080/cmx/request</strong>
[/code]
Autres fichiers de configuration
Dans le meme repertoire que le fichier de configuration précédent, créez les deux fichier (même vide) suivant :
- ejb.properties
- security.properties
Code
Le code d’appel du service GET :
[code lang= »java »]
package testwscall;
//import com.informatica.mdm.sif.services.*;
import com.siperian.sif.message.Password;
import com.siperian.sif.client.SiperianClient;
import com.siperian.sif.message.RecordKey;
import com.siperian.sif.message.mrm.GetRequest;
import com.siperian.sif.message.mrm.GetResponse;
import com.siperian.sif.message.Record;
import java.io.File;
import java.util.Iterator;
public class TestWSCall {
 
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
GetResponse response = null;
GetRequest service = new GetRequest();
SiperianClient sipClient;
// Affecte le username
service.setUsername("admin");
// affecte le password (non encrypté)
Password pwd = new Password();
pwd.setEncrypted(false);
pwd.setPassword("admin");
service.setPassword(pwd);
// Affecte l’ORD ID
service.setOrsId("orcl.localdomain-CMX_ORS_SAMPLE");
// Affecte le package d’interrogation
service.setSiperianObjectUid("PACKAGE.PKG_ADDRESS");
RecordKey rec = new RecordKey();
rec.setRowid("250");
service.setRecordKey(rec);
File prop = new File("<strong>C:/WORK/MyWork/TestWSCall/properties/siperian-client.properties</strong>");
sipClient = SiperianClient.newSiperianClient(prop);
try {
response = (GetResponse) sipClient.process(service);
} catch (Exception e) {
System.out.println("Failure processeing cleanseReq : " + e);
}
Iterator recordIter = response.getRecords().iterator();
// Récupération du résultat :
while (recordIter.hasNext()) {
Record record = (Record) recordIter.next();
String addr1 = record.getField("ADDRESS_LINE_1").getStringValue(); // EX
String city = record.getField("CITY_NAME").getStringValue(); // EX
System.out.println("GenericGetAPI: Reponse : " + addr1 + " " + city);
}
}
[/code]
Lancez le programme et constatez le résultat :
ANNEXE 1 – Trouver l’ORS ID
Pour connaître l’ORS ID c’est très simple, allez dans la console d’administration d’Informatica MDM hub et sélectionnez votre ORS dans la rubrique Database comme suit :
Ingénieur en informatique avec plus de 20 ans d’expérience dans la gestion et l’utilisation de données, Benoit CAYLA a mis son expertise au profit de projets très variés tels que l’intégration, la gouvernance, l’analyse, l’IA, la mise en place de MDM ou de solution PIM pour le compte de diverses entreprises spécialisées dans la donnée (dont IBM, Informatica et Tableau). Ces riches expériences l’ont naturellement conduit à intervenir dans des projets de plus grande envergure autour de la gestion et de la valorisation des données, et ce principalement dans des secteurs d’activités tels que l’industrie, la grande distribution, l’assurance et la finance. Également, passionné d’IA (Machine Learning, NLP et Deep Learning), l’auteur a rejoint Blue Prism en 2019 et travaille aujourd’hui en tant qu’expert data/IA et processus. Son sens pédagogique ainsi que son expertise l’ont aussi amené à animer un blog en français (datacorner.fr) ayant pour but de montrer comment comprendre, analyser et utiliser ses données le plus simplement possible.