Artigo
· Nov. 27, 2023 2min de leitura

Pacote de strings inteligentes do IRIS

Oi, pessoal,

Publiquei um novo pacote no OEX.

Resumindo, é um tipo de dados de string que oferece várias opções de configuração e flexibilidade.

Caso de negócio

  1. Você tem algumas classes de bibliotecas e outras estruturas reutilizáveis que usa em vários sistemas.
  2. Você tem um ambiente "multi-tenant" em que uma base de código é compartilhada entre vários inquilinos, sendo que cada um tem seu próprio namespace configurado.
    1. Regras específicas e processos de negócios são armazenados no namespace desse inquilino.
    2. As estruturas de classes principais são as mesmas.
    3. Os inquilinos têm diferentes requisitos de validação de dados e alguns querem a consistência dos dados em todos os sistemas da organização.

Se você tiver seis inquilinos com diferentes níveis de validação em um número de identificação (SSN), você deve acomodá-los sem precisar criar um subconjunto de classes para cada um.

Alguns inquilinos também querem que os dados sejam depurados para garantir a consistência.

Solução do problema

Uma classe de string com a opção de configurar o tempo de compilação e de execução que pode ser alterada dinamicamente.

Essa classe oferece o seguinte

  1. Defina o valor do parâmetro REGEX para a validação de expressão regular no método IsValid.
    1. Defina o REGEXMODE como "globalref", e IsValid obterá o valor de um global para usar como o padrão de expressão regular.
      1. Por exemplo, REGEXMODE = "^MyConf(""IDNumberRegex"")" Em seguida, configure o padrão nesse global e nó.
  2. Defina o valor do parâmetro DATACLEANUPSEQUENCE a ser aplicado durante o método Normalize.
    1. O valor é uma %List de %Lists que contêm as instruções para $ZSTRIP.
      1. Por exemplo, DATACLEANUPSEQUENCE = "$lb($lb(""<>WC"","""",""""),$lb(""*P"","""",""-""))"
    2. Defina DATACLEANUPMODE como "globalref", e Normalize lerá a sequência de limpeza do global indicado pelo valor em DATACLEANUPSEQUENCE. Por exemplo, DATACLEANUPSEQUENCE  = "^MyConf(""LastNameCleanup"")" Em seguida, configure a sequência nesse global e nó.
      1. Por exemplo, "^MyConf(""LastNameCleanup"") = $lb($lb("*PC","","'- "),$lb("<->W","",""))
  3. Defina o valor do parâmetro ADDITIONALVALIDATIONCALL como a chamada de classmethod que será feita durante IsValid, depois de todas as outras validações.
    1. O valor tem o formato "##class(My.ValidatorClass).MyClassMethod()"
    2. Defina ADDITIONALVALIDATIONMODE como "globalref", e IsValid lerá o método de validação a ser usado do global indicado pelo valor em ADDITIONALVALIDATIONCALL.
      1. Por exemplo, ADDITIONALVALIDATIONCALL= "^MyConf(""LastNameCleanup"")" Em seguida, configure a sequência nesse global e nó.
        1. Por exemplo, "^MyConf(""IDNumberValidator"") = "##class(BaseLib.Validators.ZAID).Validate()"

 

 

O repositório do GitHub contém uma demonstração completa dessa funcionalidade, além de exemplos de classes.

Obrigado

Discussão (0)1
Entre ou crie uma conta para continuar