ThemenabonnementUtilOOB – Umfang

  • Freigeben Version: Yokohama
  • Aktualisiert 30. Januar 2025
  • 6 Minuten Lesedauer
  • Die ThemenabonnementUtilOOB Die Skripteinbindung bietet Methoden zum Abfragen und Bearbeiten von Datensätzen in der Themenabonnementtabelle [sn_api_notif_mgmt_topic_subscription]. Diese Klasse wird auf der Servicelevel-Ebene ausgeführt und interagiert mit der Klasse „Datenzugriffsobjekt“ (Datenzugriffsobjekt, DAO).

    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 ThemenabonnementUtil Skripteinbindung.

    Beide Skripts enthalten „Ausführen“ in sn_api_notif_mgmt Namespace.

    Weitere Informationen zu Themenabonnements finden Sie unter Handling the external events using Telecommunications API notification.

    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 „Mock“-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._REGISTRATION_PROCESS = „sn_ind_tmf642.initiate_registration_process“;

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

    Innerhalb dieses Registrierungs-Subflows 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 CONSTANTS.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.Constants Skripteinbindung.

    Tabelle : 3. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 4. Rückgaben
    Typ Beschreibung
    Zeichenfolge Name des zu verwendenden Subflows. Für die Demoimplementierung ist dieser Subflow definiert als Constants._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 die Themen, die sich in der Thementabelle [sn_api_notif_mgmt_topic], aber nicht in der Themenabonnementtabelle [sn_api_notif_mgmt_topic_subscription] befinden.

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

    Das folgende Codebeispiel zeigt das Aktualisieren 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 Themenabonnementtabelle [sn_api_notif_mgmt_topic_subscription] mit den Werten aus der falschen Registrierungsantwort eines ausgehenden Themenregistrierungs-Endpunkts.

    Sie können diese Funktion in überschreiben ThemenabonnementUtil 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 der Demo-Registrierung zurückgegeben wird.

    Wenn Sie diese Funktion überschreiben, muss 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 bei erläutert Status_Code = 0 .
    • fehlermeldung: Fehlermeldung, die den Fehler beschreibt, wenn Status_Code nicht 0 oder 1 ist, z. B.: „Ausgabe für Spoke-Anforderungstyp nicht festgelegt, überprüfen Sie den Anforderungs-Adapter-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 Themenabonnementtabelle [sn_api_notif_mgmt_topic_subscription] mit DAO-Einfügung.

    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 Nutzlast, die vom Registrierungs-Subflow zurückgegeben wird.

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