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
- Você tem algumas classes de bibliotecas e outras estruturas reutilizáveis que usa em vários sistemas.
- 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.
- Regras específicas e processos de negócios são armazenados no namespace desse inquilino.
- As estruturas de classes principais são as mesmas.
- 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
- Defina o valor do parâmetro REGEX para a validação de expressão regular no método IsValid.
- Defina o REGEXMODE como "globalref", e IsValid obterá o valor de um global para usar como o padrão de expressão regular.
- Por exemplo, REGEXMODE = "^MyConf(""IDNumberRegex"")" Em seguida, configure o padrão nesse global e nó.
- Defina o REGEXMODE como "globalref", e IsValid obterá o valor de um global para usar como o padrão de expressão regular.
- Defina o valor do parâmetro DATACLEANUPSEQUENCE a ser aplicado durante o método Normalize.
- O valor é uma %List de %Lists que contêm as instruções para $ZSTRIP.
- Por exemplo, DATACLEANUPSEQUENCE = "$lb($lb(""<>WC"","""",""""),$lb(""*P"","""",""-""))"
- 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ó.
- Por exemplo, "^MyConf(""LastNameCleanup"") = $lb($lb("*PC","","'- "),$lb("<->W","",""))
- O valor é uma %List de %Lists que contêm as instruções para $ZSTRIP.
- Defina o valor do parâmetro ADDITIONALVALIDATIONCALL como a chamada de classmethod que será feita durante IsValid, depois de todas as outras validações.
- O valor tem o formato "##class(My.ValidatorClass).MyClassMethod()"
- Defina ADDITIONALVALIDATIONMODE como "globalref", e IsValid lerá o método de validação a ser usado do global indicado pelo valor em ADDITIONALVALIDATIONCALL.
- Por exemplo, ADDITIONALVALIDATIONCALL= "^MyConf(""LastNameCleanup"")" Em seguida, configure a sequência nesse global e nó.
- Por exemplo, "^MyConf(""IDNumberValidator"") = "##class(BaseLib.Validators.ZAID).Validate()"
- Por exemplo, ADDITIONALVALIDATIONCALL= "^MyConf(""LastNameCleanup"")" Em seguida, configure a sequência nesse global e nó.
O repositório do GitHub contém uma demonstração completa dessa funcionalidade, além de exemplos de classes.
Obrigado