TopicUtilOOB : inclus dans le périmètre
Le script include 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 souhaitez modifier la fonctionnalité par défaut de ce script include, vous devez remplacer les fonctions contenues dans ce script include dans le script include TopicUtil .
Les deux script includes s’exécutent dans l’espace de noms sn_api_notif_mgmt .
Pour en savoir plus sur les 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 au sein de la fonction validateAndInsertTopic , qui effectue également diverses validations sur le contenu.
| Nom | Type | Description |
|---|---|---|
| topicObj | Objet | Objet qui contient les champs à stocker dans l’enregistrement de rubrique. Pour l’implémentation de base, le format de l’objet est le suivant. Si vous modifiez ou étendez la table Rubriques , cet objet doit refléter cette structure. Assurez-vous d’inclure tous les champs obligatoires. |
| 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 devant ê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 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 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. Constantes du script include.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| 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 sur 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 afficher 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 du 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 Rubrique.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Néant |
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 d’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 le script include TopicUtil .
| 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, voici : |
| Type | Description |
|---|---|
| Néant |
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.
| Nom | Type | Description |
|---|---|---|
| nom de rubrique | Chaîne | Nom de la rubrique. |
| Requête d’en-tête | Chaîne | Filtre à appliquer au contenu des propriétés de l’en-tête de l’é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 : Pour plus d’informations, reportez-vous au Guide de l’utilisateur de l’API TMF688 Event Management. |
| 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 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 : 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 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. Transmettez uniquement cette valeur lors de la mise à jour d’une rubrique existante. |
| Type | Description |
|---|---|
| Booléen | Marqueur indiquant si un autre enregistrement de la table Rubrique contient la combinaison de champs spécifiée. Valeurs possibles :
|
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
});