Sequences
Uma sequência é definida por um conjunto de segmentos, que podem ser de um dos seguintes tipos:
Entity: um segmento associado a um atributo da entidade que pertença a uma entidade relacionada.
- Attribute: qual dos atributos da entidade relacionada é usado no preenchimento do segmento.
- Number of characters to use: quantos caracteres do atributo devem ser usados no preenchimento.
- Mandatory field: caixa de seleção que indica se este segmento é obrigatório.
- Prevent user from changing this value: caixa de seleção que indica se o utilizador pode alterar este valor “manualmente”, isto é, sem alterar a entidade relacionada. (Nota: não suportado na FW 3.00, o utilizador não pode alterar este campo manualmente.)
- Group sequential number by this value: caixa de seleção que indica se este segmento influenciará o número sequencial da sequência.
Static Text: um segmento com texto livre. - Text: texto sugerido neste segmento. - Mandatory field: caixa de seleção que indica se este segmento é obrigatório. - Prevent user from changing this value: caixa de seleção que indica se o utilizador pode alterar este valor.
Separator: segmento com um caracter fixo, que inclui as seguintes opções: “-“, “_”. Este segmento pode ser usado como separador entre segmentos.
Sequential number: segmento com um número sequencial. Apenas um segmento deste tipo pode ser usado na sequência. - Start counting from: valor inicial. - Number of fixed digits: número fixo de dígitos reservados. E.g.: “0000”.
Exemplo
O seguinte exemplo demonstra a utilização deste mecanismo: Na chave da entidade Party foram definidos os seguintes segmentos: - Static Text - Entity: Country. Attribute: CountryKey - Separator: - - Sequential Number
O resultado será este:

Sempre que o utilizador alterar o país do registo que está a criar, será preenchido o segmento correspondente e alterado o número sequencial correspondente.
Inicialização
A sequência é inicializada no construtor da entidade. O serviço das sequências é responsável por devolver a definição da sequência para a entidade/atributo fornecido.
A definição é composta por um conjunto de segmentos. Inicialmente é construído o objeto da entidade com três propriedades preenchidas:
- nome do Atributo Key: Preenchido inicialmente com a concatenação dos segmentos sugeridos da definição.
- nome do Atributo SequenceId: id da definição da sequência ativa para esta entidade.
- nome do Atributo Segmentos: Lista de segmentos da sequência. Estes não são persistidos na base de dados com esta entidade.
Serviços gerados
Com a utilização de uma sequência num campo, são gerados os seguintes endpoints:
- id/< Nome do Atributo >Segment. (PUT)
- id/< Nome do Atributo >Segments. (PUT)
O primeiro método é responsável pela atualização dos segmentos da sequência do tipo Entity. Este tipo de segmentos pode ser preenchido pelo valor de um qualquer campo de uma entidade relacionada. O serviço espera receber qual a propriedade que alterou para que seja obtido o valor do campo definido, para a entidade selecionada.
O serviço ISequencesService é responsável por devolver os valores dos campos definidos para este tipo de segmentos através do método RefreshSequenceSegments. É também carregado o valor sugerido para o segmento do número sequencial (caso este exista na definição).
O segundo método é responsável pela atualização do campo (no Draft), em que foi ativado o mecanismo de sequências. Este método recebe a lista de segmentos e concatena os valores recebidos, atualizando o campo gerido por sequências.
Persistência
Aquando da gravação da entidade na base de dados (método Insert) é chamado o método do serviço ISequencesService, GenerateSequenceValue.
Este método é responsável por garantir a correta geração do número sequencial, influenciado, ou não pelos segmentos do tipo entidade, garantindo assim a sua correta sequência.