TopicSubscriptionUtilOOB : dans le champ d’application
L’include de script TopicSubscriptionUtilOOB fournit des méthodes pour interroger et manipuler les enregistrements dans la table Abonnement à la rubrique [sn_api_notif_mgmt_topic_subscription]. Cette classe fonctionne au niveau de la couche de service et interagit avec la classe d’objet d’accès aux données (DAO).
Ces fonctions sont appelées lorsque le bouton S’inscrire est sélectionné sur le formulaire Abonnement à une rubrique. 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 dans l’include de script TopicSubscriptionUtil .
Les deux includes de script s’exécutent dans l’espace de noms sn_api_notif_mgmt .
Pour plus d’informations sur les abonnements aux rubriques, reportez-vous à la section External event management via Telecommunications API notifications.
TopicSubscriptionUtilOOB : executeRegistrationSubflow(String topicSubID)
Déclenche un flux secondaire de spoke pour enregistrer l’abonnement à la rubrique transmis sur un système externe.
Avant de déclencher le flux d’inscription, la fonction vérifie si l’enregistrement d’abonnement à la rubrique transmis contient une URL de rappel et si la rubrique est déjà enregistrée. Si ces vérifications réussissent, un flux secondaire de démonstration est déclenché. Ce flux secondaire de démonstration est défini comme un adaptateur dans le sélecteur de spoke et effectue un appel d’inscription sortant « fictif ».
Cette fonction est appelée lorsqu’un utilisateur sélectionne le bouton S’inscrire dans le formulaire Abonnements à la rubrique. Le nom du flux secondaire de démonstration est défini dans Constants.INITIATE_REGISTRATION_PROCESS = « sn_ind_tmf642.initiate_registration_process » ;
Vous devez remplacer cette fonction dans l’include de script TopicSubscriptionUtil pour définir votre propre flux secondaire personnalisé afin d’enregistrer les abonnements à la rubrique.
Dans ce flux secondaire d’inscription, vous devez créer une étape REST, un alias de connexion ou une autre implémentation pour appeler un point de terminaison d’inscription sur le système externe afin d’enregistrer une rubrique. Ce point de terminaison doit transmettre le nom de la rubrique et l’URL de rappel pour enregistrer. En retour, le point de terminaison du système externe doit renvoyer l’ID de l’abonnement, si l’inscription a réussi et les informations d’inscription à stocker dans la table Abonnement à la rubrique. Ces informations comprennent généralement les champs État de l’inscription, Message d’inscription et ID d’abonnement. Votre flux secondaire d’inscription doit alors appeler la méthode updateRegistrationResponse() pour stocker la charge utile de la réponse dans la table Abonnement à la rubrique.
| Nom | Type | Description |
|---|---|---|
| topicSubID | Chaîne | Sys_id de l’enregistrement d’abonnement à la rubrique à enregistrer. |
| Type | Description |
|---|---|
| Aucun |
L’exemple de code suivant montre comment remplacer cette fonction.
var TopicSubscriptionUtil= Class.create();
TopicSubscriptionUtil.prototype =
Object.extendsObject(TopicSubscriptionUtilOOB, {
// Define overriding functions here. Pass the topicSubID of the record to be registered for subscription
executeRegistrationSubflow: function(topicSubID){
var topicSubGr = new TopicSubscriptionUtil(topicSubID).topicSubscriptionDAO.getGlideRecord();
// Customer extensible function to call their defined subflows. Here one can call their own subflow that
// will perform registration by giving an endpoint of the external env and parsing and updating the topic Sub
// record with Registered information.
var registrationFlow = ''; // Pass the subflow name that you want to override here.
var inputs = {};
inputs['topic_subscription_rec'] = topicSubGr;
try {
var flowOp = sn_fd.FlowAPI.getRunner().subflow(registrationFlow).inBackground().withInputs(inputs).run();
} catch (ex) {
gs.addErrorMessage(gs.getMessage(ex + ' Please check the subflow and inputs defined.'));
}
}
type: TopicSubscriptionUtil
});
TopicSubscriptionUtilOOB : getSubFlowName()
Renvoie le flux secondaire à utiliser pour le déclencheur de flux secondaire du sélecteur de spoke afin d’enregistrer les abonnements aux rubriques.
En règle générale, cette fonction est appelée à partir de la fonction executeRegistrationSubflow(). Ce flux secondaire est chargé de contacter un système externe et d’enregistrer un abonnement à une rubrique. Le nom du flux secondaire à utiliser est défini dans Constants.INITIATE_REGISTRATION_PROCESS.
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 .
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Nom du flux secondaire à utiliser. Pour l’implémentation de la démonstration, ce flux secondaire est défini comme Constants.INITIATE_REGISTRATION_PROCESS = « sn_ind_tmf642.initiate_registration_process » ;. |
L’exemple de code suivant montre comment remplacer cette fonction.
var TopicSubscriptionUtil= Class.create();
TopicSubscriptionUtil.prototype =
Object.extendsObject(TopicSubscriptionUtilOOB, {
// Define overriding functions here. Define a constants and return.
// That is your subflow that has the registration process. In current OOB implementation
// it’s a spoke selector implementation.
getSubFlowName: function(){
var subflowName = '' // Pass your subflow name here
return subflowName;
}
type: TopicSubscriptionUtil
});
TopicSubscriptionUtilOOB : getTopicName(topicSubRefID)
Renvoie le nom de la rubrique associée au sys_id transmis d’un enregistrement dans la table Abonnement à la rubrique [sn_api_notif_mgmt_topic_subscription].
| Nom | Type | Description |
|---|---|---|
| topicSubRefID | Chaîne | Sys_id de l’enregistrement d’abonnement à la rubrique dont le nom de rubrique doit être renvoyé. Table : abonnement à la rubrique [sn_api_notif_mgmt_topic_subscription] |
| Type | Description |
|---|---|
| Chaîne | Nom de la rubrique. |
L’exemple de code suivant montre comment remplacer cette fonction.
var TopicSubscriptionUtil = Class.create();
TopicSubscriptionUtil.prototype =
Object.extendsObject(TopicSubscriptionUtilOOB, {
// Define overriding functions here. Pass topicSubId or topicId and get topicname from there.
getTopicName: function(topicSubRefID){
var topicSubGr = new TopicSubscriptionUtil(topicSubRefID).topicSubscriptionDAO.getGlideRecord();
var topicRefID = topicSubGr.getValue('topic');
var topicGr = new TopicUtil(topicRefID).topicDAO.getGlideRecord();
return topicGr.getValue('topic_name');
}
type: TopicSubscriptionUtil
});
TopicSubscriptionUtilOOB : getUnregisteredTopicIds()
Renvoie le sys_ids de toutes les rubriques non enregistrées. Les rubriques non inscrites sont celles qui se trouvent dans la table Rubrique [sn_api_notif_mgmt_topic], mais pas dans la table Abonnement à la rubrique [sn_api_notif_mgmt_topic_subscription].
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Tableau | Liste des sys_ids des enregistrements de rubriques qui n’ont pas encore été enregistrés. |
L’exemple de code suivant montre la mise à jour de cette fonction.
var TopicSubscriptionUtil= Class.create();
TopicSubscriptionUtil.prototype =
Object.extendsObject(TopicSubscriptionUtilOOB, {
// Define overriding functions here. This method is returning all topic IDs
// that are not in the Topic Subscription table. Modify queries here to
// return other topics in Topic Subscription table to return either 'Error' or
// 'UnRegistered' status topics.
getUnregisteredTopicIds: function(){
var topicIds = [];
var topicSubscriptionGr = TopicSubscriptionDAO.getInSubscriptionTopic();
if (!gs.nil(topicSubscriptionGr)) {
while (topicSubscriptionGr.next()) {
topicIds.push(topicSubscriptionGr.getValue('topic'));
}
}
var unregisteredTopicGr = TopicDAO.getUnregisteredTopic(topicIds);
if (!gs.nil(unregisteredTopicGr)) {
var unregisterTopicIds = [];
while (unregisteredTopicGr.next()) {
unregisterTopicIds.push(unregisteredTopicGr.getValue('sys_id'));
}
}
return unregisterTopicIds;
}
type: TopicSubscriptionUtil
});
TopicSubscriptionUtilOOB : updateRegistrationResponse(Object registrationDetails)
Met à jour l’enregistrement d’abonnement à la rubrique dans la table Abonnement à la rubrique [sn_api_notif_mgmt_topic_subscription] avec les valeurs de la réponse d’inscription fictive d’un appel de point de terminaison d’inscription de rubrique sortant.
Vous pouvez remplacer cette fonction dans l’include de script TopicSubscriptionUtil pour modifier les informations stockées dans l’enregistrement d’abonnement à la rubrique associée. Pour plus d’informations sur l’exécution du flux secondaire qui renvoie les détails de l’inscription, consultez executeRegistrationSubflow().
| Nom | Type | Description |
|---|---|---|
| Détails de l’inscription | Objet | Pour l’implémentation de la démonstration, il s’agit d’une réponse fictive renvoyée par l’appel d’API d’inscription de démonstration. Si vous remplacez cette fonction, la charge utile de la réponse doit contenir au moins les champs d’abonnement aux rubriques suivants :
|
| Type | Description |
|---|---|
| Erreur | Si l’appel aboutit, rien n’est retourné. Si une erreur s’est produite, elle renvoie :
|
L’exemple de code suivant montre comment mettre à jour cette fonction.
var TopicSubscriptionUtil= Class.create();
TopicSubscriptionUtil.prototype =
Object.extendsObject(TopicSubscriptionUtilOOB, {
// Define overriding functions here. Modify this method to parse the registration details
// output from a spoke selector flow. You can pass different parameters from the registration response
// and map them to the fields in the Topic Subscription table.
updateRegistrationResponse: function(registrationDetails){
var reqTypeId = Constants.TOPIC_SUB_REQUEST_TYPE;
var outputMap = new sn_appss.IntegrationRequestConfigAPI().outputJSONToMap(reqTypeId, registrationDetails.result);
var updateTopicSubObj = new sn_tmt_core.BaseObject();
if (Constants.REGISTRATION_RESPONSE_SUCCESS_CODES.indexOf(responseCode) != -1) {
updateTopicSubObj.setValue('registration_status', Constants.REGISTRATION_STATUS.REGISTERED);
updateTopicSubObj.setValue('registration_message', outputMap.response_body.message);
updateTopicSubObj.setValue('subscription_id', outputMap.response_body.result.id);
}
}
type: TopicSubscriptionUtil
});
TopicSubscriptionUtilOOB : updateTopicSubscriptionRec(Objet topicSubObj)
Stocke l’enregistrement d’abonnement à la rubrique actuel dans la table Abonnement à la rubrique [sn_api_notif_mgmt_topic_subscription] à l’aide de l’insertion DAO.
En règle générale, vous appellerez cette fonction dans la fonction updateRegistrationResponse().
| Nom | Type | Description |
|---|---|---|
| topicSubObj | Objet | Champs à mettre à jour dans l’enregistrement d’abonnement à la rubrique associée. Il s’agit de la charge utile renvoyée par le flux secondaire d’inscription. Par exemple : Pour plus d’informations, consultez executeRegistrationSubflow(). |
| Type | Description |
|---|---|
| Chaîne | Sys_id de l’enregistrement d’abonnement à la rubrique qui a été mis à jour. |
L’exemple de code suivant montre comment mettre à jour cette fonction.
var TopicSubscriptionUtil= Class.create();
TopicSubscriptionUtil.prototype =
Object.extendsObject(TopicSubscriptionUtilOOB, {
// Define overriding functions here. Pass a topic subscription record object that contains
// the values to update in a record.
updateTopicSubRec: function(topicSubObj){
return this.topicSubscriptionDAO.updateTopicSubscription(topicSubObj);
}
type: TopicSubscriptionUtil
});
L’exemple de code suivant montre comment appeler cette fonction.
if (!gs.nil(outputMap) && outputMap.status_code == '1') {
var responseCode = outputMap.response_body.code;
var topicSubID = registrationDetails.topicSubID;
var topicSubGr = new TopicSubscriptionUtil(topicSubID).topicSubscriptionDAO.getGlideRecord();
var updateTopicSubObj = new sn_tmt_core.BaseObject();
if (Constants.REGISTRATION_RESPONSE_SUCCESS_CODES.indexOf(responseCode) != -1) {
updateTopicSubObj.setValue('registration_status', Constants.REGISTRATION_STATUS.REGISTERED);
updateTopicSubObj.setValue('registration_message', outputMap.response_body.message);
updateTopicSubObj.setValue('subscription_id', outputMap.response_body.result.id);
} else {
updateTopicSubObj.setValue('registration_status', Constants.REGISTRATION_STATUS.ERROR);
updateTopicSubObj.setValue('registration_message', outputMap.response_body.message);
}
new TopicSubscriptionUtil(topicSubGr).updateTopicSubscriptionRec(updateTopicSubObj);
return '';
} else if (!gs.nil(outputMap) && outputMap.status_code == '0') {
return outputMap.status_reason;
} else {
var errorMsg = 'Spoke Request Type output not set, please check request adapter flow';
return errorMsg;
}