Adaptadores Worklight são o código lado do servidor dos aplicativos implementados no e atendidos pelo Worklight Mobile Application Platform. Os adaptadores conectam o Worklight Server a aplicativos corporativos, como aqueles em execução no WebSphere Message Broker. A sequência a seguir explica a entrega de notificações, começando em um aplicativo do fornecedor e terminando com um aplicativo remoto:
Esta seção explica os arquivos gerados para o adaptador Worklight.
O padrão cria um adaptador Worklight com dois arquivos de configuração. O primeiro arquivo de configuração é o arquivo XML do adaptador. O arquivo XML do adaptador é usado para configurar a conectividade com o Message Broker. O exemplo abaixo mostra o arquivo de configuração XML do adaptador gerado:
<?xml version="1.0" encoding="UTF-8"?> <wl:adapter name="PushAdapter" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wl="http://www.worklight.com/integration" xmlns:http="http://www.worklight.com/integration/http"> <displayName>PushAdapter</displayName> <description>Worklight: push notifications adapter</description> <connectivity> <connectionPolicy xsi:type="http:HTTPConnectionPolicyType"> <protocol>http</protocol> <domain>localhost</domain> <port>7800</port> </connectionPolicy> <loadConstraints maxConcurrentConnectionsPerNode="1" /> </connectivity> </wl:adapter>
Muitos dos valores nesse arquivo XML do adaptador são configurados a partir
de parâmetros padrão (por exemplo, displayName
, domain
e port
).
O padrão também gera um arquivo JavaScript contendo a implementação do adaptador de notificação. A seção chave nesse arquivo gerado está na parte superior onde o adaptador configura a origem de eventos. O nome da origem de eventos deve corresponder ao nome da origem de eventos que o aplicativo remoto assina.
WL.Server.createEventSource({ name : "PushEventSource", onDeviceSubscribe : "deviceSubscribeFunc", onDeviceUnsubscribe : "deviceUnsubscribeFunc", poll : { interval : 30, onPoll: "getNotifications" } });
O esquema XML mostrado abaixo especifica o formato das mensagens de notificação colocadas na fila e retornadas pelo serviço da web.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" xmlns:tns="urn://patterns/worklight" targetNamespace="urn://patterns/worklight"> <xsd:element name="GetNotification"> <xsd:annotation> <xsd:documentation xml:lang="en">Request message to get the next available pending notification.</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element name="AdapterName" type="xsd:string"/> <xsd:element name="EventSource" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="GetNotificationResponse"> <xsd:annotation> <xsd:documentation xml:lang="en">Response message for next available pending notification.</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element name="Notification" type="tns:Notification"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="PutNotification"> <xsd:annotation> <xsd:documentation xml:lang="en">Request message to add a pending notification message.</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element name="Notification" type="tns:Notification"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="PutNotificationResponse"> <xsd:annotation> <xsd:documentation xml:lang="en">Response message for putting a pending notification messages.</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element name="AdapterName" type="xsd:string"/> <xsd:element name="EventSource" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="Payload"> <xsd:annotation> <xsd:documentation xml:lang="en">Application specific data in the notification messages.</xsd:documentation> </xsd:annotation> <xsd:sequence> </xsd:sequence> </xsd:complexType> <xsd:complexType name="Notification"> <xsd:annotation> <xsd:documentation xml:lang="en">Data definition for notification messages.</xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element name="UserId" type="xsd:string"/> <xsd:element minOccurs="0" name="Badge" type="xsd:string"/> <xsd:element minOccurs="0" name="Sound" type="xsd:string"/> <xsd:element minOccurs="0" name="ActivateButtonLabel" type="xsd:string"/> <xsd:element minOccurs="0" name="NotificationText" type="xsd:string"/> <xsd:element minOccurs="0" name="Payload" type="tns:Payload"/> </xsd:sequence> </xsd:complexType> </xsd:schema>
O elemento Payload
é preenchido pelo padrão com nomes de quaisquer campos específicos do aplicativo adicionais.
Uma extração do WSDL de serviço da web da notificação push é mostrada abaixo.
<wsdl:definitions name="Notification" targetNamespace="urn://patterns/worklight" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="urn://patterns/worklight" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <wsdl:types> <xsd:schema targetNamespace="urn://patterns/worklight" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:include schemaLocation="Notification.xsd"/> </xsd:schema> </wsdl:types> <wsdl:message name="GetNotification"> <wsdl:part element="tns:GetNotification" name="GetNotification"/> </wsdl:message> <wsdl:message name="GetNotificationResponse"> <wsdl:part element="tns:GetNotificationResponse" name="GetNotificationResponse"/> </wsdl:message> <wsdl:message name="PutNotification"> <wsdl:part element="tns:PutNotification" name="PutNotification"/> </wsdl:message> <wsdl:message name="PutNotificationResponse"> <wsdl:part element="tns:PutNotificationResponse" name="PutNotificationResponse"/> </wsdl:message> <wsdl:portType name="NotificationPortType"> <wsdl:operation name="GetNotification"> <wsdl:input message="tns:GetNotification"/> <wsdl:output message="tns:GetNotificationResponse"/> </wsdl:operation> <wsdl:operation name="PutNotification"> <wsdl:input message="tns:PutNotification"/> <wsdl:output message="tns:PutNotificationResponse"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="NotificationSOAPBinding" type="tns:NotificationPortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="GetNotification"> <soap:operation soapAction="http://notification/get"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="PutNotification"> <soap:operation soapAction="http://notification/put"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> </wsdl:definitions>
O adaptador gerado por esse padrão usa a operação GetNotification
para
recuperar notificações push pendentes do Message Broker. O serviço da web também fornece
uma operação PutNotification
. Essa operação é para aplicativos do fornecedor
que poderiam preferir enfileirar notificações com o Message Broker chamando um serviço da
web em vez de gravar uma mensagem em uma fila.
Voltar à especificação do padrão Worklight: notificação push do WebSphere MQ