Utilizzare il servizio Web Integrazione programma di caricamento dati HCM

È possibile utilizzare un servizio Web SOAP del programma di caricamento dati HCM per importare e caricare i file di dati posizionati nell'area intermedia nel server WebCenter Content. È possibile elaborare manualmente questi file di dati dalla pagina Importa e carica dati nell'interfaccia utente di Oracle Cloud HCM.

È innanzitutto necessario installare Oracle JDeveloper 11.1.1.9 per ottenere le librerie necessarie per richiamare i Web Service SOAP da Oracle Cloud HCM.

Informazioni sul servizio di integrazione del programma di caricamento dati HCM

È possibile utilizzare un servizio Web SOAP Oracle Cloud HCM per caricare i file utilizzando l'API SOAP.

È possibile ottenere i dettagli del servizio Web Data Loader Service da Oracle Fusion Cloud Human Resources nel collegamento Developer Connect, sotto Strumenti nel menu Navigator, proprio come qualsiasi altro servizio Web SOAP.

È possibile richiamare il servizio Web SOAP dopo aver inserito il file ZIP che contiene i file DAT nel server WebCenter Content. Successivamente, è possibile proteggerlo con l'account hcm/dataloader/import. Questo Web Service può essere utilizzato per importare e caricare i dati in Oracle Cloud HCM.

Informazioni sulle buste SOAP per il richiamo del programma di caricamento dati HCM

Quando si richiama il servizio Web SOAP del programma di caricamento dati HCM, le buste di richiesta e risposta vengono inviate e ricevute.
È possibile utilizzare queste buste per effettuare richieste al servizio Web SOAP HCMDataLoader:
http://{Host}/hcmCommonDataLoader/HCMDataLoader

Informazioni sul metodo importAndLoadData

Il metodo importAndLoadData avvia l'elaborazione di un file di dati ospitato nel server WebCenter Content. Si tratta di un job asincrono che restituisce solo ProcessId del processo sottomesso.

Utilizzare questa busta per effettuare una chiamata alla funzione importAndLoadData nel servizio Web SOAP.

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <ns1:importAndLoadData xmlns:ns1="http://xmlns.oracle.com/apps/hcm/common/dataLoader/core/dataLoaderIntegrationService/types/">
            <ns1:ContentId></ns1:ContentId>
            <ns1:Parameters></ns1:Parameters>
        </ns1:importAndLoadData>
    </soap:Envelope>

I parametri per il metodo importAndLoadData inviati con l'envelope sono:

ContentId: ID contenuto del file nel server WebCenter Content (lo stesso valore del parametro dDocName nella chiamata Java di WebCenter Content).

Parametri: coppie nome-valore. Sono disponibili i seguenti nomi di parametro, ma non sono obbligatori:

  • ImportMaximumErrors: percentuale delle righe file in un errore che può verificarsi per un business object prima dell'interruzione del processo di importazione.

  • LoadMaximumErrors: percentuale di istanze di business object in un errore che può verificarsi per un business object prima dell'interruzione dei processi di convalida e caricamento.

  • LoadConcurrentThreads: numero di thread concorrenti durante la convalida o il caricamento.

  • LoadGroupSize: numero di business object elaborati come singola unità di lavoro da un thread concorrente.

  • FileEncryption: tipo di cifratura del file. Ad esempio, Cifratura basata su password (PBE, Password Based Encryption).

  • DeleteSourceFile: valore Y o N. Se impostato su Y o lasciato vuoto, il file di origine viene eliminato dal server WebCenter Content dopo che il contenuto del file viene trasferito nelle tabelle di staging del programma di caricamento dati HCM e non è più necessario.

Ad esempio, il tag <ns1:Parameters> può contenere le seguenti coppie nome-valore:<ns1:Parameters>ImportMaximumErrors=100,LoadMaximumErrors=100,LoadConcurrentThreads=4,FileEncryption=PGPSIGNED,DeleteSourceFile=N</ns1:Parameters>

Il server risponde con questa busta:
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing"> 
	<env:Header> <wsa:To>http://www.w3.org/2005/08/addressing/anonymous</wsa:To> 
	  <wsa:Action>http://xmlns.oracle.com/apps/hcm/common/dataLoader/core/dataLoaderIntegrationService/HCMDataLoader/importAndLoadDataResponse</wsa:Action>
	   <wsa:MessageID>urn:uuid:ab36195f-775b-4688-a0e4-8a4e531e904c</wsa:MessageID>
	   <wsa:RelatesTo>urn:uuid:74c7b631-c20a-4d49-bf36-1f483f3dc43e</wsa:RelatesTo>
   </env:Header> 
	<env:Body> <ns0:importAndLoadDataResponse xmlns:ns0="http://xmlns.oracle.com/apps/hcm/common/dataLoader/core/dataLoaderIntegrationService/types/"> <result xmlns="http://xmlns.oracle.com/apps/hcm/common/dataLoader/core/dataLoaderIntegrationService/types/">7958</result> </ns0:importAndLoadDataResponse> 
	</env:Body> 
</env:Envelope>

Informazioni sul metodo getDataSetStatus

Il metodo getDataSetStatus restituisce lo stato corrente del file di dati specificato.

Utilizzare questa busta per effettuare una chiamata alla funzione getDataSetStatus nel servizio Web SOAP.

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <ns1:getDataSetStatus xmlns:ns1="http://xmlns.oracle.com/apps/hcm/common/dataLoader/core/dataLoaderIntegrationService/types/">
             <ns1:Parameters></ns1:Parameters>
        </ns1:getDataSetStatus>
    </soap:Envelope>

I parametri per il metodo getDataSetStatus inviati con l'envelope sono:

ContentId: ID contenuto del file nel server WebCenter Content (lo stesso valore del parametro dDocName nella chiamata Java di WebCenter Content).

ProcessId: ID del processo avviato e restituito dal metodo importAndLoadData.

Genera una classe proxy per richiamare HCM DataLoader

Un'opzione per richiamare un servizio Web SOAP di Oracle Cloud HCM consiste nell'utilizzare le classi proxy generate.

È possibile generare classi proxy fornendo l'URL del file WSDL del servizio al generatore desiderato. Queste classi proxy vengono utilizzate per richiamare il servizio Web.

Nota:

I servizi Web SOAP Oracle Cloud HCM sono protetti dai criteri di sicurezza di Oracle Web Services Manager (OWSM).
  1. Collegarsi a Oracle Cloud HCM.
  2. Nel menu Navigator individuare l'intestazione Strumenti, quindi fare clic su Developer Connect.
  3. Nella casella di ricerca Trova digitare Data Loader, quindi fare clic sull'icona di ricerca.
  4. Fare clic sul servizio Data Loader. Viene visualizzata la pagina Riepilogo del servizio.
    La pagina Riepilogo mostra le informazioni rilevanti per il servizio Web SOAP, ad esempio la posizione del file WSDL.
  5. Aprire un prompt dei comandi, quindi eseguire il comando wsimport, disponibile all'indirizzo $JAVA_HOME/bin:
    wsimport -s <Provide the folder where the generated files need to be placed> -d <Provide the folder where the generated files need to be placed> <The HCM Data Loader Integration Service URL>

    Nel comando, il primo parametro è la cartella in cui devono essere posizionati i file generati. Il secondo parametro è anche la cartella in cui devono essere posizionati i file generati. Il terzo parametro è l'URL WSDL del programma di caricamento dati HCM. Ad esempio:

    wsimport -s "D:\HCMDataLoader" -d "D:\ HCMDataLoader" https://{host}/hcmCommonDataLoader/HCMDataLoader?wsdl

    I file generati vengono posizionati nelle due cartelle seguenti:

    • com

    • sdo

  6. Aggiungere il codice generato a un file JAR:
    zip loaderIntegrationProxy.jar -r * -

Informazioni sulle implicazioni di sicurezza durante l'utilizzo del programma di caricamento dati HCM

Quando un client chiama un servizio Web SOAP del programma di caricamento dati HCM, in seguito deve soddisfare i criteri di protezione dei messaggi per assicurarsi che il payload venga trasportato in modo cifrato o attraverso il livello di trasporto SSL.

Il servizio Web HCMDataLoader è protetto mediante il seguente criterio Oracle Web Services Manager: oracle/wss11_saml_or_username_token_with_message_protection_service_policy.

Sul lato client è possibile utilizzare il seguente criterio di Oracle Web Services Manager:oracle/wss11_username_token_with_message_protection_client_policy.

Per utilizzare questo criterio, il messaggio deve essere cifrato utilizzando una chiave pubblica fornita dal server. Quando il messaggio raggiunge il server, è possibile decifrare il messaggio in base alla chiave privata del server. È possibile creare un KeyStore per importare il certificato fornito nel file WSDL del servizio, ma per motivi di sicurezza è necessario richiedere all'utente la password di Oracle Cloud HCM ogni volta che si esegue il codice.

È possibile creare un file di testo delle proprietà che può essere analizzato all'interno del codice per accedere alle informazioni Keystore, ad esempio:

FUSION_USERNAME=<Your Oracle Global Human Resources Cloud User Name>
DATAPATH=C:\\My\\Assets\\cloud.asset.hcm.java-dataload-example\\data\\
HCM_DATA_LOADER_SERVICE_WSDL_LOCATION=https://<<FusionURL>/hcmCommonDataLoader/HCMDataLoader?wsdl
UCM_IDC_WEBSERVICE_LOCATION=https://<FusionURL>/idcws/GenericSoapPort
KEYSTORE_LOCATION=<Your Keystore trust location>
KEYSTORE_PASSWORD=<YourTrustPassword>
KEYSTORE_ALIAS=orakey
GETDATASETSTATUS_DELAY=5
OK=OK
ERROR=Error
WARNING=Warning
CSV_FILE_ENCODING=UTF-8
DATA_SEPERATOR=;

Richiedere all'utente le credenziali di Oracle Cloud HCM utilizzando quanto riportato di seguito.

// Accept password from user
Scanner scanReader = new Scanner(System.in);  // Reading from System.in
System.out.println("Enter password for user "+propertiesFile.getProperty("FUSION_USERNAME")+" :");
fusionUserPass= scanReader.next(); // Scans the next token of the input as an int.
scanReader.close();

Nell'esempio, fusionUserPass è una variabile che può essere utilizzata per memorizzare la password Oracle Cloud HCM dell'utente, quindi passata al servizio Web SOAP del programma di caricamento dati HCM.

Richiama il servizio Web SOAP DataLoader HCM

È possibile caricare i dati da un file ZIP in Oracle Cloud HCM utilizzando il servizio Web SOAP del programma di caricamento dati HCM da una classe Java.

In primo luogo, creare un file ZIP e caricarlo nel server WebCenter Content manualmente o a livello di programmazione. Sarà quindi possibile caricare i dati utilizzando il Web Service importAndLoadData.

Nota:

Gli esempi di codice forniti in questa soluzione sono stati testati con JDK versione 8 per richiamare i servizi Web su Oracle WebLogic Server 12c. Per l'uso con altre versioni di JDK e Oracle WebLogic Server, eseguire il test del codice con le librerie specifiche delle versioni desiderate.

  1. Creare una classe client nella cartella: /com/oracle/xmlns/apps/hcm/common/dataloader/core/dataloaderintegrationservice/.
    Per generare la classe è necessario disporre del seguente file JAR:
    • Per server WebLogic 11g: ws.api_1.1.0.0.jar
    • Per server WebLogic 12c: wls-api.jar

    Questo file JAR è disponibile nella seguente posizione nella cartella di installazione JDeveloper:

    • Per server WebLogic 11g: $MIDDLEWARE_HOME/modules
    • Per server WebLogic 12c: $MIDDLEWARE_HOME/wlserver/server/lib
  2. Assicurarsi di importare le seguenti librerie Java nel codice Java:
    import com.oracle.xmlns.apps.hcm.common.dataloader.core.dataloaderintegrationservice.HCMDataLoader;
    import com.oracle.xmlns.apps.hcm.common.dataloader.core.dataloaderintegrationservice.HCMDataLoader_Service;
    import com.oracle.xmlns.apps.hcm.common.dataloader.core.dataloaderintegrationservice.ServiceException;
    import javax.xml.ws.BindingProvider;
    import weblogic.wsee.jws.jaxws.owsm.SecurityPolicyFeature;
    
  3. Creare una funzione che restituisca un oggetto HCMDataLoader e riceva url, username, password e keystore come parametri. ad esempio:
    public static HCMDataLoader getHCMDataLoaderService(String url, String username, String password, String keystore)
    			throws MalformedURLException {
    		//The code in the next steps is placed within the function body
    }
  4. Creare l'oggetto servizio Web SOAP all'interno del corpo della funzione.
    HCMDataLoader_Service webService = new HCMDataLoader_Service(new URL("/hcmCommonDataLoader/HCMDataLoader?wsdl));
    
    SecurityPolicyFeature[] securityFeatures = new SecurityPolicyFeature[] { 
    				new SecurityPolicyFeature("oracle/wss_username_token_over_ssl_client_policy") 
    }; 
    
    HCMDataLoader hcmDataLoader = webService.getHCMDataLoaderSoapHttpPort(securityFeatures);
    
  5. Creare un oggetto BindingProvider e impostarne i parametri di contesto.
    BindingProvider wsbp = (BindingProvider) hcmDataLoader;
    Map<String, Object> requestContext = wsbp.getRequestContext();
    requestContext.put(BindingProvider.USERNAME_PROPERTY, username);
    requestContext.put(BindingProvider.PASSWORD_PROPERTY, password);
    return hcmDataLoader;
  6. Caricare i dati in Oracle Cloud HCM utilizzando la funzione importAndLoadData.
    HCMDataLoader hcmDataLoaderService = HCMDataLoaderUtil.getHCMDataLoaderService(url, username, password,
    		keystore);
    
    String parameters = ""; // args[1];
    
    try {
    	String response = hcmDataLoaderService.importAndLoadData(contentId, parameters);
    
    	return response;
    } catch (ServiceException e) {
    	logger.severe("Error occurred during importAndLoad call  ..." + e.getLocalizedMessage());
    	throw e;
    }
  7. È possibile creare un'altra funzione per ottenere lo stato dal file di dati caricato:
    public static String invokeGetDataSetStatus(String url, String username, String password, String keystore,
    			Long processId, String getDataSetStatusDelay)
    			throws ServiceException, ParserConfigurationException, SAXException, IOException, InterruptedException {
    				//The code in the next steps is placed within this function body
    }
  8. Recuperare la risposta di stato utilizzando la funzione getDataSetStatus:
    HCMDataLoader hcmLoaderService = getHCMDataLoaderService(url, username, password, keystore);
    String response = hcmLoaderService.getDataSetStatus("ProcessId=" + processId);
    String loadStatus = getLoadStatusFromResponse(response); // To save the status from the response to a String variable

    getDataSetStatus restituisce un oggetto XML che contiene i dettagli sul processo di caricamento e importazione.

  9. Creare un'altra funzione per analizzare la risposta XML dalla chiamata getDataSetStatus.
    public static String getLoadStatusFromResponse(String xmlResult)
    			throws ParserConfigurationException, SAXException, IOException {
    		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    		DocumentBuilder builder = factory.newDocumentBuilder();
    		Document document = builder.parse(new InputSource(new StringReader(xmlResult)));
    		NodeList flowList = document.getElementsByTagName("DATA_SET_STATUS");
    		NodeList childList;
    		for (int i = 0; i < flowList.getLength(); i++) {
    			childList = flowList.item(i).getChildNodes();
    			for (int j = 0; j < childList.getLength(); j++) {
    				Node childNode = childList.item(j);
    				if ("DATA_SET".equals(childNode.getNodeName())) {
    					NodeList dataSeteChildNodes = childNode.getChildNodes();
    					{
    						for (int k = 0; k < dataSeteChildNodes.getLength(); k++) {
    							{
    								Node childDSNode = dataSeteChildNodes.item(k);
    								if ("STATUS".equals(childDSNode.getNodeName())) {
    									String status = dataSeteChildNodes.item(k).getTextContent().trim();
    									System.out.println("Current Status of the Data Set "
    											+ dataSeteChildNodes.item(k).getTextContent().trim());
    									return status;
    								}
    							}
    						}
    					}
    				}
    			}
    		}
    		return "ERROR";
    	}
    
  10. Una volta completato il codice Java, compilalo utilizzando il comando javac:
    • Per il server WebLogic 11g:
      javac -classpath path of the folder where with generated JAX-WS files;location of ws.api_1.1.0.0.jar HCMDataLoaderServiceSoapHttpPortClient.java
    • Per il server WebLogic 12c:
      javac -classpath path of the folder where with generated JAX-WS files;location of wls-api.jar HCMDataLoaderServiceSoapHttpPortClient.java
  11. Eseguire la classe HCMDataLoaderServiceSoapHttpPortClient per richiamare il servizio di integrazione del programma di caricamento dati HCM utilizzando il comando java.
    • Per il server WebLogic 11g:
      java -classpath path of the folder where with generated JAX-WS files;location of weblogic.jar;location of jrf.jar com.oracle.xmlns.apps.hcm.common.dataloader.core.dataloaderintegrationservice.HCMDataLoaderServiceSoapHttpPortClient ContentId Parameters
    • Per il server WebLogic 12c:
      java -classpath path of the folder where with generated JAX-WS files;location of wlthint3client.jar;location of wls-api.jar com.oracle.xmlns.apps.hcm.common.dataloader.core.dataloaderintegrationservice.HCMDataLoaderServiceSoapHttpPortClient ContentId Parameters