TopicUtilOOB : inclus dans le champ d’application

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 7 minutes de lecture
  • L’include de script TopicUtilOOB contient des fonctions qui vous permettent d’interroger et de manipuler les enregistrements de la table Rubrique [sn_api_notif_mgmt_topic]. Cette classe fonctionne au niveau de la couche de service qui interagit avec la classe d’objet d’accès aux données (DAO).

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

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

    Pour en savoir plus sur ces rubriques, reportez-vous à Handling the external events using Telecommunications API notification.

    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 étendez le tableau 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.

    Typiquement, 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 à insérer 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 démonstration, ce flux secondaire est sn_ind_tmf642.event_alarm_notifications_api et génère une réponse « mock » (n’appelle pas de système externe) pour montrer 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. Constantes script include.

    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 des enregistrements de rubriques à partir d’un système externe.

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

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

    Vous devez modifier cette fonction 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. Constantes script include.

    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 de rubriques.

    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 transmis et insère les enregistrements dans la table de rubrique [sn_api_notif_mgmt_topic} contenant ces données.

    La charge utile des rubriques transmises est obtenue à partir du « point de terminaison de l’API GET » utilisé pour récupérer les rubriques à partir 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
    topicsResponse Tableau d’objets Charge utile de l’enregistrement de rubrique renvoyée par le système externe via le point de terminaison d’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 fait l’objet d’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, consultez le Guide de l’utilisateur de l’API Gestion des événements TMF688.

    contentQuery (en anglais seulement) Chaîne Filtre à appliquer au contenu de l’événement. Cette requête est un filtre d’événement plus profond qui est utilisé pour rechercher des informations telles que la gravité de l’événement ou sa 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, consultez le Guide de l’utilisateur de l’API Gestion des événements TMF688.

    espace de noms Chaîne Espace de noms dans lequel se trouve la rubrique associée. Les rubriques ne peuvent pas être dupliquées dans 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 de la table de rubriques contient la combinaison de champs spécifiée.

    Valeurs possibles :
    • vrai : un autre enregistrement de la table de rubriques contient la combinaison de champs.
    • faux : aucun autre enregistrement de la table de rubriques 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 
    
    });