Utiliser le service Web SOAP générique WebCenter Content pour charger un fichier ZIP de chargeur de données HCM

Le serveur Oracle WebCenter Content présente une interface de service Web SOAP (GenericSoapPort) que vous pouvez utiliser pour télécharger des fichiers.

Appeler le service Web SOAP générique WebCenter Content avec du contenu en ligne

Vous pouvez envoyer du contenu en ligne avec vos appels de service Web GenericSoapPort.

Obtenez le fichier WSDL du service Web à partir de l'emplacement suivant :

https://{host}/idcws/GenericSoapPort?wsdl

L'hôte est votre URL Oracle Fusion Cloud Applications.

Le corps de la demande inclut les paramètres suivants :

Paramètre Signification Commentaire pour le chargeur de données HCM
IdcService

Service à appeler.

CHECKIN_UNIVERSAL pour le téléchargement des fichiers

dDocName

ID de contenu de l'élément de contenu.

Valeur transmise à HcmDataLoader

dDocAuthor

Auteur (contributeur) de l'élément de contenu.

 
dDocTitle

Titre de l'élément de contenu.

Titre du fichier tel qu'il apparaît dans l'interface utilisateur d'importation/exportation

dDocType

Type d'élément de contenu.

Document

dSecurityGroup

Groupe de sécurité, tel que Public ou Secure.

FAFusionImportExport

dDocAccount

Compte de l'élément de contenu. Cette valeur est obligatoire uniquement si les comptes sont activés.

hcm$/dataloader$/import$

primaryFile

Chemin absolu de l'emplacement du fichier tel qu'il apparaît sur le serveur.

 

La valeur dDocName fait partie de la réponse et représente l'ID de contenu à utiliser pour un traitement ultérieur du chargeur de données HCM.

Vous pouvez éventuellement utiliser une enveloppe lors de l'envoi de la demande, par exemple :

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ucm="http://www.oracle.com/UCM" xmlns:wsse="http://schemas.xmlsoap.org/ws/2003/06/secext">
    <soapenv:Header />
    <soapenv:Body>
        <ucm:GenericRequest webKey="cs">
            <ucm:Service IdcService="CHECKIN_UNIVERSAL">
                <ucm:User />
                <ucm:Document>
                    <ucm:Field name="dDocTitle">Department Load File</ucm:Field>
                    <ucm:Field name="dDocType">Document</ucm:Field>
                    <ucm:Field name="dDocAuthor">YOUR_HCM_USER_NAME</ucm:Field>
                    <ucm:Field name="dSecurityGroup">FAFusionImportExport</ucm:Field>
                    <ucm:Field name="dDocAccount">hcm$/dataloader$/import$</ucm:Field>
                    <ucm:Field name="primaryFile">YourZipFile.zip</ucm:Field>
                    <ucm:File href="YourZipFile.zip" name="primaryFile">
                        <ucm:Contents>hQEMA+8YN513c6VEAQf9EstURU0V2erP9hNIP34P6cvwdi2G8hmtTY4dj+jpjSBiBwF28SzOGO5Q T/S6LDM1lAd9fHDFO4CFTEUkiMiAfa4jCpkh2kjvrV05GYiy9rlYGbgjRa38t0Boj0G8dkZia4kw lD5zloegTb4k9dp2ZXtAkJjVPTlmaVs7wPjqHJOk1Dtj+zUL/Dvq/X+rcmBtnvZ6+gX1r/PSBYsI ANiUK36pUac916p1wrYbePtmLs9rLB8dZTIdKE3pbi3aIKECnqnfXN3Rx8BT3afI2kWA9xEsEBwL XSgD4EUlYY2lWKM0wQrSCIfz1jit4zK+vs1Jp3zP3kSFfMH9h5b70ATYCNLpAXTmolmJxhvg9nPN RbgWGM0jWuVE7tXEVL66s2XJuV6HCyJ+3QDTSS/hEzUorpbaH7gOPdd2d9uIJayseWmgkCLhpgNM Ml4dGGDEL7ISZNKbu39MWvptFC5wrFX/VyB0E3kZF3xJ9dHz5UzVN3hiji6/ZLnUKRI+mpY41gEQ BdLm/WehWRLkF9yWhdkKOK1imBa+oLCeZg2YcCPNVqMaf42atoix9kSR+PCdB46SGnyQ2kvx0z9V t+4A/70psaMEOgPmUciQ/CNoC3vPdDs/G+p8Run/9MHoZoW5o2KpGC1M4j593BulKnfE7JZdYopG b1MS9Vrd6e4Oj3ZD7ISyrf8gEsEhvRu4se0CnAA8W2Fj2u88TOBn/rX+9NMffGwwO040a00N4upV 70xY0I0mvMzPKh4u4kHHQLaV7+fChTHIRCXFjvN2ziyGdSCYxiZ9tfhms39jPp2LxJKPnsV5GgC8 XSqpzxipYjbZjpqvKAu0k9VhIF4vHlGjTbzZuhz/CETs5Aj2LXvJksIBpDq6whUK7/LKR3hmfKXi e4xng6B4TwSEvhvRDY0+V2np1RMxzlqW0W3XNpKYqkS2kjO7vQM65CBAqeQjYAW9p1tE1k1S5G2N 1whW46eYIQvN68SzkCQIsafzoAtgKKYClEwJuxGE004i6AluJ0keWx+ZzXohyIxx8eTiw7vp5PIS tm2WTriBJ/x0gMB9CWfdymOFK9Mf</ucm:Contents>
                    </ucm:File>
                </ucm:Document>
            </ucm:Service>
        </ucm:GenericRequest>
    </soapenv:Body>
</soapenv:Envelope>

Toutefois, étant donné que les fichiers du chargeur de données HCM sont généralement volumineux, il est recommandé d'appeler le service Web à l'aide du mécanisme MTOM (Message Transmission Optimization Mechanism) avec XOP (Optimized Packaging) binaire XML. L'exemple de demande suivant montre une charge utile de demande qui charge un fichier ZIP de chargeur de données HCM avec MTOM/XOP :

POST http://{host}/idcws/GenericSoapPort HTTP/1.1 
Accept-Encoding: gzip,deflate
Content-Type: multipart/related; type="application/xop+xml"; start="<rootpart@example.com>"; start-info="text/xml"; boundary="----=_Part_7_163289738.1476693003095" 
SOAPAction: "urn:GenericSoap/GenericSoapOperation"
Authorization: Basic YOUR_AUTHORIZATION_TOKEN 
MIME-Version: 1.0 
Content-Length: 4030385
Host: {host} User-Agent: Apache-HttpClient/4.1.1 (java 1.5) 
Connection: close 

------=_Part_7_163289738.1476693003095 
Content-Type: application/xop+xml; charset=UTF-8; type="text/xml" 
Content-Transfer-Encoding: 8bit 
Content-ID:<rootpart@example.com>


        <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ucm="http://www.oracle.com/UCM" xmlns:wsse="http://schemas.xmlsoap.org/ws/2003/06/secext">
            <soapenv:Header>
                <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
                    <wsse:UsernameToken wsu:Id="UsernameToken-12345">
                        <wsse:Username>YOUR_HCM_USER_NAME</wsse:Username>
                        <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">YOUR_HCM_ACCOUNT_PASSWORD</wsse:Password>
                        <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">ckNXKVpwBU01PD2ENXg5nw==</wsse:Nonce>
                        <wsu:Created>2018-07-01T08:30:03.094Z</wsu:Created>
                    </wsse:UsernameToken>
                </wsse:Security>
            </soapenv:Header>
            <soapenv:Body>
                <ucm:GenericRequest webKey="cs">
                    <ucm:Service IdcService="CHECKIN_UNIVERSAL">
                        <ucm:User/>
                        <ucm:Document>
                            <ucm:Field name="dDocTitle">Department Load File</ucm:Field>
                            <ucm:Field name="dDocType">Document</ucm:Field>
                            <ucm:Field name="dDocAuthor">HCM_IMPL</ucm:Field>
                            <ucm:Field name="dSecurityGroup">FAFusionImportExport</ucm:Field>
                            <ucm:Field name="dDocAccount">hcm$/dataloader$/import$</ucm:Field>
                            <ucm:Field name="primaryFile">YourZipFile.zip</ucm:Field>
                            <ucm:File href="YourZipFile.zip" name="primaryFile">
                                <ucm:Contents>
                                    <inc:Include href="cid:YourZipFile.zip" xmlns:inc="http://www.w3.org/2004/08/xop/include" />
                                </ucm:Contents>
                            </ucm:File>
                        </ucm:Document>
                    </ucm:Service>
                </ucm:GenericRequest>
            </soapenv:Body>
        </soapenv:Envelope> 
------=_Part_7_163289738.1476693003095 
Content-Type: application/zip; name=YourZipFile.zip 
Content-Transfer-Encoding: binary 
Content-ID:<YourZipFile.zip> 
Content-Disposition: attachment; name="YourZipFile.zip"; filename="YourZipFile.zip"

 <<< binary content ommitted for brevity>>> 
 	
------=_Part_7_163289738.1476693003095--

A propos de l'outil de téléchargement de l'utilitaire de transfert de documents WebCenter Content

Vous pouvez utiliser l'utilitaire de transfert de documents WebCenter Content par programmation pour télécharger des fichiers ZIP vers le serveur WebCenter Content.

oracle.ucm.idcws.client.UploadTool inclus dans oracle.ucm.fa_genericclient_11.1.1.jar est l'utilitaire de transfert générique basé sur SOAP préféré. Il requiert le service Web Oracle JRF prenant en charge les bibliothèques et utilise JAX/WS via HTTPS pour communiquer avec le serveur WebCenter Content. oracle.ucm.idcws.client.UploadTool est utilisé pour télécharger un fichier vers WebCenter Content qui est transmis à partir d'un fichier local.

L'utilitaire générique de transfert basé sur SOAP accède au serveur WebCenter Content via son service Web GenericSoapPort (/idcws/GenericSoapPort) et exige que le client spécifie une stratégie client de sécurité Oracle Web Services Manager basée sur UsernameToken.

A propos de la configuration requise pour Java Runtime Environment

Oracle Java 6 SE version 1.6.0_20 est la première version d'Oracle Java Runtime Environment testée avec succès à l'aide des outils de l'utilitaire de transfert de documents WebCenter Content. Oracle vous recommande d'utiliser la dernière version de Java 6 SE ou Java 7 SE pour vous assurer que les dernières corrections de bogues et mises à jour de sécurité sont appliquées.

A propos des paramètres de l'outil de téléchargement

Lorsque vous appelez oracle.ucm.idcws.client.UploadTool, vous devez fournir les paramètres suivants :

  • url : emplacement du service Web GenericSoapPort du serveur WebCenter Content, par exemple : https://<Your_Oracle_WebCenter_Content_Server_URL>/idcws/GenericSoapPort

  • policy : stratégie client de sécurité Oracle Web Services Manager basée sur UsernameToken qui correspond à la stratégie de service configurée du serveur, telle que les stratégies oracle/wss_username_token_over_ssl_client_policy ou oracle/wss_username_token_client_policy.

  • username : Votre nom utilisateur Oracle Cloud HCM.

  • password : votre mot de passe Oracle Cloud HCM.

  • primaryFile : chemin qualifié complet d'un fichier local à télécharger.

  • dDocAccount : compte de sécurité de destination.

  • dDocTitle : titre du document.

  • dDocName : utilisez ce paramètre si vous souhaitez créer une version d'un fichier existant, en indiquant la valeur dDocName du fichier.

  • checkout : effectuez d'abord le paiement, si vous ajoutez une nouvelle révision. Les valeurs de ce paramètre peuvent être true ou false (par défaut).

Vous pouvez également transmettre certains paramètres facultatifs pour les cas d'utilisation de débogage ou d'appel silencieux :

  • version : pour imprimer la version et la révision UploadTool.

  • ping : permet d'effectuer un test PING_SERVER pour valider l'URL de connexion et les informations d'identification.

  • verbose : permet de configurer une sortie détaillée pour consigner les liaisons de données de demande et de réponse complètes.

  • quiet : permet de configurer une sortie de journal minimale.

  • silent : pour désactiver les messages de journal.

  • log_file_name : pour envoyer les informations de journal à un fichier externe différent de System.out.

  • log_file_append : permet de configurer l'ajout ou le remplacement du journal.

Charger les fichiers du chargeur de données HCM par programmation à l'aide du service Web SOAP générique

L'une des options de programmation dont vous disposez lors du chargement des fichiers ZIP du chargeur de données HCM consiste à utiliser l'API de service Web SOAP générique à l'aide du langage de programmation Java.

  1. Importez ces bibliothèques dans votre programme Java :
    import java.io.ByteArrayInputStream;
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStream;
    import java.nio.charset.Charset;
    import java.util.ArrayList;
    
    import java.util.List;
    import java.util.Map;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    
    import oracle.stellent.ridc.IdcClientException;
    import oracle.ucm.idcws.client.UploadTool;
    import oracle.ucm.idcws.client.UploadTool.UploadResults;
    import oracle.ucm.idcws.client.bulk.UploadException;
    import oracle.ucm.idcws.client.model.content.CheckinSource;
    import oracle.ucm.idcws.client.model.content.TransferFile;
    import oracle.ucm.idcws.client.model.response.CheckinResponse;
  2. Créez une fonction pour télécharger des fichiers vers le serveur WebCenter Content à l'aide du service Web SOAP générique :
    public static String uploadFileToUCMwithSOAP(String url, String username, String password, File uploadFile, 
    			String identifier, String dDocName, String dDocTitle, String dSecurityGroup, String dDocAccount, String dDocType) throws Exception {
    		//Insert all the code in the next steps in the body of this function		
    	}
  3. Dans le corps de la fonction, créez un objet List qui contiendra les arguments url, username, password et les arguments principaux comme la stratégie de sécurité OWSM. Par exemple :
    		List<String> coreArgs = new ArrayList<String>();
    		coreArgs.add("url=" + url);
    		coreArgs.add("policy=oracle/wss_username_token_over_ssl_client_policy");
    		
    		
    		coreArgs.add("username=" + username);
    		coreArgs.add("password=" + password);
    		coreArgs.add("silent=false"); // minimal log output
    		coreArgs.add("verbose=true"); // verbose log output
    
    		List<String> argsList = new ArrayList<String>();
    		argsList.addAll(coreArgs);
    
    		argsList.add("threads=3");
    		argsList.add("throwOnThreadException=false"); // run() will not throw an exception should a thread error
    		
    		String[] uploadArgs = argsList.toArray(new String[0]);
  4. Créez un objet UploadTool et configurez sa configuration initiale à l'aide du tableau uploadArgs. Par exemple :
    		UploadTool uploadTool = new UploadTool();
    
    		// Setup the tool's initial configuration from the supplied arguments.
    		boolean terminateEarly = uploadTool.setup(uploadArgs);
    		if (terminateEarly) {
    			throw new Exception("Error with the UCM UploadTool's initial configuration from the supplied arguments, please check arguments and try again.");
    		}
  5. Ajoutez les paramètres du service Web et effectuez la demande :
    	List < CheckinSource > items = new ArrayList < CheckinSource > ();
    	items.add(new LocalFileSource(identifier, dDocName, dDocTitle, dSecurityGroup, dDocAccount, dDocType,
    	    uploadFile.getAbsolutePath()));
    
    	uploadTool.setCheckinItems(items);
    	UploadResults uploadResults = uploadTool.run();
    	if (uploadResults != null) {
    	    Map < Integer, Exception > failedCheckins = uploadResults.getAllFailedCheckinsKeyedByTaskNum();
    	    Map < Integer, UploadException > failedCheckinsDetailed = uploadResults.getFailedCheckinsKeyedByTaskNum();
    	    for (Map.Entry < Integer, Exception > entry: failedCheckins.entrySet()) {
    	        if (failedCheckinsDetailed.containsKey(entry.getKey())) {
    	            UploadException e = failedCheckinsDetailed.get(entry.getKey());
    	            logger.info("Checkin with task number " + e.getTaskNumber() + " and identifier " +
    	                e.getIdentifier() + " failed with message " + e.getMessage());
    	        } else {
    	            logger.info("Checkin with task number " + entry.getKey() + " failed with message " +
    	                entry.getValue().getMessage());
    	        }
    	    }
    
    	    Map < Integer, CheckinResponse > successfulCheckins = uploadResults.getSuccessfulCheckinsKeyedByTaskNum();
    	    for (Map.Entry < Integer, CheckinResponse > entry: successfulCheckins.entrySet()) {
    	        CheckinResponse response = entry.getValue();
    	        logger.info("Checkin with task number " + response.getTaskNumber() + " and identifier " +
    	            response.getIdentifier() + " succeeded. dID=" + response.getDId() + " dName=" + response.getDDocName());
    
    
    
    	    }
    	}
    	return dDocName; // dDocName is whats used by HDL Import	

    Lorsque la demande est en cours d'exécution, chaque entrée est traitée séparément. Tous les éléments en échec envoyés à un objet journaliseur apparaissent d'un côté. Tous les éléments réussis sont vérifiés à partir de la réponse et consignés de l'autre côté. L'élément dDocName qui est l'ID de contenu est renvoyé dans la réponse et indique que le fichier a été téléchargé vers le serveur WebCenter Content.