TopicSubscriptionOOB - Com escopo

  • Versão de lançamento: Zurich
  • Atualizado 31 de jul. de 2025
  • 7 min. de leitura
  • . TopicSubscriptionOOB A inclusão de script fornece métodos para consultar e manipular registros na tabela Assinatura de tópico [sn_api_notif_mgmt_topic_subscription]. Esta classe opera na camada de serviço e interage com a classe DAO (Data Access Object, objeto de acesso a dados).

    Essas funções são chamadas quando Registre-se Está selecionado no formulário Assinatura de tópico. Se você quiser mudar a funcionalidade padrão desta inclusão de script, será necessário substituir as funções contidas nesta inclusão de script no TopicSubscriptionUtil inclusão de script.

    Ambas as inclusões de script são executadas no sn_api_notif_mgmt namespace.

    Para obter informações adicionais sobre assinaturas de tópicos, consulte External event management via Telecommunications API notifications.

    TopicSubscriptionOOB - executeRegistrationSubflow(cadeia de caracteres topicSubID)

    Aciona um subfluxo do spoke para registrar a assinatura de tópico aprovada em um sistema externo.

    Antes de acionar o fluxo de registro, a função verifica se o registro de assinatura de tópico aprovado contém um URL de retorno de chamada e se o tópico já está registrado. Se essas verificações forem aprovadas, ele acionará um subfluxo de demonstração. Este subfluxo de demonstração é definido como um adaptador no seletor de spoke e executa uma chamada de registro de saída "fictícia".

    Esta função é chamada quando um usuário seleciona Registre-se Botão no formulário Assinaturas de tópico. O nome do subfluxo de demonstração é definido em INTITE_REGISTRATION_PROCESS: "sn_ind_tmf642.initiate_registration_process";

    Você precisa substituir esta função no TopicSubscriptionUtil inclusão de script para definir seu próprio subfluxo personalizado para registrar assinaturas de tópico.

    Neste subfluxo de registro, você deve criar uma etapa REST, alias de conexão ou outra implementação para chamar um endpoint de registro no sistema externo para registrar um tópico. Este endpoint deve passar o nome do tópico e o URL de retorno de chamada para registrar. Em troca, o endpoint do sistema externo deve retornar o ID da assinatura, se o registro foi bem-sucedido e as informações de registro a serem armazenadas na tabela de assinatura de tópico. Normalmente, essas informações incluem o status do registro, a mensagem de registro e os campos de ID da assinatura. Seu subfluxo de registro deve chamar UpdateRegistrationResponse() Método para armazenar a carga de resposta na tabela de assinatura de tópico.

    Tabela 1. Parâmetros
    Nome Tipo Descrição
    TopicSubID Cadeia de caracteres Sys_id do registro de assinatura de tópico a ser registrado.
    Tabela 2. Retornos
    Tipo Descrição
    Nenhum(a)

    O exemplo de código a seguir mostra como substituir esta função.

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

    TopicSubscriptionOOB - getSubFlowName()

    Retorna o subfluxo a ser usado para o gatilho de subfluxo do seletor de spoke para registrar assinaturas de tópico.

    Normalmente, esta função é chamada a partir do ExecuteRegistrationSubflow() função. Este subfluxo é responsável por entrar em contato com um sistema externo e registrar uma assinatura de tópico. O nome do subfluxo a ser usado é definido em CONSTANTS.INITITE_REGISTRATION_PROCESS .

    Você pode mudar esta funcionalidade para incluir o nome do seu próprio subfluxo substituindo o nome do subfluxo a ser executado no sn_api_notif_mgmt.Constants inclusão de script.

    Tabela 3. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 4. Retorna
    Tipo Descrição
    Cadeia de caracteres Nome do subfluxo a ser usado. Para a implementação de demonstração, este subfluxo é definido como INTITE_REGISTRATION_PROCESS: "sn_ind_tmf642.initiate_registration_process"; .

    O exemplo de código a seguir mostra como substituir esta função.

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

    TopicSubscriptionOOB - getTopicName(topicSubRefID)

    Retorna o nome do tópico associado ao sys_id aprovado de um registro na tabela Assinatura de tópico [sn_api_notif_mgmt_topic_subscription].

    Tabela 5. Parâmetros
    Nome Tipo Descrição
    TopicSubRefID Cadeia de caracteres Sys_id do registro de assinatura de tópico cujo nome de tópico será retornado.

    Tabela: Assinatura de tópico [sn_api_notif_mgmt_topic_subscription]

    Tabela 6. Retornos
    Tipo Descrição
    Cadeia de caracteres Nome do tópico.

    O exemplo de código a seguir mostra como substituir esta função.

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

    TopicSubscriptionOOB - getUnregisteredTopicIds()

    Retorna os sys_ids de todos os tópicos não registrados. Tópicos não registrados são aqueles tópicos que estão na tabela Tópico [sn_api_notif_mgmt_topic], mas não na tabela Assinatura de tópico [sn_api_notif_mgmt_topic_subscription].

    Tabela 7. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 8. Retorna
    Tipo Descrição
    Matriz Lista de sys_ids dos registros de tópico que ainda não foram registrados.

    O exemplo de código a seguir mostra atualizar esta função.

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

    TopicSubscriptionOOB - updateRegistrationResponse (Object registrationDetails)

    Atualiza o registro de assinatura de tópico na tabela Assinatura de tópico [sn_api_notif_mgmt_topic_subscription] com os valores da resposta de registro fictício de uma chamada de endpoint de registro de tópico de saída.

    Você pode substituir esta função no TopicSubscriptionUtil inclusão de script para modificar as informações armazenadas no registro de assinatura de tópico associado. Para obter mais informações sobre como executar o subfluxo que retorna os detalhes do registro, consulte ExecuteRegistrationSubflow() .

    Tabela 9. Parâmetros
    Nome Tipo Descrição
    ​Detalhes do registro Objeto Para a implementação de demonstração, esta é uma resposta fictícia retornada pela chamada da API de registro de demonstração.

    Se você substituir esta função, a carga de resposta deverá conter pelo menos os seguintes campos de assinatura de tópico:

    • registration_status
    • registration_message
    • subscription_id
    Tabela 10. Retornos
    Tipo Descrição
    Erro Se a chamada for bem-sucedida, nada será retornado. Se ocorrer um erro, ele retornará:
    • Status_reason: Retornado de uma chamada do spoke, explicando o motivo da falha quando status_code: 0 .
    • errormessage: Mensagem de erro que descreve a falha quando status_code não é 0 ou 1, como: "Saída do tipo de solicitação do spoke não definida, verifique o fluxo do adaptador de solicitação" .

    O exemplo de código a seguir mostra como atualizar esta função.

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

    TopicSubscriptionOOB - updateTopicSubscriptionRec(Object topicSubObj)

    Armazena o registro de assinatura de tópico atual na tabela Assinatura de tópico [sn_api_notif_mgmt_topic_subscription] usando a inserção de DAO.

    Normalmente, você chamará esta função no UpdateRegistrationResponse() função.

    Tabela 11. Parâmetros
    Nome Tipo Descrição
    SubObj tópico Objeto Campos a serem atualizados no registro de assinatura de tópico associado. Esta é a carga retornada pelo subfluxo de registro.

    Por exemplo:

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

    Para obter mais informações, consulte ExecuteRegistrationSubflow() .

    Tabela 12. Retornos
    Tipo Descrição
    Cadeia de caracteres Sys_id do registro de assinatura de tópico que foi atualizado.

    O exemplo de código a seguir mostra como atualizar esta função.

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

    O exemplo de código a seguir mostra como chamar esta função.

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