Generischen SOAP-Webservice für WebCenter-Inhalt verwenden, um eine ZIP-Datei für HCM Data Loader hochzuladen

Der Oracle WebCenter Content-Server stellt eine SOAP-Webserviceschnittstelle (GenericSoapPort) bereit, mit der Sie Dateien hochladen können.

Generischen SOAP-Webservice WebCenter-Inhalt mit Inline-Inhalt aufrufen

Sie können Inline-Inhalte zusammen mit Ihren GenericSoapPort-Webserviceaufrufen senden.

Rufen Sie die WSDL-Datei für den Webservice von folgendem Speicherort ab:

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

Der Host ist Ihre Oracle Fusion Cloud-Anwendungen-URL.

Der Hauptteil der Anforderung enthält die folgenden Parameter:

Parameter Bedeutung Kommentar für HCM Data Loader
IdcService

Der aufzurufende Service.

CHECKIN_UNIVERSAL zum Hochladen von Dateien

dDocName

Die Content-ID für das Contentobjekt.

An HcmDataLoader übergebener Wert

dDocAuthor

Der Autor des Contentobjekts (Beitragender).

 
dDocTitle

Der Contentobjekttitel

Der Titel der Datei, wie er in der Import-/Export-UI angezeigt wird

dDocType

Der Contentobjekttyp.

Beleg

dSecurityGroup

Die Sicherheitsgruppe, wie Public oder Secure.

FAFusionImportExport

dDocAccount

Das Konto für das Contentobjekt. Dieser Wert ist nur erforderlich, wenn Accounts aktiviert sind.

hcm$/dataloader$/import$

primaryFile

Der absolute Pfad zum Speicherort der Datei (siehe Server).

 

Der Wert dDocName ist Teil der Antwort und stellt die Inhalts-ID dar, die für die weitere Verarbeitung von HCM Data Loader verwendet werden soll.

Sie können optional einen Umschlag verwenden, wenn Sie die Anforderung senden. Beispiel:

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

Da HCM Data Loader-Dateien jedoch in der Regel groß sind, wird empfohlen, den Webservice mit Message Transmission Optimization Mechanism (MTOM) mit XML-Binary Optimized Packaging (XOP) aufzurufen. Das folgende Anforderungsbeispiel zeigt eine Anforderungs-Payload, die eine HCM Data Loader-ZIP-Datei mit MTOM/XOP hochlädt:

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

WebCenter Content-Tool zum Hochladen des Dokumentübertragungsutilitys

Mit dem Dokumentübertragungsutility WebCenter Content können Sie ZIP-Dateien programmgesteuert auf den Server WebCenter Content hochladen.

Das in oracle.ucm.fa_genericclient_11.1.1.jar enthaltene oracle.ucm.idcws.client.UploadTool ist das bevorzugte generische SOAP-basierte Übertragungsutility. Er erfordert, dass der Oracle JRF-Webservice Bibliotheken unterstützt und JAX/WS über HTTPS für die Kommunikation mit dem WebCenter Content-Server verwendet. Mit oracle.ucm.idcws.client.UploadTool wird eine Datei in WebCenter Content hochgeladen, die aus einer lokalen Datei gestreamt wird.

Das generische SOAP-basierte Übertragungsutility greift über den GenericSoapPort-Webservice (/idcws/GenericSoapPort auf den Server WebCenter Content zu und erfordert, dass der Client eine geeignete UsernameToken-basierte Oracle Web Services Manager-Sicherheitsclient-Policy angibt.

Java Runtime Environment - Anforderungen

Oracle Java 6 SE Release 1.6.0_20 ist die früheste Version der Oracle Java Runtime Environment, die mit den Tools des Dokumentübertragungsutilitys WebCenter Content erfolgreich getestet wurde. Oracle empfiehlt, dass Sie das neueste Java 6 SE- oder Java 7 SE-Release verwenden, um sicherzustellen, dass die neuesten Bugfixes und Sicherheitsupdates eingespielt werden.

Informationen zu Uploadtoolparametern

Wenn Sie oracle.ucm.idcws.client.UploadTool aufrufen, müssen Sie die folgenden Parameter angeben:

  • url: Der WebCenter Content-Server GenericSoapPort-Webservicespeicherort. Beispiel: https://<Your_Oracle_WebCenter_Content_Server_URL>/idcws/GenericSoapPort

  • Policy: Die geeignete UsernameToken-basierte Oracle Web Services Manager-Sicherheitsclient-Policy, die mit der konfigurierten Service-Policy des Servers übereinstimmt, wie die oracle/wss_username_token_over_ssl_client_policy- oder oracle/wss_username_token_client_policy-Policys.

  • Benutzername: Ihr Oracle Cloud HCM-Benutzername.

  • Kennwort: Ihr Oracle Cloud HCM-Kennwort.

  • primaryFile: Der vollqualifizierte Pfad einer lokalen Datei zum Hochladen.

  • dDocAccount: Der Zielsicherheitskonto.

  • dDocTitle: Der Dokumenttitel.

  • dDocName: Verwenden Sie diesen Parameter, wenn Sie eine vorhandene Datei versionieren möchten, indem Sie den Wert dDocName der Datei angeben.

  • Kassenausgang: Führen Sie zuerst den Kassenausgang durch, wenn Sie eine neue Revision hinzufügen. Die Werte für diesen Parameter können true oder false (Standard) sein.

Sie können auch einige optionale Parameter für Debugging- oder Silent-Aufruf-Anwendungsfälle übergeben:

  • Version: Zum Drucken der UploadTool-Revision und -Version.

  • ping: So führen Sie einen PING_SERVER-Test aus, um die Verbindungs-URL und die Zugangsdaten zu validieren.

  • verbose: So konfigurieren Sie eine Verbose-Ausgabe, um vollständige Anforderungs- und Antwortdatenbinder zu protokollieren.

  • quiet: So konfigurieren Sie eine minimale Logausgabe.

  • silent: Zum Deaktivieren von Logmeldungen.

  • log_file_name: Um die Loginformationen an eine andere externe Datei als System.out zu senden.

  • log_file_append: So konfigurieren Sie, ob das Log angehängt oder überschrieben wird.

HCM Data Loader-Dateien programmgesteuert mit dem generischen SOAP-Webservice hochladen

Eine der programmatischen Optionen, die Sie beim Hochladen von HCM Data Loader-ZIP-Dateien haben, ist die Verwendung der generischen SOAP-Webservice-API in der Programmiersprache Java.

  1. Importieren Sie diese Librarys in Ihr Java-Programm:
    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. Erstellen Sie eine Funktion zum Hochladen von Dateien auf den WebCenter Content-Server mit dem generischen SOAP-Webservice:
    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. Erstellen Sie im Hauptteil der Funktion ein List-Objekt, das url, username, password und die Hauptargumente wie die OWSM-Sicherheits-Policy enthält. Beispiel:
    		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. Erstellen Sie ein UploadTool-Objekt, und richten Sie seine anfängliche Konfiguration mit dem uploadArgs-Array ein. Beispiel:
    		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. Fügen Sie die Webserviceparameter hinzu, und stellen Sie die Anforderung:
    	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	

    Wenn die Anforderung ausgeführt wird, wird jeder Eintrag separat verarbeitet. Alle nicht erfolgreichen Elemente, die an ein Logger-Objekt gesendet wurden, werden auf einer Seite angezeigt. Alle erfolgreichen Artikel werden von der Antwort geprüft und auf der anderen Seite protokolliert. Die dDocName (die Inhalts-ID) wird in der Antwort zurückgegeben und gibt an, dass die Datei erfolgreich auf den Server WebCenter Content hochgeladen wurde.