TopicUtilOOB : dans le champ d’application

  • Rversion finale: Zurich
  • Mis à jour 31 juil. 2025
  • 7 minutes de lecture
  • L’include de script TopicUtilOOB contient des fonctions qui vous permettent d’interroger et de manipuler des enregistrements dans la table Rubrique [sn_api_notif_mgmt_topic]. Cette classe fonctionne au niveau de la couche de service qui interagit avec la classe DAO (Data Access Object).

    Ces fonctions sont appelées lorsque le bouton Obtenir rubriques est sélectionné dans le formulaire Rubriques. Si vous souhaitez modifier la fonctionnalité par défaut de cet include de script, vous devez remplacer les fonctions contenues dans cet include de script par l’include de script TopicUtil .

    Les deux includes de script s’exécutent dans l’espace de noms sn_api_notif_mgmt .

    Pour plus d’informations sur les rubriques, reportez-vous à la section External event management via Telecommunications API notifications.

    TopicUtilOOB : createTopic(Object, topicObj)

    Crée un enregistrement dans la table Rubrique [sn_api_notif_mgmt_topic] à l’aide de l’insertion DAO.

    En règle générale, vous appellerez cette fonction dans la fonction validateAndInsertTopic qui effectue également diverses validations sur le contenu.

    Tableau 1. Paramètres
    Nom Type Description
    topicObj Objet Objet contenant les champs à stocker dans l’enregistrement de rubrique. Pour l’implémentation de base, l’objet a le format suivant. Si vous modifiez ou agrandissez la table Rubriques, cet objet doit refléter cette structure. Assurez-vous d’inclure tous les champs obligatoires.
    "topicObj": {
      "content_query": "String";
      "description": "String";
      "header_query": "String";
      "namespace": "String";
      "topic_id": "String";
      "topic_name": "String";
      "type": "String";
    }
    Tableau 2. Renvoie
    Type Description
    Chaîne Sys_id de l’enregistrement de rubrique créé.

    L’exemple de code suivant montre comment appeler cette fonction.

    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);
          }
        }
      }
    }

    L’exemple de code suivant montre comment remplacer cette fonction.

    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()

    Renvoie le nom du flux secondaire à appeler pour obtenir des rubriques à partir d’un système externe.

    Généralement, cette fonction est appelée à partir de la fonction triggerSubflow( ). Ce flux secondaire est chargé de contacter un système externe et d’obtenir tous les enregistrements de rubriques qui doivent être insérés dans la table Rubriques [sn_api_notif_mgmt_topic].

    Le nom du flux secondaire est défini dans Constants.GET_TOPICS_SUBFLOW. Pour l’implémentation de la démonstration, ce flux secondaire est sn_ind_tmf642.event_alarm_notifications_api et génère une réponse de simulation (n’appelle pas de système externe) pour afficher le traitement de bout en bout.

    Vous pouvez modifier cette fonctionnalité pour inclure le nom de votre propre flux secondaire en remplaçant le nom du flux secondaire à exécuter dans le sn_api_notif_mgmt. Include de script des constantes .

    Tableau 3. Paramètres
    Nom Type Description
    Aucun
    Tableau 4. Renvoie
    Type Description
    Chaîne Nom du flux secondaire à utiliser pour obtenir des rubriques à partir d’un système externe.

    L’exemple de code suivant montre comment remplacer cette fonction.

    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()

    Déclenche le flux secondaire chargé d’obtenir les enregistrements de rubriques à partir d’un système externe.

    Cette fonction est appelée lorsque l’utilisateur sélectionne le bouton Obtenir des rubriques sur le formulaire Rubriques.

    Le nom du flux secondaire déclenché est défini dans Constants.GET_TOPICS_SUBFLOW. Pour l’implémentation de la démonstration, ce flux secondaire est sn_ind_tmf642.event_alarm_notifications_api et génère une réponse de simulation (n’appelle pas de système externe) pour afficher le traitement de bout en bout.

    Vous devez modifier cette fonctionnalité pour inclure le nom de votre propre flux secondaire en remplaçant le nom du flux secondaire à exécuter dans la sn_api_notif_mgmt. Include de script des constantes .

    Dans le flux secondaire, vous devez créer une étape REST, un alias de connexion ou une autre implémentation pour fournir une URL de point de terminaison qui récupère les rubriques de votre réseau externe. Lorsque les rubriques sont renvoyées par ce flux secondaire, vous appelez la fonction validateAndInsertTopics pour vérifier la charge utile de la rubrique renvoyée et insérer/mettre à jour les enregistrements dans la table Rubrique.

    Tableau 5. Paramètres
    Nom Type Description
    Aucun
    Tableau 6. Renvoie
    Type Description
    Aucun

    L’exemple de code suivant montre comment remplacer cette fonction.

    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 : validateAndInsertTopics(Array topicsResponse)

    Valide la charge utile de l’enregistrement de rubrique transmise et insère les enregistrements dans la table Rubrique [sn_api_notif_mgmt_topic} contenant ces données.

    La charge utile des rubriques transmises est obtenue à partir du « point de terminaison d’API GET » utilisé pour récupérer les rubriques d’un système externe. Pour plus d’informations sur le déclenchement de cette API GET, consultez triggerSubflow().

    Vous pouvez modifier cette fonctionnalité pour inclure vos propres règles de validation et champs d’enregistrement de rubrique en remplaçant cette fonction dans l’include de script TopicUtil .

    Tableau 7. Paramètres
    Nom Type Description
    rubriquesRéponse Tableau d’objets Charge utile de l’enregistrement de rubrique renvoyée par le système externe via le point de terminaison de l’API GET dans le flux secondaire. Cette charge utile doit correspondre à la structure de la table Rubriques [sn_api_notif_mgmt_topic]. Chaque objet du tableau est une rubrique distincte. Par exemple, dans l’implémentation de démonstration, il s’agit de :
    "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"
      }
    ]
    Tableau 8. Renvoie
    Type Description
    Aucun

    L’exemple de code suivant montre comment remplacer cette fonction.

    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 : verifyTopics(String topicname, String headerQuery, String contentQuery, String namespace, String previousSysId)

    Détermine si un autre enregistrement de rubrique dans la table Rubrique [sn_api_notif_mgmt_topic] contient la combinaison spécifiée de champs comme clé composite, indiquant une rubrique en double.

    Tableau 9. Paramètres
    Nom Type Description
    nom de rubrique Chaîne Nom de la rubrique.
    headerQuery Chaîne Filtre à appliquer au contenu des propriétés de l’en-tête d’événement. Cette requête définit le type d’événements à écouter pour la rubrique associée. Vous pouvez transmettre ce paramètre en tant que requête imbriquée.

    Par exemple : « headerQuery » : « eventType=AlarmCreateNotification&domain=Paris »,

    Pour plus d’informations, reportez-vous au Guide de l’utilisateur de l’API TMF688 Event Management.

    contentQuery Chaîne Filtre à appliquer au contenu de l’événement. Cette requête est un filtre d’événement plus approfondi qui est utilisé pour trouver des informations telles que la gravité de l’événement ou la cause probable. Vous pouvez transmettre ce paramètre en tant que requête imbriquée.

    Par exemple : « contentQuery » : « event.alarm.perceivedSeverity=CRITICAL »,

    Pour plus d’informations, reportez-vous au Guide de l’utilisateur de l’API TMF688 Event Management.

    espace de noms Chaîne Espace de noms dans lequel réside la rubrique associée. Les rubriques ne peuvent pas être dupliquées au sein d’un domaine, mais peuvent être contenues dans plusieurs domaines.
    previousSysId Chaîne Facultatif. Sys_id de la rubrique à mettre à jour. Ne transmettez cette valeur que lors de la mise à jour d’une rubrique existante.
    Tableau 10. Renvoie
    Type Description
    Booléen

    Marqueur indiquant si un autre enregistrement dans la table Rubrique contient la combinaison spécifiée de champs.

    Valeurs possibles :
    • vrai : un autre enregistrement dans la table Rubrique contient la combinaison de champs.
    • false : aucun autre enregistrement de la table Rubrique ne contient la combinaison de champs.

    L’exemple de code suivant montre comment remplacer cette fonction.

    
    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 
    
    });