アラーム管理オープン API 開発者ガイド
アラーム管理オープン API を使用して、イベント [em_event] テーブルのデータを作成および更新します。
この開発者ガイドでは、アラーム管理オープン API を拡張してさまざまなカスタマイズを行う方法について説明します。
アラーム管理オープン API の拡張
アラーム管理オープン API は、スクリプトインクルードを編集することによって拡張できます。
これらのスクリプトインクルードは、変更の結果を理解した上でのみ編集する必要があります。
TMFAlarmAPIConstants:定数と必要なパラメーター情報が含まれています。TMFAlarmAPIUtil:API 要求を処理する関数が含まれています。AlarmAPIProcessorOOB:TMFAlarmAPIUtil 内の関数をサポートするヘルパー関数が含まれています。AlarmAPIProcessor:空のスクリプトインクルードファイル。このファイルを使用して、AlarmAPIProcessorOOB から上書きする関数を定義します。
アラーム管理オープン API を拡張して、次のカスタマイズを行います。
必要なパラメーター
アラーム管理 API は、JSON スキーマを使用して必要なパラメータ情報を保持します。この JSON スキーマは、TMFAlarmAPIConstants スクリプトインクルードで定義されています。これらのスキーマを使用して、要求ペイロードが有効かどうかを検証します。これらのスキーマはスクリプトインクルード内で直接参照されず、AlarmAPIProcessorOOB スクリプトインクルード内の次のメソッドによって返されます。
- getCreateEventSchema:イベントを作成するための検証スキーマを返します。
- getClearEventSchema:イベントアラームをクリアするための検証スキーマを返します。
- getPatchEventSchema:イベントをパッチ適用するための検証スキーマを返します。
既存のスキーマを上書きするには、AlarmAPIProcessor スクリプトインクルードで新しいスキーマを定義し、AlarmAPIProcessorOOB スクリプトインクルードのメソッドを上書きします。
var AlarmAPIProcessor = Class.create();
AlarmAPIProcessor.prototype = Object.extendsObject(AlarmAPIProcessorOOB, {
// Define overriding functions here
// Define getCreateEventSchema here to override OOTB method in AlarmAPIProcessorOOB
getCreateEventSchema: function() {
return JSON.parse(AlarmAPIProcessor.CUSTOMIZED_SCHEMA);
},
type: 'AlarmAPIProcessor'
});
// Define a new schema
AlarmAPIProcessor.CUSTOMIZED_SCHEMA = "{\"title\":\"CreateAlarm\",\"type\":\"object\",
\"properties\":{\"externalAlarmId\":{\"type\":\"string\"},\"alarmType\":{\"type\":\"string\"},
\"perceivedSeverity\":{\"type\":\"string\"},\"probableCause\":{\"type\":\"string\"},
\"alarmedObject\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},
\"href\":{\"type\":\"string\"}},\"required\":[\"id\"]},\"sourceSystemId\":{\"type\":\"string\"}},
\"required\":[\"externalAlarmId\",\"alarmType\",\"perceivedSeverity\",\"probableCause\",
\"alarmedObject\",\"sourceSystemId\"]}";要求本文の検証
要求本文で追加の検証を実行するには、AlarmAPIProcessorOOB スクリプトインクルード の次の関数を上書きします。これらの関数は、 TMFAlarmAPIUtil スクリプトインクルードで指定された関数によって呼び出されます。
カスタム検証を適用するには、AlarmAPIProcessor 内の同じ名前の関数名とパラメーターで、AlarmAPIProcessorOOB ヘルパー関数を上書きします。新しい AlarmAPIProcessor 関数が TMFAlarmAPIUtil によって呼び出され、デフォルトの AlarmAPIProcessorOOB ヘルパー関数を置き換えます。verifyCreateEventPayload():processCreateEvent()によって呼び出されます。verifyClearEventPayload():processClearEvent()によって呼び出されます。verifyPatchEventPayload():processPatchEvent()によって呼び出されます。
この例では、カスタムの AlarmAPIProcessor スクリプトインクルード内の関数が AlarmAPIProcessorOOB のデフォルト関数を上書きして、name 属性の検証を実行します。
var AlarmAPIProcessor = Class.create();
AlarmAPIProcessor.prototype = Object.extendsObject(AlarmAPIProcessorOOB, {
// Define overriding functions here
verifyCreateEventPayload: function(eventPayload, apiResponseProcessor){
// Returning false terminates the POST request
// Make sure to assign error message and reason
if (eventPayload.type != "unique") {
apiResponseProcessor.setMessage("Failed");
apiResponseProcessor.setReason("No reason needed");
return false;
}
},
type: 'AlarmAPIProcessor'
});追加の REST 操作
既存の GET、PATCH、および POST 操作以外の操作を追加するには、アラーム管理オープン API のスクリプト化された REST リソースを追加で作成します 。新しいスクリプト化済み REST リソースのロジックは、既存の操作と一致する必要があります。新しい操作の関数は TMFAlarmAPIUtil で定義します。
フィールドマッピング
レコードを作成したり更新したりする際は、アラーム管理オープン API は要求本文パラメーターをイベントレコードのフィールドにマッピングします。レコードを取得する際には、API はレコードのフィールドを応答オブジェクトの属性にマッピングします。
AlarmAPIProcessorOOB スクリプトインクルードには、PATCH または POST 要求の本文をイベント [em_event] テーブルのレコードにマッピングする次の関数が含まれています。
mapCreateAlarmObjectToEvent()mapClearAlarmObjectToEvent()mapPatchAlarmObjectToEvent()
また、イベントの GlideRecord を GET、PATCH、または POST 要求の JSON 応答オブジェクトにマッピングする次の関数も含まれています。
modifyCreateEventResponse()modifyClearEventResponse()modifyPatchEventResponse()
次の例では、2 つの AlarmAPIProcessor 関数が AlarmAPIProcessorOOB のデフォルト関数を上書きして、 タイプのマッピングを変更し、[重大度] フィールドのマッピングを追加します。
var AlarmAPIProcessor = Class.create();
AlarmAPIProcessor.prototype = Object.extendsObject(AlarmAPIProcessorOOB, {
// Define overriding functions here
// Function name and parameters must be identical to the function it overrides
mapCreateAlarmObjectToEvent: function(eventGr, eventObject){
// Override default mapping for the severity field
eventGr.severity = "High";
},
modifyCreateEventResponse: function(eventGr, eventObject){
// Override default mapping for the type field
eventGr.type = "Customized Event";
},
type: 'AlarmAPIProcessor'
});