Utilizzare il servizio Web SOAP generico WebCenter Content per caricare un file ZIP del programma di caricamento dati HCM

Il server Oracle WebCenter Content espone un'interfaccia del servizio Web SOAP (GenericSoapPort) che è possibile utilizzare per caricare i file.

Richiama il servizio Web SOAP generico WebCenter Content con contenuto in linea

È possibile inviare contenuto in linea insieme alle chiamate del servizio Web GenericSoapPort.

Recuperare il file WSDL per il servizio Web dalla seguente posizione:

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

L'host è l'URL delle applicazioni Oracle Fusion Cloud.

Il corpo della richiesta include i seguenti parametri:

Parametro Significato Commento per il programma caricamento dati HCM
IdcService

Il servizio da richiamare.

CHECKIN_UNIVERSAL per il caricamento dei file

dDocName

ID contenuto per l'elemento di contenuto.

Valore passato a HcmDataLoader

dDocAuthor

Autore (contributore) dell'elemento di contenuto.

 
dDocTitle

Il titolo dell'elemento di contenuto.

Titolo del file visualizzato nell'interfaccia utente di importazione/esportazione

dDocType

Tipo di elemento di contenuto.

Documento

dSecurityGroup

Il gruppo di sicurezza, ad esempio Public o Secure.

FAFusionImportExport

dDocAccount

Account per l'elemento di contenuto. Questo valore è obbligatorio solo se gli account sono abilitati.

hcm$/dataloader$/import$

primaryFile

Il percorso assoluto della posizione del file visualizzato dal server.

 

Il valore dDocName fa parte della risposta e rappresenta l'ID contenuto da utilizzare per l'ulteriore elaborazione del programma di caricamento dati HCM.

Se lo si desidera, è possibile utilizzare una busta durante l'invio della richiesta, ad esempio:

<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>

Tuttavia, poiché i file del programma di caricamento dati HCM sono in genere di grandi dimensioni, si consiglia di chiamare il servizio Web utilizzando MTOM (Message Transmission Optimization Mechanism) con XOP (XML-binary Optimized Packaging). L'esempio riportato di seguito mostra un payload richieste che carica un file ZIP del programma di caricamento dati HCM con 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--

Informazioni sullo strumento di caricamento della utility di trasferimento documenti WebCenter Content

È possibile utilizzare la utility di trasferimento documenti WebCenter Content a livello di programmazione per caricare i file ZIP nel server WebCenter Content.

oracle.ucm.idcws.client.UploadTool incluso in oracle.ucm.fa_genericclient_11.1.1.jar è la utility di trasferimento generica SOAP preferita. Richiede il servizio Web Oracle JRF che supporta le librerie e utilizza JAX/WS su HTTPS per comunicare con il server WebCenter Content. Il file oracle.ucm.idcws.client.UploadTool viene utilizzato per caricare un file in WebCenter Content in streaming da un file locale.

La utility di trasferimento basata su SOAP generica accede al server WebCenter Content tramite il proprio servizio Web GenericSoapPort (/idcws/GenericSoapPort) e richiede al client di specificare un criterio client di sicurezza Oracle Web Services Manager basato su UsernameToken appropriato.

Informazioni sui requisiti di Java Runtime Environment

Oracle Java 6 SE release 1.6.0_20 è la versione più recente di Oracle Java Runtime Environment che è stato testato correttamente con gli strumenti della utility di trasferimento documenti WebCenter Content. Oracle consiglia di utilizzare la release più recente di Java 6 SE o Java 7 SE per assicurarsi di avere applicato le correzioni dei bug e gli aggiornamenti della sicurezza più recenti.

Informazioni sui parametri dello strumento di caricamento

Quando si richiama oracle.ucm.idcws.client.UploadTool, è necessario fornire i seguenti parametri:

  • url: la posizione del servizio Web GenericSoapPort del server WebCenter Content, ad esempio: https://<Your_Oracle_WebCenter_Content_Server_URL>/idcws/GenericSoapPort

  • criterio: il criterio client di sicurezza Oracle Web Services Manager basato su UsernameToken appropriato che corrisponde al criterio di servizio configurato del server, ad esempio oracle/wss_username_token_over_ssl_client_policy o oracle/wss_username_token_client_policy.

  • nomeutente: il nome utente Oracle Cloud HCM.

  • password: password Oracle Cloud HCM.

  • primaryFile: percorso completamente qualificato di un file locale da caricare.

  • dDocAccount: l'account di sicurezza di destinazione.

  • dDocTitle: il titolo del documento.

  • dDocName: utilizzare questo parametro se si desidera creare una versione di un file esistente fornendo il valore dDocName del file.

  • checkout: esegue innanzitutto il checkout se si aggiunge una nuova revisione. I valori di questo parametro possono essere true o false (impostazione predefinita).

È inoltre possibile passare alcuni parametri facoltativi per i casi d'uso di debug o richiamo in background:

  • versione: per stampare la revisione e la versione di UploadTool.

  • ping: consente di eseguire un test PING_SERVER per convalidare l'URL e le credenziali di connessione.

  • verbose: consente di configurare un output dettagliato per registrare i binding dei dati di richiesta e risposta completi.

  • quiet: per configurare un output di log minimo.

  • Silenzioso: per disabilitare i messaggi di log.

  • log_file_name: per inviare le informazioni di log a un file esterno diverso da System.out.

  • log_file_append: per configurare l'aggiunta o la sovrascrittura del log.

Caricamento programmatico dei file del programma di caricamento dati HCM mediante il servizio Web SOAP generico

Una delle opzioni programmatiche disponibili durante il caricamento dei file ZIP del programma di caricamento dati HCM consiste nell'utilizzare l'API del servizio Web SOAP generico utilizzando il linguaggio di programmazione Java.

  1. Importare queste librerie nel programma 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. Creare una funzione per caricare i file nel server WebCenter Content utilizzando il servizio Web SOAP generico:
    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. Nel corpo della funzione creare un oggetto List che conterrà url, username, password e gli argomenti principali come il criterio di sicurezza OWSM. ad esempio:
    		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. Creare un oggetto UploadTool e impostarne la configurazione iniziale utilizzando l'array uploadArgs. ad esempio:
    		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. Aggiungere i parametri del servizio Web ed effettuare la richiesta:
    	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	

    Quando la richiesta esegue ogni voce viene elaborata separatamente. Tutti gli elementi con errori inviati a un oggetto logger vengono visualizzati su un lato. Tutti gli elementi riusciti vengono verificati dalla risposta e registrati dall'altro lato. L'ID contenuto dDocName viene restituito nella risposta e indica che il file è stato caricato correttamente nel server WebCenter Content.