Alimentando aplicativos do iPhone com os serviços do WebSphere Process Server V6.2

Este tutorial mostra como estender serviços novos e existentes no WebSphere® Integration Developer V6.2 para usar o novo JSON por exportação de ligação HTTP, para que se possa expor serviços da Web 2.0 e clientes móveis que consomem JSON. Você criará um aplicativo simples para o iPhone® da Apple® que usará tal serviço. Os desenvolvedores de integração aprenderão como expor serviços a um desenvolvedor para iPhone, enquanto desenvolvedores para iPhone aprenderão como criar clientes de Objective-C para usar esses serviços.

Chris Felix, Software Engineer, IBM

Photo: Chris FelixChris Felix é desenvolvedor de software e Agile ScrumMaster na organização do IBM Software Services para WebSphere no Laboratório da IBM de Toronto, no Canadá. Ele possui experiência no desenvolvimento de aplicativos da Web 2.0 que alavancam serviços da Web fornecidos através do WebSphere Process Server. Ele estava comprometido com um projeto que necessitava de um front-end móvel, permitindo que ele adquirisse experiência no desenvolvimento para iPhone.



29/Mar/2010

Antes de começar

O aplicativo demonstrará um exemplo de uma interação do Apple iPhone com o WebSphere Process Server (doravante Process Server) usando o JSON por exportação de ligações HTTP disponíveis na Versão 6.2. Entretanto, pode-se aplicar os mesmos princípios para conectar um outro cliente ao Process Server. Imagine que a empresa ABC atualmente fornece um serviço interno que permite que aplicativos procurem pelas informações de contato de funcionários. O serviço (OrganizationInterface) é hospedado no WebSphere Process Server V6.2, e, atualmente, possui somente uma exportação de serviço da Web (XML over SOAP). Já que muitos funcionários da ABC são móveis, a companhia pediu que a equipe de desenvolvimento criasse um aplicativo para iPhone para fornecer esse serviço.

Objetivos

Aprenda a:

  • Estender serviços do WebSphere Integration Developer V6.2 para incluir um novo JSON por exportação de ligações HTTP.
  • Criar um proxy de serviço Objective-C para o JSON por exportação de ligações HTTP.

Pré-requisitos

O tutorial a seguir tem como alvo dois tipos de recursos de desenvolvimento:

  • Um desenvolvedor de integração do WebSphere Process Server.
  • Um desenvolvedor de aplicativos para iPhone.

Função do desenvolvedor de integração

  • Familiarizado com o uso do WebSphere Integration Developer V6.2 para criar módulos de integração.
  • Importou a seguinte área de trabalho fornecida no arquivo Incomplete_iPhoneServicesModule.zip.

Função do desenvolvedor para iPhone

  • Familiarizado com Objective-C.
  • Instalou o iPhone SDK 3.0 da Apple, ou superior.
  • Familiarizado com o desenvolvimento de aplicativos para iPhone.
  • Importou o seguinte projeto para o XCode fornecido no arquivo Incomplete_iPhoneApp.zip.

Requisitos do Sistema

Para o desenvolvedor de integração:

  • Um PC executando o Windows® XP
  • IBM® WebSphere Integration Developer V6.2

Para o desenvolvedor para iPhone:

  • Um Apple Mac® executando o OS X Versão 10.5.8
  • Xcode Versão 3.1 para o desenvolvimento para iPhone

Duração

  • Para as tarefas do desenvolvedor de integração: 2 horas
  • Para as tarefas do desenvolvedor para iPhone: 1 hora

Arquivos para download

Este tutorial fornece os seguintes arquivos para download:


Tarefas do desenvolvedor de integração

Já que os aplicativos para iPhone normalmente transferem dados pela redes de celulares, a carga útil da mensagem deve ser a menor possível. Por essa razão, desencorajamos o uso de mensagens XML e encorajamos o uso de JSON por HTTP. O uso do novo JSON por ligação HTTP no WebSphere Integration Developer, expondo tal serviço é simples. Nesta seção, modificaremos o iPhoneServicesModule fornecido para fornecer um JSON por ligação HTTP para OrganizationInterface.

Crie o JSON por ligação HTTP

  1. Crie uma nova área de trabalho no WebSphere Integration Developer. Importe o arquivo de troca de projetos iPhoneServicesModule em iPhoneServicesModule.zip que você baixou na seção Pré-requisitos do desenvolvedor de integração. Também, ao importar no WebSphere Integration Developer, selecione Other -> Project Interchange. Veja a Figura 1.
  2. Quando estiver importado, abra o diagrama de montagem. O diagrama de montagem contém o componente Java™ OrganizationInterfaceImpl que implementa o OrganizationInterface (Figura 2). A Interface de Organização contém um método, employeeSearch, que faz uma busca em SearchCriteriaBO que resulta em um PageOfEmployeeBO contendo todos os funcionários que correspondem ao critério de procura. A busca real de funcionários é trivial neste tutorial. O código simplesmente resulta em dois registros com o nome do funcionário definido pelo atributo fullName em SearchCriteriaBO. Leve um pouco de tempo para se familiarizar com o módulo.
    Figura 1. iPhoneServicesModule incompleto
    Incomplete iPhoneServicesModule
    Figura 2. Diagrama de montagem incompleto
    Incomplete assembly diagram
  3. Abra o diagrama de montagem.
  4. Clique com o botão direito no componente Java OrganizationInterfaceImpl e selecione Generate Export -> HTTP Binding.
  5. No diálogo que aparecerá:
    1. Altere o caminho do contexto para /OrganizationInterfaceImplMobile.
    2. Pressione o botão Select ao lado do formato de data Padrão.
    3. No diálogo “Data Transformation Configuration”, selecione o UTF8JsonDataHandler dentro da categoria JSON e clique em Finish.
    4. Pressione o botão Select ao lado do seletor de Função.
    5. No diálogo “Function Selector Configuration”, selecione o método HTTP function selector based on URL and HTTP e clique em Finish.
    6. Clique em OK no diálogo “Configure HTTP Export Service”.
  6. Clique na exportação recém gerada e modifique o nome para OrganizationInterfaceMobile.
  7. Salve suas alterações no diagrama de montagem (Figura 3).
  8. Saiba mais sobre os vários seletores de função em Seletores de função HTTP pré-empacotados.
    Figura 3. Diagrama de montagem completo
    Complete Assembly diagram
  9. Clique na exportação OrganizationInterfaceMobile e leve um pouco de tempo para observar suas propriedades na visualização Properties (Figura 4).
    Figura 4. Visualização Properties
    Properties view

Mapeie entradas e saídas de serviços para JSON

Nessa seção, certificaremos que todos os métodos na interface de serviços transportam objetos de negócios (BOs) de entrada e saída como objetos JSON.

  1. Na visualização Properties do OrganizationInterfaceMobile, clique em Advanced configuration.
  2. Você verá um tipo de método GET já definido na guia HTTP Method Settings. Remova o método GET e adicione um método POST em seu lugar. Objetos JSON completos serão enviados como entradas no corpo do POST, ao invés de enviar parâmetros de solicitações em um método GET (Figura 5).
    Figura 5. Configurações do método HTTP
    HTTP Method settings
  3. Vá até a seção “Method Bindings” e clique no único método na interface – employeeSearch.
  4. Observe que o método Native está definido para /OrganizationInterfaceImplMobile/employeeSearch@GET. Remova essa entrada.
  5. Adicione a entrada /OrganizationInterfaceImplMobile/employeeSearch@POST.
  6. Clique na guia Data Serialization e modifique os formatos de dados de entrada e saída para UTF8JsonDataHandler selecionando UTF8JsonHandler dentro da categoria JSON no diálogo “Data Transformation Configuration”. Isso define o formato de entrada e saída BO como JSON. Essa etapa é opcional, já que o formato de dados padrão na ligação está definido para UTF8JsonDataHandler.
  7. Clique na guia HTTP Method Settings e remova o tipo de método GET.
  8. Salve suas alterações no diagrama de montagem.

Teste o JSON por exportação HTTP

Nesta seção, testaremos a exportação OrganizationInterfaceMobile criada.

  1. Clique com o botão direito em OrganizationInterfaceMobile no diagrama de montagem e selecione Test component do menu.
  2. A operação employeeSearch está selecionada, e você verá a entrada BO searchCriteriaBO na seção “Initial request parameters”.
  3. Insira os seguintes valores em searchCriteriaBO, como mostra a Figura 6. Os valores exprimem que você deseja encontrar funcionários chamados “John Doe”, e que você quer a primeira página de resultados (por exemplo, zero indexado). Você também não quer ter mais de 10 linhas por página, e os resultados são classificados em ordem crescente por divisão (por exemplo, divisão é a única coluna classificável neste exemplo):
    1. order = ASC
    2. rowsPerPage = 10
    3. pageIndex = 0
    4. fullName = John Doe
    Figura 6. Teste da entrada BO
    Test input BO
  4. Clique em Invoke na seção Events e clique no botão Continue - o círculo verde com o triângulo branco. Isso iniciará o WebSphere Process Server V6.2 no servidor do ambiente de teste do host local e executará o método de serviço employeeSearch. Seja paciente, já que isso pode levar algum tempo.
  5. Observe que o retorno é um PageOfEmployeeBO contendo um array de dois EmployeeBOs (Figura 7).
    Figura 7. Teste a saída BO
    Test output BO

Informações para fornecer ao desenvolvedor para iPhone

Esta seção descreve as informações que o desenvolvedor para iPhone necessitará para criar um cliente de proxy Objective-C para invocar o serviço employeeSearch.

  1. Forneça o arquivo OrganizationInterface.wsdl. Esse arquivo será usado para criar operações de correspondência e também como entrada e saída BOs para o cliente. Nesse caso, uma simples imagem da interface é o suficiente (Figura 8).
    Figura 8. OrganizationInterface
    OrganizationInterface
  2. Forneça detalhes para cada BO. Em nosso caso, possuímos três BOs e imagens de cada serão o suficiente.
    1. SearchCriteriaBO (Figura 9).
      Figura 9. SearchCriteriaBO
      SearchCriteriaBO
    2. EmployeeBO (Figura 10).
      Figura 10. EmployeeBO
      EmployeeBO
    3. PageOfEmployeeBO (Figura 11).
      Figura 11. PageOfEmployeeBO
      PageOfEmployeeBO
  3. Clique na exportação OrganizationInterfaceMobile no diagrama de montagem e vá até a visualização Properties.
  4. Na visualização Properties, clique na seção Summary.
  5. Forneça a tabela que mapeia o nome do Método para o Terminal (Figura 12).
    Figura 12. URLs dos terminais de serviço
    Service Endpoint URLs
  6. Forneça o endereço do servidor do WebSphere Process Server que o desenvolvedor para iPhone pode usar para invocar o serviço. Por exemplo, o desenvolvedor acaba invocando:
    https://localhost:9445/iPhoneServicesModuleWeb/OrganizationInterfaceImplMobile/
     employeeSearch

    Seu URL pode ser diferente caso você tenha configurado o WebSphere Process Server para usar uma porta diferente.

Tarefas do desenvolvedor para iPhone

Nesta seção, usaremos as informações de definição de serviços fornecidas pelo desenvolvedor de integrações para criar um proxy de serviço Objective-C.

Entendo o iPhoneApp

O projeto iPhoneApp XCode que você baixou na seção Pré-requisitos é um aplicativo simples para iPhone que faz uso de um UISearchDisplayController para fornecer a interface principal com o usuário. A delegação para UISearchDisplayController é iPhoneAppViewController.

  1. Abra o projeto incompleto iPhoneApp XCode baixado na seção Pré-requisitos. Você observará que é uma implementação de software livre de um analisador JSON que já foi incluído. Pode-se baixá-lo em http://code.google.com/p/json-framework/ para outros projetos, se desejar. Note que o projeto não compilará neste momento.
  2. Abra iPhoneAppViewController.m.
  3. Veja a os métodos de delegação da tabela no início do iPhoneAppViewController.m. O UISearchDisplayController contém uma tabela para ser preenchida por uma lista de resultados de busca, e o iPhoneAppViewController.m contém métodos de delegação para preencher a tabela com os registros dos funcionários. Os registros veem de um NSMutableArray chamado employees que contém EmployeeBOs. Um proxy de serviços fornece a lista de funcionários.
  4. Após os métodos da tabela de delegação, você verá um outro método delegado searchBarSearchButtonClicked:searchBar. Esse é o método que é invocado quando um usuário envia uma busca. Ele usa o proxy de serviços OrganizationInterface para invocar o serviço employeeSearch. O serviço é invocado de maneira assíncrona.
  5. Observe que debaixo de searchBarSearchButtonClicked:searchBar há dois métodos de retorno. Um trata de uma chamada bem sucedida do employeeSearch e o outro trata de uma chamada sem sucesso. Se for bem sucedida, o array dos funcionários será atualizado para apontar para a lista de funcionários retornados do employeeSearch. Caso tenha falhado, um UIAlertView é exibido, mostrando que a busca falhou.

Adicione um serviço de base

Nesta seção, adicionaremos uma interface e uma implementação de base para tratar dos detalhes de nível baixo de enviar pedidos assíncronos de HTTP ao terminal de serviço.

  1. Crie um novo grupo sob o grupo Classes, chamado Services.
  2. Clique com o botão direito no grupo Services e selecione Add -> Existing Files.
  3. Navegue até o diretório Classes e adicione BaseService.h e BaseService.m.
  4. Veja o BaseService.m, que implementa um método chamado sendAsyncRequest:
    1. Parâmetros de entrada:
      1. serviceEndpoint: Uma cadeia de caractere representando o URL do terminal para a interface de serviços. Por exemplo:
        https://your_local_test_server_address:port/iPhoneServicesModuleWeb/
         OrganizationInterfaceImplMobile/
      2. toMethod: Uma cadeia de caractere representando a operação ou método para invocar o terminal de serviço (por exemplo, employeeSearch).
      3. businessObject: O objeto de negócios que o método aceita (por exemplo, um SearchCriteriaBO).
      4. delegate: Uma referência a uma classe que implementa métodos success:ofMethod and failure:ofMethod.
    2. O objetivo do método é serializar o businessObject para JSON e postá-lo no toMethod no serviceEndpoint. A biblioteca JSON incluída e o NSMutableURLRequest da plataforma tratarão da mecânica de serializar o BO. Se a chamada do método for bem sucedida (por exemplo, nenhum erro de comunicação e o retorno BO não contém nenhum erro de código), então o método success:ofMethod é invocado na delegação. Caso contrário, o método failure:ofMethod é invocado.
  5. Os métodos restantes em BaseService.m tratam dos detalhes de manipulação das respostas de nível baixo HTTP. Em particular:
    1. O método connection:didFailWithError invoca failure:ofMethod na delegação.
    2. O connectionDidFinishLoading:connection desserializa a resposta JSON em um objeto do dicionário usando a biblioteca JSON, e invoca success:ofMethod (a não ser que a resposta JSON contenha uma falha de serviço, então failure:ofMethod é invocado).

Adicione um objeto de negócios de base

Nesta seção, adicionaremos um objeto de negócios de base que todos os objetos de negócios estenderão.

  1. Crie um grupo sob Classes chamado BusinessObjects.
  2. Clique com o botão direito no grupo BusinessObjects e selecione Add -> Existing Files.
  3. Adicione BaseBO.h e BaseBO.m.
  4. Olhe para o BaseBO.m e veja se ele contém o seguinte:
    1. Attributes: Um mapa que armazenará um objeto JSON.
    2. Constructors/initializers
      1. Construtor padrão para inicializar o BaseBO com um mapa de atributos vazio, tal como init.
      2. Um construtor que aceita um mapa e define atributos para apontar para esse mapa, como initWithDictionary.

Crie assinaturas de métodos BOs

Esta seção descreve o algoritmo geral para a criação de objetos de negócios Objective-C, dadas as informações de definição de serviços fornecidas pelo desenvolvedor de integração e discutidas anteriormente.

  1. Dada a interface de serviço (por exemplo, OrganizationInterface), identifique os métodos que estão ligados ao HTTP por JSON que você gostaria de incluir em um cliente de proxy (por exemplo, employeeSearch).
  2. Para cada método na Etapa 1, identifique o tipo de BO de entrada e de saída (por exemplo, SearchCriteriaBO e PageOfEmployeeBO, respectivamente).
  3. Para cada BO identificado na Etapa 2:
    1. Crie uma interface com o mesmo nome que estada o BaseBO (por exemplo, se o BO na interface de serviço se chama EmployeeBO, então crie uma interface chamada EmployeeBO).
    2. No arquivo da interface, defina coletores e configuradores para cada atributo BO.
    3. No arquivo de implementação, defina os coletores desta maneira:
      1. Para atributos que são tipos simples no Objective-C, como o NSString, retorne o próprio valor. Veja a Listagem 1 para exemplos.
        Listagem 1. Coletor para um tipo simples
        - (NSString*) getFirstName{ 
        return [attributes valueForKey:@”firstName”]; 
          }
      2. Para tipos complexos, retorne um novo BO desse tipo inicializado com o mapa para a chave determinada (Listagem 2).
        Listagem 2. Coletor para um tipo complexo
        - (EmployeeBO*) getEmployeeBO{
        	return [[EmployeeBO alloc] initWithDictionary:
             [attributes objectForKey:@”employeeBO”]];
         }
      3. Para um array de tipos simples, retorne o array.
      4. Para um array de tipos complexos, faça um loop em cada objeto e crie um BA do tipo especificado. Adicione cada BO a um array e retorne esse array.
    4. No arquivo de implementação, defina os configuradores desta maneira:
      1. Para tipos simples, é necessário traduzir o valor para uma Cadeia de caractere e definir o valor no dicionário de atributos (Listagem 3).
        Listagem 3. Configurador para um tipo simples
        -	(void) setFirstName: (NSString*)firstName{ 
        	[attributes setValue:firstName forKey:@”firstName”];
        }
      2. Para tipos complexos, defina o valor da chave para os atributos do BO de entrada (Listagem 4).
        Listagem 4. Configurador para um tipo complexo
        - (void) setEmployeeBO: (EmployeeBO*) employeeBO{
          [attributes setValue: [employeeBO attributes]
        forKey:@”employeeBO”];
                                                }
      3. Para um array de tipos complexos, faça um loop em cada objeto e adicione os atributos de cada em um novo array. Quando estiver pronto, defina o valor da chave para o array construído.

Exemplo

O OrganizationInterface contém o método employeeSearch que toma um SearchCriteriaBO como entrada e retorna um PageOfEmployeeBO como saída. Observando o PageOfEmployeeBO, você verá que ele contém um outro tipo complexo, chamado EmployeeBO. Assim, temos três BOs para criar. Para acelerar, esses BOs já foram criados. Você simplesmente os adicionará a um projeto existente.

  1. Clique com o botão direito no grupo BusinessObjects em iPhoneApp e selecione Add -> Existing Files.
  2. Adicione EmployeeBO.h, EmployeeBO.m, PageOfEmployeeBO.h, PageOfEmployeeBO.m, SearchCriteriaBO.h, e SearchCriteriaBO.m.
  3. Abra qualquer BO e veja como os coletores e configuradores são definidos como descrito acima. Leve algum tempo para observar todos os BOs.

Crie um novo proxy de serviços

A etapa final na criação do cliente é criar um proxy de serviços. O proxy será essencialmente uma classe Objective-C que implementa a interface de serviços. Esta seção descreve o algoritmo para criar um proxy.

  1. Crie uma interface com o mesmo nome como o arquivo de interface de serviços no WebSphere Integration Developer, como OrganizationInterface. A interface deve estender o BaseService.h.
  2. Na interface, define as assinaturas do método para cada método identificado na seção Crie assinaturas de métodos BOs acima (Listagem 5).
    Listagem 5. Assinatura do método EmployeeSearch
    - (void) employeeSearch: (SearchCriteriaBO*)serachCriteriaBO delegate: 
     (id)del;

    Observe que o tipo de retorno de cada método está vazio. A delegação é um apontador para uma classe que implementa os métodos de retorno de chamada de sucesso e falha. Em nosso caso, é iPhoneAppViewController (Listagem 6).
    Listagem 6. Sucesso do retorno de chamada EmployeeSearch
     - (void) employeeSearch_CallbackSuccess:
                                (PageOfEmployeeBO*) pageOfEmployeeBO{ ... }
    Listagem 7. Falha do retorno de chamada EmployeeSearch
    - (void) employeeSearch_CallbackFailure: (NSError*) error{
      ...
    }
  3. Adicione as seguintes definições de método, como mostra a Listagem 8.
    Listagem 8. Definições de método de sucesso e falha
    - (void) success:(NSDictionary*)returnBO ofMethod:(NSString*)mName;
    - (void) failure:(NSError*)error ofMethod:(NSString*)mName;
  4. Crie uma classe de implementação para a interface:
    1. Cada método simplesmente invoca o sendAsyncRequest do BaseService com os parâmetros adequados (Listagem 9).
      Listagem 9. Exemplo de chamada para sendAsyncRequest
      - (void) employeeSearch:(SearchCriteriaBO*)searchCriteriaBO delegate:(
          id)del{
      	callback = del;
      [super sendAsyncRequest:SERVICE_ENDPOINT toMethod:EMPLOYEE_SEARCH 
       businessObject:searchCriteriaBO delegate:self];	
      
      }
  1. Defina o método success:ofMethod para manipular a chamada do método correto CallbackSuccess na delegação.
  2. Defina o método failure:ofMethod para manipular a chamada do método correto CallbackFailure na delegação.

Exemplo

O OrganizationInterface contém um método employeeSearch ao qual deve ser fornecido um proxy. Tal classe de proxy já foi criada e será simplesmente adicionada ao iPhoneApp.

  1. Clique com o botão direito no grupo Services e selecione Add -> Existing Files.
  2. Selecione para adicionar OrganizationInterface.h e OrganizationInterface.m.
  3. Abra OrganizationInterface.m e note a implementação do employeeSearch. O método utiliza uma constante SERVICE_ENDPOINT. Será necessário alterar o valor da constante para que ela corresponda à instância do WebSphere Process Server que está executando o serviço OrganizationInterface. Por exemplo, em nosso ambiente de desenvolvimento, definimos SERVICE_ENDPOINT como https://chrisfel:9445/iPhoneServicesModuleWeb/OrganizationInterfaceImplMobile/.
  4. Construa o iPhoneApp e você não deverá observar erro nenhum.
  5. Leve algum tempo para navegar pelo código OrganizationInterface.m, especialmente os métodos success:ofMethod e failure:ofMethod para entender como os métodos emloyeeSearch_CallbackSuccess e employeeSearch_CallbackFailure no iPhoneAppViewController são invocados.

Testando o iPhoneApp

Nesta seção, executaremos o iPhoneApp no simulador do iPhone. Você verá como uma busca por um nome completo, como John Doe, invoca o serviço de backend de maneira assíncrona e retorna resultados para o iPhoneApp.

  1. Abra o Console Depurador no XCode e clique em Build and Go (Figura 13).
    Figura 13. Console Depurador
    Debugger Console
  2. Digite John Doe na barra de pesquisa (Figura 14).
    Figura 14. Procura por John Doe
    Search on John Doe
  3. Certifique-se de que o ambiente de teste local do WebSphere Process Server no WebSphere Integration Developer está sendo executado e sincronizado (Figura 15).
    Figura 15. Servidor pronto
    Server ready
  4. Limpe a saída do console no Desenvolvedor de Integração.
  5. Volte ao simulador do iPhone e clique em Search.
  6. Observe a atividade de criação de log no console do Process Server (Figura 16).
    Figura 16. Saída do console do WebSphere Process Server
    WebSphere Process Server console output
  7. Você verá uma lista de funcionários cujos nomes correspondem à sua procura no simulador do iPhone (Figura 17).
    Figura 17. Resultados da procura
    Search results
  8. Clique em um dos nomes e note que os detalhes EmployeeBO estão preenchidos na interface com o usuário (Figura 18).
    Figura 18. Detalhes do registro do funcionário
    Employee record detail

Conclusão

Este tutorial demonstrou como estender um serviço do WebSphere Process Server V6.2 existente para incluir um JSON por ligação de exportação HTTP. A nova exportação tornou possível que o serviço fosse usado pelos proxies do cliente habilitados com JSON. No nosso caso, o proxy foi escrito em Objective-C e seu destino foi um aplicativo para iPhone. O tutorial também discutiu um algoritmo usado para capturar uma definição de serviço do WebSphere Integration Developer V6.2 e criar um proxy HTTP por JSON em Objective-C. Com o conhecimento adquirido aqui, pode-se facilmente integrar os serviços WebSphere Process Server V6.2 existentes em sua organização aos aplicativos móveis de sua organização.


Downloads

DescriçãoNomeTamanho
Code sampleIncomplete_iPhoneServicesModule.zip13KB
Code sampleComplete_iPhoneServicesModule.zip14KB
Code sampleIncomplete_iPhoneApp.zip993KB
Code sampleComplete_iPhoneApp.zip976KB

Recursos

Aprender

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=WebSphere
ArticleID=478409
ArticleTitle=Alimentando aplicativos do iPhone com os serviços do WebSphere Process Server V6.2
publish-date=03292010