AxClass (Parte 2)
Fala pessoal,
Continuando o post anterior, vamos fazer um exemplo prático de utilização da AxClass.
Vamos lá…
Primeiramente crie uma tabela com a seguinte estrutura:

Após ter criado a tabela, vamos criar a AxClass que irá manipular os dados desta tabela.
O nome da class será AxTimesFutebol (de acordo com a nomenclatura), e a mesma extende a AxInternalBase que é o base deste Framework.
Antes de continuar preciso citar os métodos que são necessários para que o framework seja implementado corretamente.
Alguns são extendidos da AxInternalBase e outros serão criados por você!
Os métodos são:
- currentRecord() (Extendido da AxInternalBase) – Pega e recebe o registro atual da Ax[Tabela].
- emptyRecord() (Extendido da AxInternalBase) – Retorna um registro em branco para a tabela que a Ax[Tabela] se refere.
- setField() (Extendido da AxInternalBase) – Atribui um valor para um campo na currentRecord() que é atribuído à Ax[Tabela].
- Os métodos parm referente a cada campo de sua tabela (por ele que que você insere os dados)
- E uma método que será seu tableBuffer dentro do framework
Vamos começar:
1 2 3 4 5 6 | //Inicio <DynamicsAXBR> class AxTimesFutebol extends AxInternalBase { TimesFutebol timesFutebol; } //Fim <DynamicsAXBR> |
1 2 3 4 5 6 7 8 9 10 11 | //Inicio <DynamicsAXBR> public TimesFutebol currentRecord(TimesFutebol _timesFutebol = timesFutebol) { if (!prmisdefault(_timesFutebol)) { currentRecordIsSet = true; } return _timesFutebol; } //Fim <DynamicsAXBR> |
1 2 3 4 5 6 7 8 9 | //Inicio <DynamicsAXBR> protected TimesFutebol emptyRecord() { TimesFutebol localTimesFutebol; ; return localTimesFutebol; } //Fim <DynamicsAXBR> |
1 2 3 4 5 6 7 8 9 10 11 | //Inicio <DynamicsAXBR> public AddressCity parmCidade(AddressCity _cidade = '') { if (!prmisdefault(_cidade)) { this.setField(fieldnum(TimesFutebol, Cidade), _cidade); } return timesFutebol.Cidade; } //Fim <DynamicsAXBR> |
1 2 3 4 5 6 7 8 9 10 11 | //Inicio <DynamicsAXBR> public AddressStateId parmEstado(AddressStateId _estado = '') { if (!prmisdefault(_estado)) { this.setField(fieldnum(TimesFutebol, Estado), _estado); } return timesFutebol.Estado; } //Fim <DynamicsAXBR> |
1 2 3 4 5 6 7 8 9 10 11 | //Inicio <DynamicsAXBR> public Name parmNome(Name _nome = '') { if (!prmisdefault(_nome)) { this.setField(fieldnum(TimesFutebol, Nome), _nome); } return timesFutebol.Nome; } //Fim <DynamicsAXBR> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | //Inicio <DynamicsAXBR> protected void setField(fieldId _fieldId, anytype _anytype) { timesFutebol currentRecord = this.currentRecord(); ; if (fieldTouched.exists(_fieldId)) { if (this.inputStatus() == InternalExternal::Internal && fieldTouched.lookup(_fieldId) == InternalExternal::External) { return ; } } currentRecord.(_fieldId) = _anyType; this.setFieldAsTouched(_fieldId); } //Fim <DynamicsAXBR> |
1 2 3 4 5 6 7 8 9 10 11 | //Inicio <DynamicsAXBR> public TimesFutebol timesFutebol(TimesFutebol _timesFutebol = timesFutebol) { if (!prmisdefault(_timesFutebol)) { currentRecordIsSet = true; } return _timesFutebol; } //Fim <DynamicsAXBR> |
Após ter criado a classe com os métodos acima, vamos criar um Job para testar as funcionalidades da AxClass:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | //Inicio <DynamicsAXBR> static void jobAxTimesFutebol(Args _args) { AxTimesFutebol axTimesFutebol = new AxTimesFutebol(); ; //Primeiro pegamos todos os valores utilizando os parms da classe criada; axTimesFutebol.parmNome("Internacional"); axTimesFutebol.parmEstado("RS"); axTimesFutebol.parmCidade("Porto Alegre"); //Caso tenha validação ele valida os campos; axTimesFutebol.validateInput(true); //Salva o registro na tabela; axTimesFutebol.save(); } //Fim <DynamicsAXBR> |
Bom pessoal espero tenham gostado. E caso tenha restado alguma dúvida COMENTEM sua dúvida que terei o prazer em responder.
Mais informações sobre a classe AxInternalBase no msdn
Abrs,
Peterson Ferreira
