3 EDQ Webプッシュ通知の構成

EDQ 12.2.1.4.4には、Web通知のサポートが含まれています。この章では、Webプッシュ通知をトリガーするようにEDQを構成する方法について説明します。

この章の内容は次のとおりです。

3.1 Webプッシュ通知の設定および登録

通知はトリガーによって生成されるため、ジョブの開始/停止/エラーおよびその他のイベントについてレポートできます。これらの通知は、ユーザーからの迅速な対応が必要になる場合がある頻度の低いイベントに使用する必要があります。これらの通知は、既存の方法(たとえば、ケース管理割当てなどのより頻度の高いイベントに使用する必要がある電子メール)を置き換えるものではないことに注意してください。

Webプッシュ通知のサポートを有効にするには、次の設定をdirector.propertiesに追加し、サーバーを再起動します:
web.push.enabled = true
web.push.sub     = mailto:systemadminemailaddress

web.push.subプロパティの電子メール・アドレスは、EDQインストールの管理者連絡先を識別します。これは、ブラウザ・プロバイダが問題を特定する場合にのみ使用されます。例:

web.push.sub     = mailto:systemadmins@example.com

このプロパティを設定すると、「Webプッシュ通知の登録」という新しいWebインタフェース・システム権限が使用可能になります。

通知を登録できるすべてのユーザーに対して、この権限を有効にする必要があります。この権限を持つユーザーの場合、「通知の有効化」という新しいオプションが、Launchpadの右上にあるユーザー名のメニューに表示されます。有効なSSL証明書のあるHTTPS接続がEDQで使用されていることを確認します。

「通知の有効化」を選択すると、ブラウザからサブスクリプションがリクエストされます。これがサイトで初めての場合は、ブラウザにより確認が求められます。確認が与えられると、サブスクリプション情報がEDQサーバーに送信され、データベースに永続化されます。

通知を生成するには、EDQサーバーが外部エンドポイントに対してHTTPSコールを行う必要があります。外部の場所に到達するためにプロキシが必要な場合は、Javaプロキシ設定が指定されていることを確認します。プロキシ設定は、コマンドライン設定を使用するか、jvm.propertiesで設定できます。例:

https.proxyHost = proxy.example.com
  
https.proxyPort = 80
http.nonProxyHosts = *.example.com|localhost

3.2 Webプッシュ通知の生成

新しいwebpushライブラリは、スクリプト・トリガーで使用できます。基本的な使用方法は次のとおりです:

addLibrary("webpush")
 
function getPath() {
  return "/job/(start|end)"
}
 
function run(path, id, env, ...) {
  var push = WebPush.create("message")
  WebPush.push(push)
}

通知オブジェクトには次の属性があります:

属性 説明 デフォルト値
title 通知タイトル。 Oracle Enterprise Data Quality
message 通知本文。  
icon 通知アイコン(基準はEDQ Webルート)。 images/logo64.png
image 通知の上部イメージ(基準はEDQ Webルート)。

この属性は、Mozilla FirefoxおよびSafariブラウザではサポートされていません。

 
requireInteraction trueに設定すると、通知は開いたままになり、手動で閉じる必要があります。

この属性は、Mozilla FirefoxおよびSafariブラウザではサポートされていません。

false
usernames ユーザー名フィルタ。  
userids ユーザーIDフィルタ。  
groupnames グループ名フィルタ。  
groupids グループIDフィルタ。  
projectID プロジェクトIDフィルタ。  

例:

function run(path, id, env, ...) {
  var push = WebPush.create("a message")
 
  push.title = "System notification"
  push.icon  = "local/images/logo.png"
 
  WebPush.push(push)
}

通常、通知はすべての登録済サブスクリプションに送信されます。ユーザー、グループおよびプロジェクトIDでサブスクリプションをフィルタできます。フィルタを適用するには、送信前に通知のオプションを設定します。例:

function run(path, id, env, ...) {
  var push = WebPush.create("a message")
 
  push.title      = "Job notification"
  push.icon       = "images/logo.png"
 
  push.usernames  = ["username"]
  push.userids    = [1]
  push.groupnames = ["Administrators"]
  push.groupids   = [1]
  push.projectID  = 1
 
  push.push()
}

ユーザーが、ユーザー名またはIDのいずれかと一致し、かつグループ名またはIDのいずれかと一致し、プロジェクトへのアクセス権を持っている場合、プッシュは続行されます。フィルタ処理は、最初はサブスクリプションを作成したユーザーに適用され、ブラウザからサイトに現在ログインしているユーザー(存在する場合)には適用されません。通知イメージは、タイトルとメッセージの上部に表示されます。

3.3 トリガー・スクリプトの例

次に、ジョブ完了時に実行され、エラー時に通知を送信するトリガー・スクリプトを示します。

addLibrary("jobNotification");
addLibrary("webpush")
 
function getPath() {
  return "/job/end";
}
 
function run(path, id, env, missionbean, map) {
 
  // Report badness
 
  if (map.mission.currentStatus != 'FINISHED') {
    var str       = ""
    var sections  = map.sections;
    var tsections = missionbean.taskSections;
    var nsecs     = tsections.length
 
 
    for (var k = 0; k < nsecs; k++) {
      var sec = tsections[k]
      var tasks = sec.tasks;
      var xs   = sections['section' + k]
 
      for (var t = 0; t < tasks.length; t++) {
        var task = tasks[t]
        var tcx  = xs[task.taskId.taskDetail + ":" + task.taskId.version]
 
        if (tcx != null) {
          var tc = tcx.taskcontext
 
          str += "Phase: " + sec.sectionName + " task: " + task.taskId.taskType + "/" + task.taskId.taskDetail + ": status: " + tc.currentStatus + "\n"
 
          if (tc.currentStatusMessage) {
            str += "Message: " + tc.currentStatusMessage.getMessage() + "\n"
          }
 
          str += "\n"
        }
      }
    }
 
    var push = WebPush.create(str)
 
    push.title     = "Job error"
    push.projectID = missionbean.projectID
 
    WebPush.push(push)
  }
}

次に、スクリプトによって生成される通知の例を示します:
プッシュ通知の例

3.4 Webプッシュ通知用のREST API

システム管理REST APIを使用して、プッシュ通知をトリガーできます。管理者はこれを使用して、緊急停止などの重要なイベントをユーザーに通知できます。プッシュ通知をトリガーするには、次のインタフェースを使用します:

POST http://server/edq/admin/web/push

ユーザーにはシステムの管理権限が必要です。ペイロードは、「Webプッシュ通知の生成」で説明されているスクリプト・プッシュ・オブジェクトと同じ属性を持つJSONオブジェクトです。

例:

{ "title"              : "Sys admin",
  "message"            : "System Admin notification",
  "image"              : "local/agamemnon.jpg",
  "requireInteraction" : true
}