TopicSubscriptionUtilOOB – Umfang

  • Freigeben Version: Zurich
  • Aktualisiert 31. Juli 2025
  • 6 Minuten Lesedauer
  • Die TopicSubscriptionUtilOOB Die Skripteinbindung stellt Methoden zum Abfragen und Bearbeiten von Datensätzen in der Tabelle „Themenabonnement“ [sn_api_notif_mgmt_topic_Subscription] bereit. Diese Klasse wird auf der Service-Ebene ausgeführt und interagiert mit der DAO-Klasse (Data Access Object).

    Diese Funktionen werden aufgerufen, wenn Registrieren Schaltfläche ist im Formular „Themenabonnement“ ausgewählt. Wenn Sie die Standardfunktionalität dieser Skripteinbindung ändern möchten, müssen Sie die Funktionen in dieser Skripteinbindung in überschreiben TopicSubscriptionUtil Skripteinbindung.

    Beide Skripteinbindungen werden in ausgeführt sn_api_notif_mgmt Namespace.

    Weitere Informationen zu Themenabonnements finden Sie unter External event management via Telecommunications API notifications.

    TopicSubscriptionUtilOOB – executeRegistrationSubflow(Zeichenfolge topicSubID)

    Löst einen Spoke-Subflow aus, um das übergebene Themenabonnement auf einem externen System zu registrieren.

    Vor dem Auslösen des Registrierungs-Flows überprüft die Funktion, ob der übergebene Themenabonnementdatensatz eine Rückruf-URL enthält und ob das Thema bereits registriert ist. Wenn diese Prüfungen bestehen, wird ein Demo-Subflow ausgelöst. Dieser Demo-Subflow ist in der Spoke-Auswahl als Adapter definiert und führt einen falschen ausgehenden Registrierungsanruf aus.

    Diese Funktion wird aufgerufen, wenn ein Anwender auswählt Registrieren Schaltfläche im Formular „Themenabonnements“. Der Name des Demo-Subflows ist in definiert Constants.INITIATE_REGISTRATION_PROCESS = „sn_ind_tmf642.initiate_registration_process";

    Sie müssen diese Funktion in überschreiben TopicSubscriptionUtil Skripteinbindung zum Definieren Ihres eigenen anwenderdefinierten Subflows zum Registrieren von Themenabonnements.

    In diesem Registrierungs-Subflow müssen Sie einen REST-Schritt, einen Verbindungsalias oder eine andere Implementierung erstellen, um einen Registrierungs-Endpunkt auf dem externen System aufzurufen, um ein Thema zu registrieren. Dieser Endpunkt muss den Themennamen und die Rückruf-URL zur Registrierung übergeben. Im Gegenzug muss der externe Systemendpunkt die Abonnement-ID zurückgeben, ob die Registrierung erfolgreich war, und die Registrierungsinformationen, die in der Themenabonnementtabelle gespeichert werden sollen. Diese Informationen enthalten normalerweise die Felder Registrierungsstatus, Registrierungsnachricht und Abonnement-ID. Ihr Registrierungs-Subflow sollte dann aufrufen UpdateRegistrationResponse() Methode zum Speichern der Antwortnutzlast in der Themenabonnementtabelle.

    Tabelle : 1. Parameter
    Name Typ Beschreibung
    TopicSubID Zeichenfolge SYS_ID des zu registrierenden Themenabonnementdatensatzes.
    Tabelle : 2. Rückgaben
    Typ Beschreibung
    Keine

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

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

    Gibt den Subflow zurück, der für den Spoke-Auswahl-Subflow-Auslöser zum Registrieren von Themenabonnements verwendet werden soll.

    Normalerweise wird diese Funktion von aufgerufen ExecuteRegistrationSubflow() Funktion. Dieser Subflow ist für die Kontaktaufnahme mit einem externen System und die Registrierung eines Themenabonnements verantwortlich. Der Name des zu verwendenden Subflows ist in definiert KONSTANTEN.INITIATE_REGISTRATION_PROCESS .

    Sie können diese Funktionalität ändern, um den Namen Ihres eigenen Subflows einzubeziehen, indem Sie den Namen des Subflows überschreiben, der in ausgeführt werden soll sn_api_notif_mgmt.Konstanten Skripteinbindung.

    Tabelle : 3. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 4. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Name des zu verwendenden Subflows. Für die Demoimplementierung ist dieser Subflow als definiert Constants.INITIATE_REGISTRATION_PROCESS = „sn_ind_tmf642.initiate_registration_process"; .

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

    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)

    Gibt den Namen des Themas zurück, das der übergebenen sys_ID eines Datensatzes in der Tabelle „Themenabonnement“ [sn_api_notif_mgmt_topic_Subscription] zugeordnet ist.

    Tabelle : 5. Parameter
    Name Typ Beschreibung
    TopicSubRefID Zeichenfolge SYS_ID des Themenabonnementdatensatzes, dessen Themenname zurückgegeben werden soll.

    Tabelle: Themenabonnement [sn_api_notif_mgmt_topic_Subscription]

    Tabelle : 6. Rückgaben
    Typ Beschreibung
    Zeichenfolge Themenname.

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

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

    Gibt die sys_IDs aller nicht registrierten Themen zurück. Nicht registrierte Themen sind Themen, die sich in der Tabelle „Thema“ [sn_api_notif_mgmt_topic], aber nicht in der Tabelle „Themenabonnement“ [sn_api_notif_mgmt_topic_Subscription] befinden.

    Tabelle : 7. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 8. Ergebnisse
    Typ Beschreibung
    Array Liste der sys_IDs der Themendatensätze, die noch nicht registriert wurden.

    Das folgende Codebeispiel zeigt die Aktualisierung dieser Funktion.

     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)

    Aktualisiert den Themenabonnementdatensatz in der Tabelle „Themenabonnement“ [sn_api_notif_mgmt_topic_Subscription] mit den Werten aus der falschen Registrierungsantwort eines ausgehenden Themenregistrierungs-Endpunktaufrufs.

    Sie können diese Funktion in überschreiben TopicSubscriptionUtil Skripteinbindung zum Ändern der Informationen, die im zugehörigen Themenabonnementdatensatz gespeichert sind. Weitere Informationen zum Ausführen des Subflows, der die Registrierungsdetails zurückgibt, finden Sie unter ExecuteRegistrationSubflow() .

    Tabelle : 9. Parameter
    Name Typ Beschreibung
    Registrierungsdetails ​ Objekt Für die Demo-Implementierung ist dies eine Scheinantwort, die vom API-Aufruf für die Demo-Registrierung zurückgegeben wird.

    Wenn Sie diese Funktion überschreiben, sollte die Antwortnutzlast mindestens die folgenden Themenabonnementfelder enthalten:

    • Registration_Status
    • Registration_message
    • subscription_id
    Tabelle : 10. Rückgaben
    Typ Beschreibung
    Fehler Wenn der Anruf erfolgreich ist, wird nichts zurückgegeben. Wenn ein Fehler aufgetreten ist, wird Folgendes zurückgegeben:
    • Status_reason: Von einem Spoke-Aufruf zurückgegeben, der den Grund für den Fehler klärt, wenn Status_Code = 0 .
    • errormessage: Fehlermeldung, die den Fehler beschreibt, wenn Status_Code nicht 0 oder 1 ist, z. B.: „Ausgabe des Spoke-Anforderungstyps nicht festgelegt, überprüfen Sie den Anforderungsadapter-Flow.“ .

    Das folgende Codebeispiel zeigt, wie diese Funktion aktualisiert wird.

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

    Speichert den aktuellen Themenabonnementdatensatz in der Tabelle „Themenabonnement“ [sn_api_notif_mgmt_topic_Subscription] mithilfe von DAO INSERT.

    Normalerweise rufen Sie diese Funktion innerhalb von auf UpdateRegistrationResponse() Funktion.

    Tabelle : 11. Parameter
    Name Typ Beschreibung
    TopicSubObj Objekt Felder, die im zugehörigen Themenabonnementdatensatz aktualisiert werden sollen. Dies ist die vom Registrierungs-Subflow zurückgegebene Nutzlast.

    Zum Beispiel:

    "topicSubObj": {
      "registration_message": "String",
      "registration_status": "String",
      "subscription_id": "String"
    }

    Weitere Informationen finden Sie unter ExecuteRegistrationSubflow() .

    Tabelle : 12. Rückgaben
    Typ Beschreibung
    Zeichenfolge SYS_ID des aktualisierten Themenabonnementdatensatzes.

    Das folgende Codebeispiel zeigt, wie diese Funktion aktualisiert wird.

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

    Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.

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