en pt
  • Sobre nós
    • Quem Somos
    • Competências
    • Clientes
    • Certificados
    • Notícias
    • Blog
    • Parceiros
  • Serviços
    • Soluções CRM & CX
    • Soluções Mobile
    • Outsourcing
    • Nearshore
  • Produtos
    • AZAPP
    • Push Gateway
    • SALESFORCE Kickoff Pack
    • Informa - Business By Data
  • Oportunidades
    • Candidatura e Oportunidades
    • Academia
  • Contactos
  • Sobre nós
    • Quem Somos
    • Competências
    • Clientes
    • Certificados
    • Notícias
    • Blog
    • Parceiros
  • Serviços
    • Soluções CRM & CX
    • Soluções Mobile
    • Outsourcing
    • Nearshore
  • Produtos
    • AZAPP
    • Push Gateway
    • SALESFORCE Kickoff Pack
    • Informa - Business By Data
  • Oportunidades
    • Candidatura e Oportunidades
    • Academia
  • Contactos
en pt
   
Invocação de Web Services a partir de Siebel Open UI
Share
Como invocar um Web Service a partir do Open UI?
  • Contexto
  • Implementação
  • Conclusão

Contexto

Os sistemas de CRM constituem um chapéu abrangente para variadíssimas funcionalidades e serviços que as organizações disponibilizam aos seus agentes, empregados e parceiros. Todos os negócios terão impreterivelmente as suas especificidades e necessidades próprias. As necessidade de negócio definem os objectivos e a implementação materializa a execução dos processos da forma mais rápida e eficiente possível.

Com esses objetivos em mente a integração de sistemas é muitas vezes fundamental e a utilização de Web Services uma solução técnica habitual.

No exemplo deste artigo o cliente pretende anexar um documento PDF gerado na UI do lado do cliente (local) ao contacto Siebel (servidor).

 

Implementação

No exemplo em causa, optámos como solução técnica pela invocação de  um Web Service do lado do cliente que permitisse enviar esse mesmo ficheiro para o servidor, como um anexo.

Na aplicação desenvolvida o utilizador gera o documento e guarda-o localmente. Após a implementação da solução de integração, sempre que o documento é gerado, este é enviado automaticamente em background para o servidor. Para esse efeito, o método do botão, passou a invocar o Web Service que envia o documento para o servidor e o anexa ao contacto.

Abaixo o esquema demonstrativo de como invocar o Web Service no OpenUI.

 

O desenvolvimento foi realizado no Open UI da Applet que permite gerar o documento: no Physical Renderer associado à Applet deteta-se o evento Click associado ao botão e dentro desse método é invocado o Web Service específico.

Para podermos invocar um Web Service a partir de um Physical Renderer, necessitamos de criar alguns objetos/funções. Nomeadamente os passos necessários envolvem:

  1. Criar um objeto XMLHttpRequest:
  2. Para o objeto criado abrir uma instância XMLHttpRequest onde é necessário passar a seguinte informação:
    1. Indicar o método a ser usado: GET ou POST. Neste caso usou-se o método POST.
    2. Indicar o endpoint do Web Service.
    3. Indicar se o endpoint tem credenciais.
    4. Definir o conteúdo do cabeçalho.
    5. Definir o XML que se irá passar quando se fizer o pedido de envio de informação.
  3. Efetuar o pedido ao Web Service de dados.
  4. Obter a resposta do Web Service.

O código de invocação do Web Service deve ser colocado na função ShowUI do Physical Render.

Abaixo um pequeno exemplo do código utilizado:

 

//try to call WebService

var objXMLHttpRequest = CreateXMLHttpRequest();

//Getting the SystemPreference with url/username/pwd                                       

var sysPrefUrl = "MM_SIEBEL_ENVIRONMENT";

var sysPrefUrlRes = GetSystemPreference(sysPrefUrl);

                                               

let sysPrefUser = "MM_PORTLET_USERNAME";

let sysPrefUserRes = GetSystemPreference(sysPrefUser);

                                               

let sysPrefPwd = "MM_PORTLET_PASSWORD";

let sysPrefPwdRes = GetSystemPreference(sysPrefPwd);

 

var urlEndpoint = sysPrefUrlRes + "eai_anon_enu/start.swe?SWEExtSource=SecureWebService&SWEExtCmd=Execute";

                                               

objXMLHttpRequest.open("POST", urlEndpoint, false);

objXMLHttpRequest.withCredentials = false;

objXMLHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");

 

//XML Code from Soap Calling WebService                        

var soapXML = '<?xml version="1.0" encoding="utf-8" ?>'

                     +'<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cus="http://siebel.com/CustomUI" xmlns:mm="http://www.siebel.com/xml/MM%20ANS%20Entity%20Attachment%20Request">'

                     +'<soapenv:Header>'

                     +'<wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/07/secext">'

                     +'<wsse:UsernameToken xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility">'

                     +'<wsse:Username>'+sysPrefUserRes+'</wsse:Username>'

                     +'<wsse:Password Type="wsse:PasswordText">'+sysPrefPwdRes+'</wsse:Password>'

                     +'</wsse:UsernameToken>'

                     +'</wsse:Security>'

                     +'</soapenv:Header>'

                     +'<soapenv:Body>'

                     +'<cus:MM_spcANS_spcAdd_spcAttachment_spcTC_spcWF>'

                     +'<Input_spcMessage>'

                     +'<mm:ListOfMmAnsEntityAttachmentRequest>'

                     +'<mm:MmAnsEntityAttachmentRequest>'             

                     +'<mm:Comments></mm:Comments>'              

                     +'<mm:EntityId>'+IdTCond+'</mm:EntityId>'             

                     +'<mm:FileExtension>PDF</mm:FileExtension>'              

                     +'<mm:FileName>'+filename+'</mm:FileName>'              

                     +'<mm:AttachmentId>'+base64+'</mm:AttachmentId>'

                     +'</mm:MmAnsEntityAttachmentRequest>'

                     +'</mm:ListOfMmAnsEntityAttachmentRequest>'

                     +'</Input_spcMessage>'

                     +'</cus:MM_spcANS_spcAdd_spcAttachment_spcTC_spcWF>'

                     +'</soapenv:Body>'

                     +'</soapenv:Envelope>';

                          

objXMLHttpRequest.send(soapXML);

response = objXMLHttpRequest.responseXML;

…

}

 

Conclusão

A framework de Open UI permite mais sofisticação na utilização de recursos das máquinas locais, incluindo a criação de integrações usando Web Services invocados localmente.

Nota: No exemplo apresentado, a componente de segurança foi implementada mas não se encontra abordada no âmbito deste artigo.

 

#Siebel #WebService #OpenUI #worldIT

Voltar ao Blog
Cofinanced by
WorldIT Consulting Services © 2025Privacy Policy CANAL DE DENÚNCIA
Avenida Da Igreja,nº42 - 7º Esq, 1700-239 Lisboa (+351) 217 933 630 (+351) 968 513 098 info@worldit.pt