TopicAPIUtilsOOB: Bereichsbezogen

  • Freigeben Version: Xanadu
  • Aktualisiert 1. August 2024
  • 10 Minuten Lesedauer
  • Die TopicAPIUtilsOOB-Skripteinbindung stellt Methoden bereit, die bei der Verarbeitung des Open API- Endpunkts des Ereignismanagement-Themas verwendet werden.

    Wenn Sie die Standardfunktionalität der Event Management Topic Open APIändern möchten, müssen Sie die in dieser Skripteinbindung enthaltenen Funktionen in der Skripteinbindung TopicAPIUtils überschreiben.

    Diese Skripteinbindung wird im Namespace sn_api_notif_mgmt ausgeführt und erfordert die Rolle sn_api_notif_mgmt.event_mgmt_integration.

    TopicAPIUtilsOOB - createTopicHelper(Object topicObject, Array Warnungen)

    Fügt die im Endpunkt „ Offene Ereignismanagement-Thema-API – POST /sn_api_notif_mgmt/topic “ übergebenen Informationen in die Thementabelle [sn_api_notif_mgmt_topic] ein.

    Wenn Sie diesen Einfügeprozess ändern möchten, müssen Sie diese Methode in der Skripteinbindung TopicAPIUtils überschreiben.

    Tabelle : 1. Parameter
    Name Typ Beschreibung
    topicObject Objekt An den Endpunkt Ereignismanagement-Thema – Offene API übergebenes Nutzlastobjekt des Themas.
    Beispiel:
    {
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "externalId": "ext001",
      "namespace": "telecomEvents"
    }

    Das Schema dieses Objekts muss mit dem übereinstimmen, was in „ Constants.SCHEMA.CREATE_TOPIC_SCHEMA “ in der Skripteinbindung sn_api_notif_mgmt.Constants definiert ist.

    Warnungen Array Warnmeldungen, die in der Endpunktantwort Ereignismanagement-Thema – Offene API zurückgegeben werden sollen, wenn die Methode auf ein Problem auf der Ebene „Warnung“ stößt.

    Mit diesem Parameter können Sie anwenderdefinierte Warnmeldungen zu Ihrer Implementierung dieses Endpunkts hinzufügen.

    Wenn keine zusätzlichen Warnmeldungen angezeigt werden, müssen Sie ein leeres Array übergeben.

    Tabelle : 2. Ausgabe
    Typ Beschreibung
    Objekt Antwortobjekt.
    {
      "contentQuery": "String",
      "eventType": "String",
      "externalId": "String",
      "headerQuery": "String",
      "id": "String",
      "name": "String"
    }

    Weitere Informationen zu diesen Parametern finden Sie unter den Rückgabeergebnissen für Ereignismanagement-Thema offen – POST /sn_api_notif_mgmt/topic.

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    processTopicCreation: function(topicObject) {
      try {
        var warnings = [];
    
        var schema = this.getCreateTopicSchema();
        if (!this.isValidCreateTopicPayload(topicObject, schema, warnings)) {
          this._logger.logDebug("Create Topic : validation failed");
          return this.response;
        }
        this.createTopicHelper(topicObject, warnings);
        this._logger.logDebug("Create Topic: Topic created succesfully");
      } catch (ex) {
        this._logger.logErr("Create Topic : Process aborted, error is: " + ex);
        var errorObj = this.apiCoreUtil.getErrorObj(sn_tmt_core.Constants.ERROR_CODES.INTERNAL_ERROR, Constants.MESSAGES.TOPIC_CREATE_ERROR, Constants.MESSAGES.TOPIC_CREATE_ERROR);
        var details = [];
        details.push(this.apiCoreUtil.getErrorDetailsObj(ex.message + '', ''));
        errorObj.details = details;
        this.response.details = errorObj;
      }
    
      return this.response;
    },

    TopicAPIUtilsOOB – getCreateTopicSchema()

    Gibt das definierte Schema für die Nutzlast zurück, die vom Endpunkt „Offene Ereignismanagement-Themen-API – POST /sn_api_notif_mgmt/topic“ zum Validieren der Themennutzlast verwendet wird.

    Wenn Sie das Schema für die Nutzlast des Themas anpassen möchten, müssen Sie das Standardschema für Nutzlast ( Constants.SCHEMA) überschreiben, das sich in der Skripteinbindung sn_api_notif_mgmt.Constants befindet. Der Standardwert dieses Schemas ist:
    CREATE_TOPIC_SCHEMA: "{
      \"title\":\"Topic\",
      \"type\":\"object\",
      \"properties\":{
        \"name\":{
          \"type\":\"string\"
        },
        \"contentQuery\":{
          \"type\":\"string\"
        },
        \"headerQuery\":{
          \"type\":\"string\"
        },
        \"namespace\":{
          \"type\":\"string\"
        }
      },
      \"required\":[\"name\"]
    }"
    Tabelle : 3. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 4. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Schema für die Endpunkt-Payload „Ereignismanagement-Thema – Offene API – POST /sn_api_notif_mgmt/topic“. Verwenden Sie dieses Schema, um das Schema zu validieren, das mit der Methode TopicAPIUtilsOOB - isValidCreateTopicPayload(Object topicObject, Zeichenfolgenschema, Array-Warnungen) an den Endpunkt übergeben wurde.

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    processTopicCreation: function(topicObject) {
      try {
        var warnings = [];
    
        var schema = this.getCreateTopicSchema();
        if (!this.isValidCreateTopicPayload(topicObject, schema, warnings)) {
          this._logger.logDebug("Create Topic : validation failed");
          return this.response;
        }
        this.createTopicHelper(topicObject, warnings);
        this._logger.logDebug("Create Topic: Topic created succesfully");
      } catch (ex) {
        this._logger.logErr("Create Topic : Process aborted, error is: " + ex);
        var errorObj = this.apiCoreUtil.getErrorObj(sn_tmt_core.Constants.ERROR_CODES.INTERNAL_ERROR, Constants.MESSAGES.TOPIC_CREATE_ERROR, Constants.MESSAGES.TOPIC_CREATE_ERROR);
        var details = [];
        details.push(this.apiCoreUtil.getErrorDetailsObj(ex.message + '', ''));
        errorObj.details = details;
        this.response.details = errorObj;
      }
    
      return this.response;
    },

    TopicAPIUtilsOOB - isValidCreateTopicPayload(Object topicObject, Zeichenfolgenschema, Array-Warnungen)

    Validiert die Nutzlast, die an den Endpunkt „Offene Ereignismanagement-Themen-API – POST /sn_api_notif_mgmt/topic“ übergeben wird. Diese Validierung wird für den Anforderungstext und das Schema durchgeführt.

    Wenn Sie den Validierungsprozess für die Nutzlast ändern möchten, müssen Sie diese Methode in der Skripteinbindung TopicAPIUtils überschreiben.

    Tabelle : 5. Parameter
    Name Typ Beschreibung
    topicObject Objekt An den Endpunkt Ereignismanagement-Thema – Offene API übergebenes Nutzlastobjekt des Themas.
    Beispiel:
    {
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "externalId": "ext001",
      "namespace": "telecomEvents"
    }

    Das Schema dieses Objekts muss mit dem übereinstimmen, was in „ Constants.SCHEMA.CREATE_TOPIC_SCHEMA “ in der Skripteinbindung sn_api_notif_mgmt.Constants definiert ist.

    Schema Zeichenfolge Schema, das zum Validieren der Themennutzlast verwendet wird. Verwenden Sie die Methode TopicAPIUtilsOOB – getCreateTopicSchema(), um dieses Schema abzurufen.
    Warnungen Array Warnmeldungen, die in der Endpunktantwort Ereignismanagement-Thema – Offene API zurückgegeben werden sollen, wenn die Methode auf ein Problem auf der Ebene „Warnung“ stößt.

    Mit diesem Parameter können Sie anwenderdefinierte Warnmeldungen zu Ihrer Implementierung dieses Endpunkts hinzufügen.

    Wenn keine zusätzlichen Warnmeldungen angezeigt werden, müssen Sie ein leeres Array übergeben.

    Tabelle : 6. Ergebnisse
    Typ Beschreibung
    Boolean Kennzeichnung, die angibt, ob die im Parameter topicObject übergebene Nutzlast die Schema- und Anforderungstextvalidierungen bestanden hat.
    Gültige Werte:
    • true: Nutzlast ist gültig.
    • false: Nutzlast ist ungültig.

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    processTopicCreation: function(topicObject) {
      try {
        var warnings = [];
    
        var schema = this.getCreateTopicSchema();
        if (!this.isValidCreateTopicPayload(topicObject, schema, warnings)) {
          this._logger.logDebug("Create Topic : validation failed");
          return this.response;
        }
        this.createTopicHelper(topicObject, warnings);
        this._logger.logDebug("Create Topic: Topic created succesfully");
      } catch (ex) {
        this._logger.logErr("Create Topic : Process aborted, error is: " + ex);
        var errorObj = this.apiCoreUtil.getErrorObj(sn_tmt_core.Constants.ERROR_CODES.INTERNAL_ERROR, Constants.MESSAGES.TOPIC_CREATE_ERROR, Constants.MESSAGES.TOPIC_CREATE_ERROR);
        var details = [];
        details.push(this.apiCoreUtil.getErrorDetailsObj(ex.message + '', ''));
        errorObj.details = details;
        this.response.details = errorObj;
      }
    
      return this.response;
    },

    TopicAPIUtilsOOB - präparCreateTopicResponse(Object topicObject, Zeichenfolge topicSysId, Array Warnungen)

    Generiert die Antwort und gibt sie an einen Endpunktaufruf „Event Management Topic Open API - POST /sn_api_notif_mgmt/topic“ zurück.

    Wenn Sie das vom Endpunkt „Event Management Topic Open API - POST /sn_api_notif_mgmt/topic“ zurückgegebene Antwortobjekt anpassen möchten, müssen Sie diese Methode in der Skripteinbindung TopicAPIUtils überschreiben.

    Tabelle : 7. Parameter
    Name Typ Beschreibung
    topicObject Objekt An den Endpunkt Ereignismanagement-Thema – Offene API übergebenes Nutzlastobjekt des Themas.
    Beispiel:
    {
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "externalId": "ext001",
      "namespace": "telecomEvents"
    }

    Das Schema dieses Objekts muss mit dem übereinstimmen, was in „ Constants.SCHEMA.CREATE_TOPIC_SCHEMA “ in der Skripteinbindung sn_api_notif_mgmt.Constants definiert ist.

    topicSysId Zeichenfolge Sys_id des Themas, das als Teil des Aufrufs „Ereignismanagement-Thema – Offene API – POST /sn_api_notif_mgmt/topic“ erstellt wurde. Befindet sich in der Thementabelle [sn_api_notif_mgmt_topic].
    Warnungen Array Warnmeldungen, die in der Endpunktantwort Ereignismanagement-Thema – Offene API zurückgegeben werden sollen, wenn die Methode auf ein Problem auf der Ebene „Warnung“ stößt.

    Mit diesem Parameter können Sie anwenderdefinierte Warnmeldungen zu Ihrer Implementierung dieses Endpunkts hinzufügen.

    Wenn keine zusätzlichen Warnmeldungen angezeigt werden, müssen Sie ein leeres Array übergeben.

    Tabelle : 8. Ergebnisse
    Typ Beschreibung
    Objekt Endpunkt-Antwortobjekt.
    Beispiel:
    
    {
      "externalId": "ext001",
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "namespace": "telecomEvents",
      "id": "7ee9850443c3f550461f99612bb8f223"
    }

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

     createTopicHelper: function(topicObject, warnings) {
      var topicObj = new sn_tmt_core.BaseObject();
      topicObj.setValue('topic_name', topicObject.name);
      if (!gs.nil(topicObject.headerQuery))
        topicObj.setValue('header_query', topicObject.headerQuery);
      if (!gs.nil(topicObject.contentQuery))
        topicObj.setValue('content_query', topicObject.contentQuery);
      if (!gs.nil(topicObject.namespace))
        topicObj.setValue('namespace', topicObject.namespace);
      if (!gs.nil(topicObject.externalId))
        topicObj.setValue('topic_id', topicObject.externalId);
      topicObj.setValue('type', "egress");
      topicObj.setValue('user_created', false);
    
      new TopicUtil().createTopic(topicObj);
    
      // If topic external id is passed by external system, add it in topic id field. This will act as an external id for us.
    
      var topicGr = TopicDAO.getTopicByNameHeaderContentNamespace(topicObject.name, topicObject.headerQuery, topicObject.contentQuery, topicObject.namespace, '');
    
      if (topicGr && topicGr.next())
        var newTopicSysId = topicGr.getValue('sys_id');
    
        this.prepareCreateTopicResponse(topicObject, newTopicSysId, warnings);
        return this.response;
    
    },

    TopicAPIUtilsOOB - processTopicCreation(Object topicObject)

    Verarbeitet die Anforderung, die vom Endpunkt der Ereignismanagement-Themen-Offen-API gestellt wurde.

    Diese Methode ruft die Hilfsmethoden auf, die für das Einfügen von Daten, die Schemavalidierung, die Validierung des Anforderungstexts und die Antwortorchestrierung erforderlich sind. Überschreiben Sie diese Methode, wenn Sie die grundlegende Verarbeitung der Ereignismanagement-Thema offen – POST /sn_api_notif_mgmt/topic -Anforderung anpassen müssen. Andernfalls überschreiben Sie die einzelnen Hilfsmethoden.

    Tabelle : 9. Parameter
    Name Typ Beschreibung
    topicObject Objekt An den Endpunkt Ereignismanagement-Thema – Offene API übergebenes Nutzlastobjekt des Themas.
    Beispiel:
    {
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "externalId": "ext001",
      "namespace": "telecomEvents"
    }

    Das Schema dieses Objekts muss mit dem übereinstimmen, was in „ Constants.SCHEMA.CREATE_TOPIC_SCHEMA “ in der Skripteinbindung sn_api_notif_mgmt.Constants definiert ist.

    Tabelle : 10. Ausgabe
    Typ Beschreibung
    Objekt Endpunkt-Antwortobjekt.
    Beispiel:
    
    {
      "externalId": "ext001",
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "namespace": "telecomEvents",
      "id": "7ee9850443c3f550461f99612bb8f223"
    }

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    try {
      var topicAPIUtils = new TopicAPIUtils();
      var apiResponse = topicAPIUtils.processTopicCreation(request.body.data);
      response.setStatus(apiResponse.status);
      return tsmOpenAPIUtil.responseBuilder(response, apiResponse.details);
    } 

    TopicAPIUtilsOOB - transformCreateTopicResponse(Object topicObject, String topicSysId)

    Bietet die Möglichkeit, dem Antwortobjekt, das an den Endpunkt „Offene Ereignismanagement-Themen-API – POST /sn_api_notif_mgmt/topic“ zurückgegeben wird, anwenderdefinierte Daten hinzuzufügen.

    Um dieses Antwortobjekt anzupassen, überschreiben Sie diese Methode in der Skripteinbindung TopicAPIUtils.

    Tabelle : 11. Parameter
    Name Typ Beschreibung
    topicObject Objekt An den Endpunkt Ereignismanagement-Thema – Offene API übergebenes Nutzlastobjekt des Themas.
    Beispiel:
    {
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "externalId": "ext001",
      "namespace": "telecomEvents"
    }

    Das Schema dieses Objekts muss mit dem übereinstimmen, was in „ Constants.SCHEMA.CREATE_TOPIC_SCHEMA “ in der Skripteinbindung sn_api_notif_mgmt.Constants definiert ist.

    topicSysId Zeichenfolge Sys_id des Themas, das als Teil des Aufrufs „Ereignismanagement-Thema – Offene API – POST /sn_api_notif_mgmt/topic“ erstellt wurde. Befindet sich in der Thementabelle [sn_api_notif_mgmt_topic]. Sie können dem Themenantwortobjekt Informationen aus diesem Datensatz hinzufügen.
    Tabelle : 12. Ergebnisse
    Typ Beschreibung
    Objekt Transformiertes Endpunkt-Antwortobjekt. Dieses Objekt muss TMF688-konform sein.
    Beispiel:
    
    {
      "externalId": "ext001",
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "namespace": "telecomEvents",
      "id": "7ee9850443c3f550461f99612bb8f223"
    }

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    prepareCreateTopicResponse: function(topicObject, topicSysId, warnings) {
      if (!gs.nil(topicSysId)) {
        topicObject.id = topicSysId;
        this.response.status = sn_tmt_core.Constants.STATUS_CODES.CREATED;
        topicObject = this.transformCreateTopicResponse(topicObject, topicSysId); // Customize response payload as per requirement.
        this.response.details = topicObject;
        if (!gs.nil(warnings) && warnings.length > 0) {
          this.response.details.warnings = warnings;
        }
      } else {
        var errorObj = this.apiCoreUtil.getErrorObj(sn_tmt_core.Constants.ERROR_CODES.INTERNAL_ERROR, Constants.MESSAGES.CREATE_TOPIC_ERROR, Constants.MESSAGES.CREATE_TOPIC_ERROR);
        var details = [];
        details.push(this.apiCoreUtil.getErrorDetailsObj(Constants.MESSAGES.CREATE_TOPIC_ERROR, ''));
        errorObj.details = details;
        this.response.details = errorObj;
      }
    },

    Das folgende Codebeispiel zeigt Code zum Überschreiben der Standardfunktionalität dieser Methode.

    transformCreateTopicResponse: function(topicObject, topicSysId) {
      new sn_tmt_core.BaseAPIUtil().removeNulls(topicObject);
    
      // Add custom attributes to the topicObject
      topicObject.origin = “ServiceNow”,
      topicObject.ServiceId= “service001”,
      return topicObject;
    },

    TopicAPIUtilsOOB - validTopicAttributes(Object topicObject, Array Details)

    Überprüft, ob die Kombination aus Themenname, Header-Abfrage, Inhaltsabfrage und Namespace, die in der Nutzlast des Ereignismanagement-Themen-Open-API -Endpunkts übergeben wird, eindeutig ist.

    Der Endpunkt verwendet diese Attributkombinationen, um zu bestimmen, ob das Thema derzeit in der Tabelle „Thema“ [sn_api_notif_mgmt_topic] vorhanden ist.

    Wenn Sie den Validierungsprozess ändern möchten, müssen Sie diese Methode in der Skripteinbindung TopicAPIUtils überschreiben.

    Tabelle : 13. Parameter
    Name Typ Beschreibung
    topicObject Objekt An den Endpunkt Ereignismanagement-Thema – Offene API übergebenes Nutzlastobjekt des Themas.
    Beispiel:
    {
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "externalId": "ext001",
      "namespace": "telecomEvents"
    }

    Das Schema dieses Objekts muss mit dem übereinstimmen, was in „ Constants.SCHEMA.CREATE_TOPIC_SCHEMA “ in der Skripteinbindung sn_api_notif_mgmt.Constants definiert ist.

    details Array Warnmeldungen, die in der Endpunktantwort Ereignismanagement-Thema – Offene API zurückgegeben werden sollen, wenn die Methode auf ein Problem auf der Ebene „Warnung“ stößt.

    Mit diesem Parameter können Sie anwenderdefinierte Warnmeldungen zu Ihrer Implementierung dieses Endpunkts hinzufügen.

    Wenn keine zusätzlichen Warnmeldungen angezeigt werden, müssen Sie ein leeres Array übergeben.

    Tabelle : 14. Ergebnisse
    Typ Beschreibung
    Boolean Kennzeichnung, die angibt, ob die Kombination aus Themenname, Header-Abfrage, Inhaltsabfrage und Namespace, die im Parameter topicObject übergeben wird, eindeutig ist.
    Gültige Werte:
    • true: Parameterkombination ist eindeutig.
    • false: Parameterkombination ist nicht eindeutig.

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    isValidCreateTopicPayload: function(topicObject, schema, warnings) {
      var isValidPayload = true;
      var details = [];
      var validationResults = this.jsonSchemaValidation.validateJSON(topicObject, schema, ''); // Schema validation
      var errorObj = this.apiCoreUtil.getErrorObj(sn_tmt_core.Constants.ERROR_CODES.MISSING_BODY_FIELD, sn_tmt_core.Constants.MESSAGES.MISSING_BODY_FIELD, sn_tmt_core.Constants.MESSAGES.MISSING_BODY_FIELD);
    
      if (validationResults.length > 0) {
        if (validationResults[0].message == Constants.PAYLOAD_MISSING) {
          this._logger.logDebug("isValidCreateTopicPayload: Missing request body, invalid payload");
          errorObj = this.apiCoreUtil.getErrorObj(sn_tmt_core.Constants.ERROR_CODES.MISSING_BODY, sn_tmt_core.Constants.MESSAGES.MISSING_BODY, sn_tmt_core.Constants.MESSAGES.MISSING_BODY);
          details.push(this.apiCoreUtil.getErrorDetailsObj(sn_tmt_core.Constants.MESSAGES.MISSING_BODY, ''));
          errorObj.details = details;
          this.response.details = errorObj;
          return false;
        } else {
          for (var i = 0; i < validationResults.length; i++) {
            var missingFieldMsg = sn_tmt_core.Constants.MESSAGES.MISSING_FIELD_KEY;
            var message = validationResults[i].message;
            var errorMessage = '';
            if (message.indexOf('missing') != -1) {
              var newMessage = this.apiCoreUtil.constructErrorMsg(message, validationResults[i].dataPath);
              errorMessage = missingFieldMsg.replace(/\$key/g, newMessage);
            } else {
              errorMessage = message;
            }
            details.push(this.apiCoreUtil.getErrorDetailsObj(errorMessage, validationResults[i].dataPath));
          }
        }
        isValidPayload = false;
      }
      var isValidTopicExternalId = this.validateTopicExternalId(topicObject, details);
      var isValidTopicAttributes = this.validatateTopicAttributes(topicObject, details);
    
      isValidPayload = isValidPayload && isValidTopicExternalId && isValidTopicAttributes;
        if (!isValidPayload) {
          errorObj.details = details;
          this.response.details = errorObj;
        }
        return isValidPayload;
      },

    TopicAPIUtilsOOB - validTopicExternalId(Objekt topicObject, Array-Details)

    Validiert die externe ID des Themas, die im Anforderungstext des Open API-Endpunkts des Ereignismanagement- Themas übergeben wird.

    In der Basisimplementierung wird nur überprüft, ob die externe ID nicht leer ist. Wenn Sie den Validierungsprozess für die externe ID des Themas ändern möchten, müssen Sie diese Methode in der Skripteinbindung TopicAPIUtils überschreiben. Die übergebene externe ID wird dem Feld „topic_id“ in der Tabelle „Thema“ [sn_api_notif_mgmt_topic] zugeordnet.

    Tabelle : 15. Parameter
    Name Typ Beschreibung
    topicObject Objekt An den Endpunkt Ereignismanagement-Thema – Offene API übergebenes Nutzlastobjekt des Themas.
    Beispiel:
    {
      "name": "HighPriorityTroubleTicket",
      "headerQuery": "eventType=TroubleTicketStatusChangeEvent,TroubleTicketAttributeChangeEvent",
      "contentQuery": "troubleTicket.ticketType=incident&troubleTicket.severity=1",
      "externalId": "ext001",
      "namespace": "telecomEvents"
    }

    Das Schema dieses Objekts muss mit dem übereinstimmen, was in „ Constants.SCHEMA.CREATE_TOPIC_SCHEMA “ in der Skripteinbindung sn_api_notif_mgmt.Constants definiert ist.

    details Array Fehler-/Detailmeldungen, die in der Endpunktantwort Ereignismanagement-Thema – Offene API zurückgegeben werden sollen, wenn die Methode auf ein Problem auf der Ebene „Fehler“ stößt.

    Mit diesem Parameter können Sie Ihrer Implementierung dieses Endpunkts anwenderdefinierte Fehlermeldungen hinzufügen.

    Wenn keine zusätzlichen Fehlermeldungen angezeigt werden, müssen Sie ein leeres Array übergeben.

    Tabelle : 16. Ergebnisse
    Typ Beschreibung
    Boolean Kennzeichnung, die angibt, ob die im Parameter topicObject übergebene externe ID gültig ist.
    Gültige Werte:
    • wahr: Die externe ID ist gültig.
    • „falsch“: Die externe ID ist ungültig.

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    isValidCreateTopicPayload: function(topicObject, schema, warnings) {
      var isValidPayload = true;
      var details = [];
      var validationResults = this.jsonSchemaValidation.validateJSON(topicObject, schema, ''); // Schema validation
      var errorObj = this.apiCoreUtil.getErrorObj(sn_tmt_core.Constants.ERROR_CODES.MISSING_BODY_FIELD, sn_tmt_core.Constants.MESSAGES.MISSING_BODY_FIELD, sn_tmt_core.Constants.MESSAGES.MISSING_BODY_FIELD);
    
      if (validationResults.length > 0) {
        if (validationResults[0].message == Constants.PAYLOAD_MISSING) {
          this._logger.logDebug("isValidCreateTopicPayload: Missing request body, invalid payload");
          errorObj = this.apiCoreUtil.getErrorObj(sn_tmt_core.Constants.ERROR_CODES.MISSING_BODY, sn_tmt_core.Constants.MESSAGES.MISSING_BODY, sn_tmt_core.Constants.MESSAGES.MISSING_BODY);
          details.push(this.apiCoreUtil.getErrorDetailsObj(sn_tmt_core.Constants.MESSAGES.MISSING_BODY, ''));
          errorObj.details = details;
          this.response.details = errorObj;
          return false;
        } else {
          for (var i = 0; i < validationResults.length; i++) {
            var missingFieldMsg = sn_tmt_core.Constants.MESSAGES.MISSING_FIELD_KEY;
            var message = validationResults[i].message;
            var errorMessage = '';
            if (message.indexOf('missing') != -1) {
              var newMessage = this.apiCoreUtil.constructErrorMsg(message, validationResults[i].dataPath);
              errorMessage = missingFieldMsg.replace(/\$key/g, newMessage);
            } else {
              errorMessage = message;
            }
            details.push(this.apiCoreUtil.getErrorDetailsObj(errorMessage, validationResults[i].dataPath));
          }
        }
        isValidPayload = false;
      }
      var isValidTopicExternalId = this.validateTopicExternalId(topicObject, details);
      var isValidTopicAttributes = this.validatateTopicAttributes(topicObject, details);
    
      isValidPayload = isValidPayload && isValidTopicExternalId && isValidTopicAttributes;
        if (!isValidPayload) {
          errorObj.details = details;
          this.response.details = errorObj;
        }
        return isValidPayload;
      },