Статьи

Использование Унифицированного Push-сервера с BPMS

Во время прошедшего саммита Red Hat я работал над сессией с Mobile, Fuse и BPMS. Было очень приятно работать с  Филом СимпсономХавьером Пересом  и   Мэгги Ху,  чтобы создать и представить демо. Ниже я расскажу о настройке и использовании сервера push-уведомлений. Информацию о подаче претензий через мобильное приложение и обзоре судей можно найти в блоге Мэгги на  платформе мобильных приложений Red Hat — подключение к JBoss BPMSuite REST .

Red Hat Summit 2015 — 
Фотография, сделанная Ваней Пернат

Эта статья является частью серии, которую мы собираем для  создания корпоративного приложения за 60 минут с помощью JBoss Middleware  на саммите. Оригинальные слайд-колоды можно найти ниже от Мэгги на Slideshare. Пожалуйста, взгляните на слайды, чтобы получить лучшее представление о сценарии использования, с которым мы работаем.

По сути, мы позволяем людям быстро подавать заявки со своих мобильных устройств с некоторой базовой информацией, когда происходит автокатастрофа. Претензия будет подана в страховую компанию, судья рассмотрит претензию, установит сумму урегулирования и завершит претензию. Затем владелец полиса получит push-уведомление на свое мобильное устройство о расчетной сумме.

Red Hat Summit 2015 — Создайте корпоративное приложение за 60 минут с помощью JBoss Middleware

Что такое Push-уведомление и его преимущества?

Push-уведомление — это сообщение или предупреждение, доставляемое централизованным сервером (локальным или облачным) на устройство. В отличие от push-уведомлений, в которых клиент должен запрашивать информацию с сервера, push-уведомления отправляются с сервера. Как правило, конечный пользователь должен подписаться на получение оповещений; Согласие обычно происходит во время процесса установки, и конечным пользователям предоставляется возможность управлять оповещениями, если они позже передумают.

Важным преимуществом push-уведомлений в мобильных вычислениях является то, что технология не требует открытия определенных приложений на мобильном устройстве для получения сообщения. Это позволяет смартфону получать и отображать оповещения в социальных сетях или текстовых сообщениях, даже если экран устройства заблокирован, а приложение для социальных сетей, которое отправляет уведомление, закрыто.

Red Hat Mobile Unified Push Server (Aerogear) можно рассматривать как посредника, который рассылает push-сообщения различным Push-сетям сторонних производителей. На рисунке ниже представлен небольшой обзор:

  1. Необходимо создать одно PushApplication и хотя бы один вариант мобильной платформы.
  2. Вариантные учетные данные, которые создаются и хранятся сервером UnifiedPush, должны быть добавлены в источник мобильного приложения, чтобы приложение могло зарегистрироваться на сервере UnifiedPush после его установки на мобильные устройства.
  3. Отправка push-сообщения может происходить разными способами: AdminUI может использоваться для отправки (тестового) сообщения зарегистрированным устройствам. Однако в реальном сценарии запрос Push-уведомления запускается из бэкэнд-приложения, которое отправляет свои запросы с помощью API отправителя. Поддерживаются разные SDK для разных языков.
  4. Затем push-запрос преобразуется в специфические для платформы сведения для требуемого варианта Push Network. Панель инструментов AdminUI дает отчет о состоянии, если сообщение отправлено в Push-сеть.
  5. Сервер UnifiedPush не доставляет сообщение напрямую на мобильное устройство. Это делается с помощью соответствующего варианта Push Network. Примечание: в фактической доставке могут быть задержки. Большинство Push-сетей, таких как APN или GCM, не гарантируют доставку сообщений на мобильные устройства.

Настройка единого Push-сервера в Openshift

Унифицированный push-сервер позволяет разработчикам отправлять собственные push-сообщения в службу push-уведомлений Apple (APNS) и Google Cloud Messaging (GCM). Он имеет встроенную консоль администрирования, которая позволяет разработчикам создавать и управлять аспектами push-приложений своих приложений для любой мобильной среды разработки. Включает клиентские SDK (iOS, Android и Cordova) и службу отправителей на основе REST с доступной библиотекой отправителей Java.

В нашем примере мы устанавливаем ИБП в Openshift, а не в помещении, и делаем это через диспетчер приложений Openshift. Сначала нам нужен аккаунт Openshift. Вы можете подписаться на бесплатную учетную запись на 3 небольших механизма.

Далее мы создадим приложение openshift.

Мы будем использовать картридж Unified Push Server 1.0, который также добавит MySQL в приложение. Мы можем принять значения по умолчанию и нажать кнопку «Создать приложение». После создания приложения отображается экран учетных данных с URL-адресами и учетными данными.

Теперь мы можем войти в консоль, чтобы создавать приложения, варианты и т. Д. И отслеживать сообщения. Давайте откроем панель управления для Push-сервера, то есть https://jbossunifiedpushtest2-ossmentor.rhcloud.com/ag-push, и войдем в систему с помощью admin / admin, который откроет главный экран панели мониторинга.

Теперь мы хотим добавить приложение для получения push-уведомлений. Мы нажимаем на приложения и кнопку «Создать приложение». После создания мы можем посмотреть на варианты. Это показывает идентификатор приложения и мастер-секрет для приложения, которое мы будем использовать в нашем примере.

На данный момент мы можем создавать варианты для Android и iOS. Для этого первого примера мы создадим приложение, но не будем использовать варианты и регистрировать устройства. Мы просто покажем уведомление, поступающее на сервер push-уведомлений. Теперь, когда приложение создано, давайте проведем быстрый тест.

Тест отправки сообщения в ИБП

Я использовал Advanced REST Client в Chrome для проверки сообщения. Я настроил проект с URL, авторизацией и типом контента, как показано ниже. Я вставил некоторые образцы данных для уведомления.

После нажатия на кнопку «Отправить» я получаю ответ на задание и могу просмотреть сообщение на панели инструментов.

Теперь давайте перейдем к тому, как мы можем сделать звонок из BPMS.

Отправка уведомления от BPMS на ИБП

Сначала в нашем бизнес-процессе мы добавляем сообщение в задаче сценария в тело ответа на вызов REST.

kcontext.setVariable("requestBody",
"{\"ttl\":3600," 
    + "\"message\":{" 
    + "\"alert\":\"Your Payment Amount is:" + kcontext.getVariable("paymentAmount") + "\"," 
    + "\"action-category\":\"some value\","   
    + "\"sound\":\"default\"," 
    + "\"badge\":2,\"content-available\":true" 
    + "},\"simple-push\":\"version=123\"}");

Затем в нашем бизнес-процессе мы добавили задачу REST, чтобы позвонить в UPS, чтобы отправить сообщение о присуждении претензии. Несколько пунктов, чтобы отметить на Задаче. Первое — это присвоение данных. Имя пользователя — это идентификатор приложения, а пароль — главный секрет, как показано на снимках экрана ниже. Также обратите внимание на URL для API REST домена для UPS в дополнение к базовой авторизации.

Note the App settings, in addition to the Android Variant settings, for Google Cloud messaging. Also in the REST Task we setup the Data Input and Output as indicated below.

One additional item that was required is the work definition as displayed below.

import org.drools.core.process.core.datatype.impl.type.StringDataType; 
import org.drools.core.process.core.datatype.impl.type.ObjectDataType; 
[   
  [     
    "name" : "Email",     
    "parameters" : [       
      "From" : new StringDataType(),       
      "To" : new StringDataType(),       
      "Subject" : new StringDataType(),       
      "Body" : new StringDataType()     
    ],     
    "displayName" : "Email",     
    "icon" : "defaultemailicon.gif"   
  ],   
  [     
    "name" : "Log",     
    "parameters" : [       
      "Message" : new StringDataType()     
    ],     
    "displayName" : "Log",     
    "icon" : "defaultlogicon.gif"   
  ],   
  [     
    "name" : "WebService",     
    "parameters" : [         
      "Url" : new StringDataType(),          
      "Namespace" : new StringDataType(),          
      "Interface" : new StringDataType(),          
      "Operation" : new StringDataType(),          
      "Parameter" : new StringDataType(),          
      "Endpoint" : new StringDataType(),          
      "Mode" : new StringDataType()     
    ],     
    "results" : [         
      "Result" : new ObjectDataType(),     
    ],     
    "displayName" : "WS",     
    "icon" : "defaultservicenodeicon.png"   
  ],   
  [     
    "name" : "Rest",     
    "parameters" : [         
      "Url" : new StringDataType(),         
      "Method" : new StringDataType(),         
      "ConnectTimeout" : new StringDataType(),         
      "ReadTimeout" : new StringDataType(),         
      "Username" : new StringDataType(),         
      "Password" : new StringDataType()     ],     
    "results" : [         
      "Result" : new ObjectDataType(),     ],     
    "displayName" : "REST",     
    "icon" : "defaultservicenodeicon.png"   
  ] 
]

 That was all that is required to send a push notification from BPMS to the Unified Push server.  You can see the messages in the UPS console.

All variants associated with the Application in UPS will receive the notification.  We will cover the Android application in a follow up article to register the device with Google Cloud Messaging (GCM) and receive the notification.

 
References:

http://searchconsumerization.techtarget.com/definition/push-notification

https://aerogear.org/docs/unifiedpush/ups_userguide/index/

https://developers.openshift.com/en/xpaas-unified-push.html