Use o Serviço Web SOAP Genérico WebCenter Content para Fazer Upload de um Arquivo ZIP do Carregador de Dados do HCM

O servidor do Oracle WebCenter Content expõe uma interface de web service SOAP (GenericSoapPort) que você pode usar para fazer upload de arquivos.

Chamar o Web Service SOAP Genérico WebCenter Content com Conteúdo em Linha

Você pode enviar conteúdo em linha com suas chamadas de serviço Web GenericSoapPort.

Obtenha o arquivo WSDL do serviço Web no seguinte local:

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

O host é o URL do Oracle Fusion Cloud Applications.

O corpo da solicitação inclui os seguintes parâmetros:

Parâmetro Significado Comentário para o Carregador de Dados do HCM
IdcService

O serviço a ser chamado.

CHECKIN_UNIVERSAL para fazer upload de arquivos

dDocName

O ID do Conteúdo do item de conteúdo.

Valor transmitido para HcmDataLoader

dDocAuthor

O autor do item de conteúdo (colaborador).

 
dDocTitle

O título do item de conteúdo.

O título do arquivo como ele aparece na IU de Importação/Exportação

dDocType

O tipo de item de conteúdo.

Documento

dSecurityGroup

O grupo de segurança, como Public ou Secure.

FAFusionImportExport

dDocAccount

A conta do item de conteúdo. Esse valor somente será necessário se as contas estiverem ativadas.

hcm$/dataloader$/import$

primaryFile

O caminho absoluto para o local do arquivo como visto do servidor.

 

O valor dDocName faz parte da resposta e representa o ID do conteúdo a ser usado para processamento adicional do Carregador de Dados do HCM.

Opcionalmente, você pode usar um envelope ao enviar a solicitação, por exemplo:

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

No entanto, como os arquivos do Carregador de Dados do HCM geralmente são grandes, é recomendável chamar o web service usando o Mecanismo de Otimização de Transmissão de Mensagens (MTOM) com o Pacote Otimizado binário XML (XOP). O exemplo de solicitação a seguir mostra um payload de solicitação que faz upload de um arquivo ZIP do Carregador de Dados do HCM com 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--

Sobre a Ferramenta de Upload do Utilitário de Transferência de Documentos WebCenter Content

Você pode usar o Utilitário de Transferência de Documentos WebCenter Content de forma programática para fazer upload de arquivos ZIP para o servidor WebCenter Content.

O oracle.ucm.idcws.client.UploadTool incluído no oracle.ucm.fa_genericclient_11.1.1.jar é o utilitário de transferência baseado em SOAP genérico preferencial. Ele exige as bibliotecas de suporte do serviço Web Oracle JRF e usa JAX/WS por HTTPS para se comunicar com o servidor WebCenter Content. O oracle.ucm.idcws.client.UploadTool é usado para fazer upload de um arquivo para o Conteúdo WebCenter que é transmitido de um arquivo local.

O utilitário de transferência baseado em SOAP genérico acessa o servidor WebCenter Content por meio de seu web service GenericSoapPort (/idcws/GenericSoapPort) e exige que o cliente especifique uma política de cliente de segurança adequada do Oracle Web Services Manager baseada em UsernameToken.

Sobre os Requisitos do Java Runtime Environment

O Oracle Java 6 SE release 1.6.0_20 é a versão mais antiga do Oracle Java Runtime Environment que foi testada com sucesso com as ferramentas do Utilitário de Transferência de Documentos WebCenter Content. A Oracle recomenda que você use a versão mais recente do Java 6 SE ou do Java 7 SE para garantir que você tenha as correções de erros e as atualizações de segurança mais recentes aplicadas.

Sobre os Parâmetros da Ferramenta de Upload

Ao chamar o oracle.ucm.idcws.client.UploadTool, você deve fornecer os seguintes parâmetros:

  • url: O local do serviço Web GenericSoapPort do servidor WebCenter Content, por exemplo: https://<Your_Oracle_WebCenter_Content_Server_URL>/idcws/GenericSoapPort

  • política: A política do cliente de segurança do Oracle Web Services Manager baseada em UsernameToken adequada que corresponde à política de serviço configurada do servidor, como as políticas oracle/wss_username_token_over_ssl_client_policy ou oracle/wss_username_token_client_policy.

  • nome de usuário: seu nome de usuário do Oracle Cloud HCM.

  • senha: sua senha do Oracle Cloud HCM.

  • primaryFile: O caminho totalmente qualificado de um arquivo local para upload.

  • dDocAccount: A conta de segurança de destino.

  • dDocTitle: O título do documento.

  • dDocName: Use esse parâmetro se quiser criar uma versão de um arquivo existente, fornecendo o valor dDocName do arquivo.

  • checkout: Execute a finalização primeiro, se estiver adicionando uma nova revisão. Os valores desse parâmetro podem ser true ou false (padrão).

Você também pode informar alguns parâmetros opcionais para casos de uso de depuração ou chamada silenciosa:

  • versão: para imprimir a revisão e a versão do UploadTool.

  • ping: Para executar um teste PING_SERVER para validar o URL de conexão e as credenciais.

  • verboso: Para configurar uma saída detalhada para registrar binders de dados de solicitação e resposta completos.

  • quiet: Para configurar a saída de log mínima.

  • silencioso: Para desativar mensagens de log.

  • log_file_name: Para enviar as informações de log para um arquivo externo diferente de System.out.

  • log_file_append: Para configurar se o log é anexado versus substituído.

Fazer Upload de Arquivos do Carregador de Dados do HCM Programaticamente Usando o Web Service SOAP Genérico

Uma das opções programáticas que você tem ao fazer upload dos arquivos ZIP do Carregador de Dados do HCM é usar a API de Serviço Web SOAP Genérica usando a linguagem de programação Java.

  1. Importe essas bibliotecas no seu programa 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. Crie uma função para fazer upload de arquivos para o Servidor WebCenter Content usando o web service SOAP Genérico:
    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. No corpo da função, crie um objeto List que conterá url, username, password e os argumentos básicos, como a política de segurança OWSM. Por exemplo:
    		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. Crie um objeto UploadTool e configure sua configuração inicial usando o array uploadArgs. Por exemplo:
    		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. Adicione os parâmetros do web service e faça a solicitação:
    	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 a solicitação está executando cada entrada é processada separadamente. Todos os itens com falha enviados a um objeto logger aparecem de um lado. Todos os itens bem-sucedidos são verificados na resposta e registrados no outro lado. O dDocName, que é o ID de conteúdo, é retornado na resposta e indica que o upload do arquivo foi bem-sucedido para o servidor WebCenter Content.