Webservice für HCM Data Loader-Integration verwenden

Mit einem SOAP-Webservice von HCM Data Loader können Sie die auf dem Server WebCenter Content bereitgestellten Datendateien importieren und laden. Sie können diese Datendateien manuell auf der Seite Daten importieren und laden in der Oracle Cloud HCM-Benutzeroberfläche verarbeiten.

Sie müssen zunächst Oracle JDeveloper 11.1.1.9 installieren, um die Librarys abzurufen, die zum Aufrufen von SOAP-Webservices aus Oracle Cloud HCM erforderlich sind.

Info zu HCM Data Loader Integration Service

Mit einem Oracle Cloud HCM-SOAP-Webservice können Sie Dateien mit der SOAP-API hochladen.

Sie können die Webservicedetails von Data Loader Service wie jeder andere SOAP-Webservice aus Oracle Fusion Cloud Human Resources im Link Developer Connect unter Tools im Menü Navigator abrufen.

Sie können den SOAP-Webservice aufrufen, nachdem Sie die ZIP-Datei mit den DAT-Dateien auf dem Server WebCenter Content gespeichert haben. Dann können Sie es mit dem hcm/dataloader/import-Account sichern. Mit diesem Webservice können Sie Daten in Oracle Cloud HCM importieren und laden.

SOAP-Envelopes zum Aufrufen des HCM Data Loaders

Wenn Sie den SOAP-Webservice von HCM Data Loader aufrufen, werden Anforderungs- und Antwort-Envelops gesendet und empfangen.
Mit diesen Umschlägen können Sie Anforderungen an den SOAP-Webservice HCMDataLoader stellen:
http://{Host}/hcmCommonDataLoader/HCMDataLoader

Informationen zur Methode importAndLoadData

Die Methode importAndLoadData initiiert die Verarbeitung einer Datendatei, die auf dem Server WebCenter Content gehostet wird. Es handelt sich um einen asynchronen Job, der nur die ProcessId des weitergeleiteten Prozesses zurückgibt.

Verwenden Sie diesen Umschlag, um die Funktion importAndLoadData im SOAP-Webservice aufzurufen.

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

Die Parameter für die importAndLoadData-Methode, die mit dem Envelope gesendet werden, sind:

ContentId: Inhalts-ID der Datei auf dem Server WebCenter Content (derselbe Wert wie der Parameter dDocName im Java-Aufruf WebCenter Content).

Parameter: Name/Wert-Paare. Die folgenden Parameternamen sind verfügbar, sind jedoch nicht obligatorisch:

  • ImportMaximumErrors: Prozentsatz der Dateizeilen in einem Fehler, der für ein Geschäftsobjekt auftreten kann, bevor der Importprozess stoppt.

  • LoadMaximumErrors: Prozentsatz der Geschäftsobjektinstanzen in einem Fehler, der für ein Geschäftsobjekt auftreten kann, bevor der Validierungs- und Ladeprozess stoppt.

  • LoadConcurrentThreads: Anzahl gleichzeitiger Threads beim Validieren oder Laden.

  • LoadGroupSize: Anzahl Geschäftsobjekte, die von einem Hintergrundthread als eine Einheit verarbeitet werden.

  • FileEncryption: Typ der Dateiverschlüsselung. Beispiel: Kennwortbasierte Verschlüsselung (PBE).

  • DeleteSourceFile: Wert Y oder N. Wenn dieser Wert auf Y gesetzt oder leer gelassen wird, wird die Quelldatei aus dem Server WebCenter Content gelöscht, nachdem der Dateiinhalt in die Staging-Tabellen von HCM Data Loader übertragen wurde und nicht mehr erforderlich ist.

Beispiel: Das Tag <ns1:Parameters> kann die folgenden Name/Wert-Paare enthalten:<ns1:Parameters>ImportMaximumErrors=100,LoadMaximumErrors=100,LoadConcurrentThreads=4,FileEncryption=PGPSIGNED,DeleteSourceFile=N</ns1:Parameters>

Der Server antwortet mit diesem Envelope:
<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>

Informationen zur Methode getDataSetStatus

Die Methode getDataSetStatus gibt den aktuellen Status der angegebenen Datendatei zurück.

Verwenden Sie diesen Umschlag, um die Funktion getDataSetStatus im SOAP-Webservice aufzurufen.

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

Die Parameter für die getDataSetStatus-Methode, die mit dem Envelope gesendet werden, sind:

ContentId: Inhalts-ID der Datei auf dem Server WebCenter Content (derselbe Wert wie der Parameter dDocName im Java-Aufruf WebCenter Content).

ProcessId: Die ID des Prozesses, der von der Methode importAndLoadData initiiert und zurückgegeben wird.

Proxyklasse zum Aufrufen von HCM generieren DataLoader

Eine Option zum Aufrufen eines Oracle Cloud HCM-SOAP-Webservice besteht darin, generierte Proxyklassen zu verwenden.

Sie können Proxyklassen generieren, indem Sie dem gewünschten Generator die URL der Service-WSDL-Datei angeben. Mit diesen Proxyklassen wird der Webservice aufgerufen.

Hinweis:

Oracle Cloud HCM-SOAP-Webservices sind durch Oracle Web Services Manager-(OWSM-)Sicherheits-Policys geschützt.
  1. Melden Sie sich bei Oracle Cloud HCM an.
  2. Suchen Sie im Menü Navigator die Überschrift "Extras", und klicken Sie auf Developer Connect.
  3. Geben Sie im Suchfeld Suchen Data Loader ein, und klicken Sie auf das Suchsymbol.
  4. Klicken Sie auf den Data Loader-Service. Die Seite Übersicht des Service wird angezeigt.
    Auf der Seite "Übersicht" werden Informationen angezeigt, die für den SOAP-Webservice relevant sind, z.B. der Speicherort der WSDL-Datei.
  5. Öffnen Sie eine Eingabeaufforderung, und führen Sie dann den Befehl wsimport aus, der unter $JAVA_HOME/bin verfügbar ist:
    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>

    Im Befehl ist der erste Parameter der Ordner, in dem die generierten Dateien gespeichert werden müssen. Der zweite Parameter ist auch der Ordner, in dem die generierten Dateien gespeichert werden müssen. Der dritte Parameter ist die WSDL-URL für HCM Data Loader. Beispiel:

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

    Die generierten Dateien werden in die folgenden beiden Ordner eingefügt:

    • com

    • sdo

  6. Fügen Sie den generierten Code einer JAR-Datei hinzu:
    zip loaderIntegrationProxy.jar -r * -

Auswirkungen auf die Sicherheit bei der Verwendung von HCM Data Loader

Wenn ein Client einen SOAP-Webservice von HCM Data Loader aufruft, muss der spätere die Message Protection Policy erfüllen, um sicherzustellen, dass die Payload verschlüsselt oder über die SSL-Transportschicht übertragen wird.

Der Webservice HCMDataLoader wird mit der folgenden Oracle Web Services Manager-Policy gesichert: oracle/wss11_saml_or_username_token_with_message_protection_service_policy.

Auf Clientseite können Sie die folgende Oracle Web Services Manager-Policy verwenden:oracle/wss11_username_token_with_message_protection_client_policy.

Um diese Policy verwenden zu können, muss die Nachricht mit einem vom Server bereitgestellten Public Key verschlüsselt werden. Wenn die Nachricht den Server erreicht, kann die Nachricht vom Private Key des Servers entschlüsselt werden. Sie können eine KeyStore erstellen, um das in der Service-WSDL-Datei angegebene Zertifikat zu importieren. Aus Sicherheitsgründen müssen Sie den Benutzer jedoch zur Eingabe des Oracle Cloud HCM-Kennworts auffordern, wenn Sie Ihren Code ausführen.

Sie können eine Eigenschaftstextdatei erstellen, die in Ihrem Code geparst werden kann, um auf die Keystore-Informationen zuzugreifen. Beispiel:

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

Bitten Sie den Benutzer um die Oracle Cloud HCM-Zugangsdaten wie folgt:

// 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();

In dem Beispiel ist fusionUserPass eine Variable, mit der das Oracle Cloud HCM-Kennwort des Benutzers gespeichert und dann an den SOAP-Webservice von HCM Data Loader übergeben werden kann.

SOAP-Webservice HCM DataLoader aufrufen

Sie können Daten aus einer ZIP-Datei in Oracle Cloud HCM laden, indem Sie den SOAP-Webservice von HCM Data Loader aus einer Java-Klasse verwenden.

Erstellen Sie zunächst eine ZIP-Datei, und laden Sie sie entweder manuell oder programmgesteuert in den Server WebCenter Content hoch. Anschließend können Sie die Daten mit dem Webservice importAndLoadData laden.

Hinweis:

Die in dieser Lösung bereitgestellten Codebeispiele wurden mit JDK Version 8 zum Aufrufen von Webservices auf Oracle WebLogic Server 12c getestet. Zur Verwendung mit anderen JDK- und Oracle WebLogic Server-Versionen testen Sie den Code mit Librarys, die für die gewünschten Versionen spezifisch sind.

  1. Erstellen Sie eine Clientklasse im Ordner: /com/oracle/xmlns/apps/hcm/common/dataloader/core/dataloaderintegrationservice/.
    Um die Klasse zu generieren, benötigen Sie die folgende JAR-Datei:
    • Für WebLogic Server 11g: ws.api_1.1.0.0.jar
    • Für WebLogic Server 12c: wls-api.jar

    Diese JAR-Datei ist im folgenden Speicherort im Installationsordner JDeveloper verfügbar:

    • Für WebLogic Server 11g: $MIDDLEWARE_HOME/modules
    • Für WebLogic Server 12c: $MIDDLEWARE_HOME/wlserver/server/lib
  2. Stellen Sie sicher, dass Sie die folgenden Java-Librarys in Ihren Java-Code importieren:
    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. Erstellen Sie eine Funktion, die ein HCMDataLoader-Objekt zurückgibt, und empfängt url, username, password und keystore als Parameter. Beispiel:
    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. Erstellen Sie im Funktionsbody das SOAP-Webserviceobjekt.
    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. Erstellen Sie ein BindingProvider-Objekt, und legen Sie die zugehörigen Kontextparameter fest.
    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. Laden Sie die Daten mit der Funktion importAndLoadData in Oracle Cloud HCM.
    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. Sie können eine weitere Funktion erstellen, um den Status aus der hochgeladenen Datendatei abzurufen:
    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. Rufen Sie die Statusantwort mit der Funktion getDataSetStatus ab:
    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 gibt ein XML-Objekt zurück, das Details zum Lade- und Importprozess enthält.

  9. Erstellen Sie eine weitere Funktion, um die XML-Antwort aus dem Aufruf getDataSetStatus zu parsen.
    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. Nachdem der Java-Code abgeschlossen ist, kompilieren Sie ihn mit dem javac-Befehl:
    • Für WebLogic Server 11g:
      javac -classpath path of the folder where with generated JAX-WS files;location of ws.api_1.1.0.0.jar HCMDataLoaderServiceSoapHttpPortClient.java
    • Für WebLogic Server 12c:
      javac -classpath path of the folder where with generated JAX-WS files;location of wls-api.jar HCMDataLoaderServiceSoapHttpPortClient.java
  11. Führen Sie die Klasse HCMDataLoaderServiceSoapHttpPortClient aus, um den HCM Data Loader Integration Service mit dem Befehl java aufzurufen:
    • Für WebLogic Server 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
    • Für WebLogic Server 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