Escrever código genérico com ORDA

Tradução automática de Deepl

ORDA foi um dos principais anúncios da Cimeira 4D de 2018, abrindo um mundo de novas possibilidades em 4D. Para saber mais sobre ORDA e os seus benefícios, consulte este post para ver como ORDA irá mudar a sua forma de trabalhar.

INTRODUÇÃO

Com a ORDA, os dados são acedidos através de uma camada de abstracção: a datastore. Uma datastore é um objecto que fornece uma interface para a base de dados e os seus dados através de objectos. Por exemplo, uma tabela é mapeada para um objecto de dataclass, um campo é um atributo de um dataclass. O novo ds retorna uma referência sobre o datastore da aplicação. Se quiser saber mais, dê uma vista de olhos ao artigo de síntese na documentação.

Para o guiar na exploração das características ORDA , preparámos um glossário dos diferentes termos e conceitos, juntamente com a sua definição.

ORDA também fornece algumas informações úteis sobre a estrutura da base de dados.

Isto pode ser muito útil ao escrever código genérico…. sem conhecer a estrutura de uma base de dados.

Descarregar a ferramenta de classificação dinâmica TIP

Aqui está um exemplo:

Uma vez que a DataStore devolvida pelo comando ds é um objecto, pode ser iterado através de um comando for each loop para obter os seus atributos (também conhecidos por DataClasses).

Isto permite-lhe escrever um código genérico aplicável a todas as tabelas expostas na DataStore.

No exemplo abaixo, construímos uma colecção de objectos contendo as DataClasses.

C_OBJECT($dataClassObj)
C_TEXT ($dataClassName)
For each ($dataClassName;ds)
$dataClassObj :=New object
$dataClassObj .name:=$dataClassName
$dataClassObj .value:=ds[$dataClassName]
Form .dataClassList.push($dataClassObj)
End for each

Esta colecção pode ser exibida numa caixa de listagem para permitir aos utilizadores seleccionar uma classe de dados. Depois, podemos continuar com o código genérico da classe de dados seleccionada.

Um objecto dataClass também pode ser iterado através de um for each loop para obter os seus atributos contendo propriedades úteis:

    • nome: nome da DataClassAttribute no modelo de dados
    • tipo: a categoria do atributo:
      • “armazenamento”: equivalente a um campo na base de dados 4D
      • “relatedEntity”: um atributo de relação N -> 1
      • “relatedEntities”: um atributo de relação 1 -> N
    • relatedDataClass: o nome da classe de dados relacionada com o atributo (se a espécie for “relatedEntity” ou “relatedEntities”)

Tendo em conta toda esta informação, pode escrever código genérico sem conhecer a estrutura da sua base de dados.

Na base de dados de exemplo TIP fornecida, aprenderá como fazê-lo de forma dinâmica:

  • seleccionar uma DataClass da DataStore,
  • construir uma caixa de listagem com todas as propriedades da classe de dados, incluindo a entidade relacionada com o primeiro nível, e
  • construir uma ferramenta de ordenação.

Aqui está uma visão geral desta DICA:

Avatar
• Proprietário do produto - Marie-Sophie Landrieu -Yvert entrou ao time 4D Product como Proprietária do Produto em 2017. Como tal, está a cargo de escrever as histórias dos usuários e depois traduzi-las em especificações funcionais. Seu papel também é garantir que a implementação da funcionalidade entregue cumpra com as necessidades do cliente. Marie-sophie se formou na Escola de Engenharia de ESIGELEC e começou sua carreira como engenheira da IBM em 1995. Participou em vários projetos (de manutenção e criação) e trabalhou como desenvolvedora de Cobol. Depois trabalhou como designer de UML e desenvolvedora de Java. Suas principais funções foram analisar e redigir requisitos funcionais, coordenar os times de negócio e de desenvolvimento.