3 EDQ Webプッシュ通知の構成
この章の内容は次のとおりです。
3.1 Webプッシュ通知の設定および登録
通知はトリガーによって生成されるため、ジョブの開始/停止/エラーおよびその他のイベントについてレポートできます。これらの通知は、ユーザーからの迅速な対応が必要になる場合がある頻度の低いイベントに使用する必要があります。これらの通知は、既存の方法(たとえば、ケース管理割当てなどのより頻度の高いイベントに使用する必要がある電子メール)を置き換えるものではないことに注意してください。
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
}