TopicUtilOOB – Scoped

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 2024
  • 6 Minuten Lesedauer
  • Die Skripteinbindung TopicUtilOOB enthält Funktionen, mit denen Sie Datensätze in der Thementabelle [sn_api_notif_mgmt_topic] abfragen und bearbeiten können. Diese Klasse wird auf der Serviceebene ausgeführt, die mit der Klasse „Data Access Object“ (DAO) interagiert.

    Diese Funktionen werden aufgerufen, wenn im Formular „Themen“ die Schaltfläche Themen abrufen ausgewählt wird. Wenn Sie die Standardfunktionalität dieser Skripteinbindung ändern möchten, müssen Sie die in dieser Skripteinbindung enthaltenen Funktionen in der TopicUtil-Skripteinbindung überschreiben.

    Beide Skripteinbindungen werden im Namespace sn_api_notif_mgmt ausgeführt.

    Weitere Informationen zu Themen finden Sie unter Handling the external events using Telecommunications API notification.

    TopicUtilOOB – createTopic(Object topicObj)

    Erstellt einen Datensatz in der Thementabelle [sn_api_notif_mgmt_topic] mithilfe der DAO-Einfügung.

    Normalerweise rufen Sie diese Funktion innerhalb der Funktion „ validateAndInsertTopic “ auf, die auch verschiedene Validierungen des Inhalts durchführt.

    Tabelle : 1. Parameter
    Name Typ Beschreibung
    topicObj Objekt Objekt, das die im Themendatensatz zu speichernden Felder enthält. Für die Basisimplementierung hat das Objekt das folgende Format. Wenn Sie die Thementabelle ändern oder erweitern, sollte dieses Objekt diese Struktur widerspiegeln. Stellen Sie sicher, dass Sie alle erforderlichen Felder einbeziehen.
    "topicObj": {
      "content_query": "String";
      "description": "String";
      "header_query": "String";
      "namespace": "String";
      "topic_id": "String";
      "topic_name": "String";
      "type": "String";
    }
    Tabelle : 2. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Sys_id des erstellten Themendatensatzes.

    Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.

    validateAndInsertTopics: function(topicsResponse) {
      if (!gs.nil(topicsResponse)) {
        var topicsArr = topicsResponse.response;
        for (var i = 0; i < topicsArr.length; i++) {
          var name = topicsArr[i].name;
          var headerQuery = topicsArr[i].headerQuery;
          var contentQuery = topicsArr[i].contentQuery;
          var namespace = topicsArr[i].namespace;
          var id = topicsArr[i].id;
          var description = topicsArr[i].description;
          var topicGr = TopicDAO.getTopicByNameHeaderContentNamespace(name, headerQuery, contentQuery, namespace,'');
          if (topicGr && !topicGr.hasNext()) {
            var topicObj = new sn_tmt_core.BaseObject();
            topicObj.setValue('topic_name', name);
            topicObj.setValue('header_query', headerQuery);
            topicObj.setValue('content_query', contentQuery);
            topicObj.setValue('namespace', namespace);
            topicObj.setValue('description', description);
            topicObj.setValue('topic_id', id);
            topicObj.setValue('type', Constants.TYPE_INGRESS);
            this.createTopic(topicObj);
          }
        }
      }
    }

    Das folgende Codebeispiel zeigt, wie diese Funktion überschrieben wird.

    var TopicUtil = Class.create();
    TopicUtil.prototype = 
      Object.extendsObject(TopicUtilOOB, { 
    
      // Define overriding functions here. Pass a topic record object with 
      // values for a single Topic table record.
    
      createTopic: function(topicObj){ 
        return this.topicDAO.create(topicObj); 
      } 
    
      type: TopicUtil 
    
    });

    TopicUtilOOB – getSubFlowName()

    Gibt den Namen des Subflow zurück, der aufgerufen werden soll, um Themen von einem externen System abzurufen.

    Normalerweise wird diese Funktion über die Funktion triggerSubflow() aufgerufen. Dieser Subflow ist für die Kontaktaufnahme mit einem externen System und das Abrufen von Themendatensätzen verantwortlich, die in die Thementabelle [sn_api_notif_mgmt_topic] eingefügt werden müssen.

    Der Name des Subflows ist in Constants.GET_TOPICS_SUBFLOWdefiniert. Für die Demo-Implementierung lautet dieser Subflow sn_ind_tmf642.event_alarm_notifications_api und generiert eine Scheinantwort (ruft kein externes System auf), um die End-to-End-Verarbeitung anzuzeigen.

    Sie können diese Funktionalität so ändern, dass sie den Namen Ihres eigenen Subflows enthält, indem Sie den Namen des Subflows überschreiben, der in der Skripteinbindung sn_api_notif_mgmt.Constants ausgeführt werden soll.

    Tabelle : 3. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 4. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Name des Subflows, der zum Abrufen von Themen aus einem externen System verwendet werden soll.

    Das folgende Codebeispiel zeigt, wie diese Funktion überschrieben wird.

    var TopicUtil= Class.create();  
    TopicUtil.prototype = 
      Object.extendsObject(TopicUtilOOB, { 
    
      // Define overriding function here. In TopicUtilOOB it returns the flow name of a GET outbound API call that mocks the GET call.
      // Override this function to return a flow that returns topics from an external system. 
    
      getSubflowName: function(){ 
        return <flow_name>; // Return the name here
      } 
    
      type: TopicUtil 
    
    });

    TopicUtilOOB – triggerSubflow()

    Löst den Subflow aus, der für das Abrufen von Themendatensätzen aus einem externen System verantwortlich ist.

    Diese Funktion wird aufgerufen, wenn der Benutzer im Formular „Themen“ auf die Schaltfläche Themen abrufen klickt.

    Der Name des ausgelösten Subflows ist in Constants.GET_TOPICS_SUBFLOWdefiniert. Für die Demo-Implementierung lautet dieser Subflow sn_ind_tmf642.event_alarm_notifications_api und generiert eine Scheinantwort (ruft kein externes System auf), um die End-to-End-Verarbeitung anzuzeigen.

    Sie müssen diese Funktion so ändern, dass sie den Namen Ihres eigenen Subflows enthält, indem Sie den Namen des Subflows überschreiben, der in der Skripteinbindung sn_api_notif_mgmt.Constants ausgeführt werden soll.

    Innerhalb des Subflows müssen Sie einen REST-Schritt, einen Verbindungsalias oder eine andere Implementierung erstellen, um eine Endpunkt-URL bereitzustellen, die Themen aus Ihrem externen Netzwerk abruft. Wenn die Themen von diesem Subflow zurückgegeben werden, rufen Sie die Funktion „ validateAndInsertTopics “ auf, um die zurückgegebene Themennutzlast zu überprüfen und die Datensätze in der Thementabelle einzufügen/zu aktualisieren.

    Tabelle : 5. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 6. Ergebnisse
    Typ Beschreibung
    Keine

    Das folgende Codebeispiel zeigt, wie diese Funktion überschrieben wird.

    var TopicUtil = Class.create();
    TopicUtil.prototype = 
      Object.extendsObject(TopicUtilOOB, { 
    
      // Define overriding functions here. Override this function to call your own GET API outbound call subflow.
      triggerSubflow: function(){
        var result =''; // Pass the subflow here 
    
        try {
          var flowOp = sn_fd.FlowAPI.getRunner().subflow(result).inBackground().withInputs().run();
          if (flowOp) { 
            gs.addInfoMessage(gs.getMessage('Please refresh the list to see new Topics.'));
          } 
        } catch (ex) {
          gs.addInfoMessage(gs.getMessage(ex + ' Please check if the trigger is defined and passed correctly')); 
        }
      } 
    
      type: TopicUtil 
    
    });

    TopicUtilOOB – validAndInsertTopics(Array topicResponse)

    Validiert die übergebene Nutzlast des Themendatensatzes und fügt Datensätze in die Thementabelle [sn_api_notif_mgmt_topic] ein, die diese Daten enthält.

    Die übergebene Themennutzlast wird vom „GET-API-Endpunkt“ abgerufen, der zum Abrufen von Themen aus einem externen System verwendet wird. Weitere Informationen zum Auslösen dieser GET-API finden Sie unter triggerSubflow().

    Sie können diese Funktionalität so ändern, dass sie Ihre eigenen Validierungsregeln und Themendatensatzfelder enthält, indem Sie diese Funktion in der TopicUtil-Skripteinbindung überschreiben.

    Tabelle : 7. Parameter
    Name Typ Beschreibung
    ThemenAntwort Array von Objekten Nutzlast des Themendatensatzes, der vom externen System über den GET-API-Endpunkt im Subflow zurückgegeben wird. Diese Nutzlast muss mit der Struktur der Thementabelle [sn_api_notif_mgmt_topic] übereinstimmen. Jedes Objekt innerhalb des Arrays ist ein separates Thema. In der Demoimplementierung lautet dies beispielsweise:
    "topicResponse": [
      {
        "name": "String";
        "header_query": "String";
        "content_query": "String";
        "namespace": "String";
        "id": "String";
        "description": "String"
      },
      {
        "name": "String";
        "header_query": "String";
        "content_query": "String";
        "namespace": "String";
        "id": "String";
        "description": "String"
      }
    ]
    Tabelle : 8. Ergebnisse
    Typ Beschreibung
    Keine

    Das folgende Codebeispiel zeigt, wie diese Funktion überschrieben wird.

    var TopicUtil= Class.create();  
    TopicUtil.prototype = 
      Object.extendsObject(TopicUtilOOB, { 
    
      // Define overriding functions here. Override this function to include custom 
      // validations on topic payload parameters and insert the record into the Topics table. 
    
      validateInsertTopics: function(topicsResponse){ 
    
        // Provide validation on the passed payload. 
        this.createTopic(topicObj);
      } 
    
    type: TopicUtil 
    
    });

    TopicUtilOOB – identifyTopics(String topicname, String headerQuery, String contentQuery, String namespace, String previousSysId)

    Bestimmt, ob ein anderer Themendatensatz in der Thementabelle [sn_api_notif_mgmt_topic] die angegebene Kombination von Feldern als zusammengesetzten Schlüssel enthält, was auf ein doppeltes Thema hinweist.

    Tabelle : 9. Parameter
    Name Typ Beschreibung
    Themenname Zeichenfolge Der Name des Themas.
    headerQuery Zeichenfolge Filter, der auf den Inhalt der Event-Header-Eigenschaften angewendet werden soll. Diese Abfrage definiert den Typ der Events, die für das zugeordnete Thema abgehört werden sollen. Sie können diesen Parameter als geschachtelte Abfrage übergeben.

    Beispiel: "headerQuery": "eventType=AlarmCreateNotification&domain=Paris",

    Weitere Informationen finden Sie im TMF688 Event Management API-Benutzerhandbuch.

    contentQuery Zeichenfolge Filter, der auf den Inhalt des Events angewendet werden soll. Diese Abfrage ist ein tieferer Event-Filter, der verwendet wird, um Informationen wie Event-Schweregrad oder wahrscheinliche Ursache zu finden. Sie können diesen Parameter als geschachtelte Abfrage übergeben.

    Beispiel: "contentQuery": "event.alarm.perceivedSeverity=CRITICAL",

    Weitere Informationen finden Sie im TMF688 Event Management API-Benutzerhandbuch.

    namespace Zeichenfolge Namespace, in dem sich das zugeordnete Thema befindet. Themen können nicht innerhalb einer Domäne dupliziert werden, können jedoch in mehreren Domänen enthalten sein.
    previousSysId Zeichenfolge Optional. Sys_id des zu aktualisierenden Themas. Übergeben Sie diesen Wert nur, wenn Sie ein vorhandenes Thema aktualisieren.
    Tabelle : 10. Ergebnisse
    Typ Beschreibung
    Boolean

    Kennzeichnung, die angibt, ob ein anderer Datensatz in der Thementabelle die angegebene Kombination von Feldern enthält.

    Mögliche Werte:
    • true: Ein anderer Datensatz in der Thementabelle enthält die Kombination von Feldern.
    • false: Kein anderer Datensatz in der Thementabelle enthält die Kombination von Feldern.

    Das folgende Codebeispiel zeigt, wie diese Funktion überschrieben wird.

    
    var TopicUtil= Class.create();
    TopicUtil.prototype = 
      Object.extendsObject(TopicUtilOOB, {
    
      // Define overriding functions here. Override this function to provide custom validations on 
      // the passed parameters and to verify whether an insert is possible or not. 
    
      verifyTopics: function(topicname, headerQuery, contentQuery, namespace, previousSysId) { 
    
        // Write modified code here to get any combination of records present in the current Topic table. 
        // In the current implementation, the function checks if there is a duplicate topic record that contains the
        // passed parameters. 
    
      },
    
    type: TopicUtil 
    
    });