TopicUtilOOB - Com escopo

  • Versão de lançamento: Zurich
  • Atualizado 31 de jul. de 2025
  • 6 min. de leitura
  • . TopicUtilOOB A inclusão de script contém funções que permitem consultar e manipular registros na tabela Tópico [sn_api_notif_mgmt_topic]. Esta classe opera na camada de serviço que interage com a classe DAO (Data Access Object, objeto de acesso a dados).

    Essas funções são chamadas quando Obter tópicos Está selecionado no formulário Tópicos. Se você quiser mudar a funcionalidade padrão desta inclusão de script, substitua as funções contidas nesta inclusão de script no TopicUtil 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 tópicos, consulte External event management via Telecommunications API notifications.

    TopicUtilOOB - createTopic(Object topicObj)

    Cria um registro na tabela Tópico [sn_api_notif_mgmt_topic] usando inserção de DAO.

    Normalmente, você chamará esta função no ValidateAndInsertTopic função que também executa várias validações no conteúdo.

    Tabela 1. Parâmetros
    Nome Tipo Descrição
    TopicObj Objeto Objeto que contém os campos a serem armazenados no registro do tópico. Para a implementação de base, o objeto tem o seguinte formato. Se você modificar ou estender a tabela Tópicos, este objeto deverá refletir essa estrutura. Certifique-se de incluir todos os campos obrigatórios.
    "topicObj": {
      "content_query": "String";
      "description": "String";
      "header_query": "String";
      "namespace": "String";
      "topic_id": "String";
      "topic_name": "String";
      "type": "String";
    }
    Tabela 2. Retornos
    Tipo Descrição
    Cadeia de caracteres Sys_id do registro de tópico criado.

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

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

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

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

    Retorna o nome do subfluxo a ser chamado para obter tópicos de um sistema externo.

    Normalmente, esta função é chamada a partir do TriggerSubflow() função. Este subfluxo é responsável por entrar em contato com um sistema externo e obter todos os registros de tópico que precisam ser inseridos na tabela Tópicos [sn_api_notif_mgmt_topic].

    O nome do subfluxo é definido em CONSTANTS.GET_TOPICS_SUBFLOW . Este subfluxo é para a implementação de demonstração sn_ind_tmf642.event_alarm_notifications_api e gera uma resposta "fictícia" (não chama um sistema externo) para mostrar o processamento de ponta a ponta.

    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 obter tópicos de um sistema externo.

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

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

    Aciona o subfluxo responsável por obter registros de tópico de um sistema externo.

    Esta função é chamada quando o usuário seleciona Obter tópicos Botão no formulário Tópicos.

    O nome do subfluxo acionado é definido em CONSTANTS.GET_TOPICS_SUBFLOW . Este subfluxo é para a implementação de demonstração sn_ind_tmf642.event_alarm_notifications_api e gera uma resposta "fictícia" (não chama um sistema externo) para mostrar o processamento de ponta a ponta.

    Você precisa mudar esta funcional 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.

    No subfluxo, você deve criar uma etapa REST, alias de conexão ou outra implementação para fornecer um URL de endpoint que recupera tópicos da sua rede externa. Quando os tópicos são retornados por esse subfluxo, você chama o. ValidateAndInsertTopics Função para verificar a carga útil do tópico passada e inserir/atualizar os registros na tabela de tópicos.

    Tabela 5. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 6. Retorna
    Tipo Descrição
    Nenhum(a)

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

    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)

    Valida a carga de registro do tópico aprovada e insere registros na tabela Tópico [sn_api_notif_mgmt_topic] que contém esses dados.

    A carga de tópicos aprovados é obtida do "OBTER endpoint de API" usado para recuperar tópicos de um sistema externo. Para obter mais informações sobre como acionar esta API GET, consulte TriggerSubflow() .

    Você pode mudar esta funcionalidade para incluir suas próprias regras de validação e campos de registro de tópico substituindo esta função no TopicUtil inclusão de script.

    Tabela 7. Parâmetros
    Nome Tipo Descrição
    TopicsResposta Matriz de objetos Carga de registro de tópico retornada pelo sistema externo por meio do endpoint OBTER API no subfluxo. Esta carga deve corresponder à estrutura da tabela Tópicos [sn_api_notif_mgmt_topic]. Cada objeto na matriz é um tópico separado. Por exemplo, na implementação de demonstração, isto é:
    "topicResponse": [
      {
        "name": "String";
        "header_query": "String";
        "content_query": "String";
        "namespace": "String";
        "id": "String";
        "description": "String"
      },
      {
        "name": "String";
        "header_query": "String";
        "content_query": "String";
        "namespace": "String";
        "id": "String";
        "description": "String"
      }
    ]
    Tabela 8. Retornos
    Tipo Descrição
    Nenhum(a)

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

    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(cadeia de caracteres topicname, cadeia de caracteres headerQuery, cadeia de caracteres contentQuery, cadeia de caracteres namespace, cadeia de caracteres previousSysId)

    Determina se qualquer outro registro de tópico na tabela Tópico [sn_api_notif_mgmt_topic] contém a combinação especificada de campos como sua chave composta, indicando um tópico duplicado.

    Tabela 9. Parâmetros
    Nome Tipo Descrição
    topicname Cadeia de caracteres Nome do tópico.
    HeaderQuery Cadeia de caracteres Filtro a ser aplicado ao conteúdo das propriedades do cabeçalho do evento. Esta consulta define o tipo de eventos a serem ouvidos para o tópico associado. Este parâmetro pode ser passado como uma consulta aninhada.

    Por exemplo: "HeaderQuery":

    Para obter informações adicionais, consulte TMF688 Event Management API Guia do usuário .

    ContentQuery Cadeia de caracteres Filtro a ser aplicado ao conteúdo do evento. Esta consulta é um filtro de evento mais profundo que é usado para encontrar informações como gravidade do evento ou causa provável. Este parâmetro pode ser passado como uma consulta aninhada.

    Por exemplo: "ContentQuery": "Event.alarm.perceivedSeverity",

    Para obter informações adicionais, consulte TMF688 Event Management API Guia do usuário .

    namespace Cadeia de caracteres Namespace no qual o tópico associado reside. Os tópicos não podem ser duplicados em um domínio, mas podem estar contidos em vários domínios.
    SYSID anterior Cadeia de caracteres Opcional. Sys_id do tópico a ser atualizado. Passe este valor somente ao atualizar um tópico existente.
    Tabela 10. Retornos
    Tipo Descrição
    Booliano

    Sinalizador que indica se outro registro na tabela de tópicos contém a combinação de campos especificada.

    Valores possíveis:
    • Verdadeiro: Outro registro na tabela de tópicos contém a combinação de campos.
    • Falso: Nenhum outro registro na tabela de tópicos contém a combinação de campos.

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

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