Quando o Qodly.com encontra o 4D Server, do que é que estão a falar?

Em setembro passado, 4D revelou Qodly Studio for 4D, oferecendo benefícios abrangentes que lhe permitem criar aplicações web de negócios dinâmicas e eficientes. Se ainda não o fez, veja este blogpost para aprender como começar com Qodly Studio para 4D.

Qodly Studio também está acessível em qodly.com, formando uma parte da nova oferta SaaS de 4D.

Deseja aproveitar os dados de sua aplicação 4D e a lógica de negócios em uma aplicação qodly.com? Vai gostar de saber que uma aplicação web qodly.com pode agora se conectar a uma aplicação 4D implementada em um Servidor 4D graças ao novo comando QodlyScript openDatastore. Pode então usar um projeto 4D como um datastore remoto de Qodly.com.

Em outras palavras:

  • Uma aplicação baseada no Servidor 4D pode fazer as duas coisas: lidar com clientes desktop 4D e clientes web usando formulários Qodly. Se isso já é o que faz, não precisa continuar lendo.
  • Mas digamos que queira estender sua aplicação baseada em 4D Server existente com uma totalmente nova, apenas baseada na web – e está hospedada em Qodly.com: este post é para você e mostra como comunicar entre ambos.

exemplos concretos

Nota: o código a seguir está usando QodlyScript , uma linguagem inspirada por JavaScript e 4D. É semelhante ao 4D, mas não é exatamente idêntico.

exemplo 1

Digamos que desenvolvemos uma aplicação web de RH em qodly.com: Qodly-HR. Temos alguma lógica de negócio já codificada num projeto 4D: 4D-HR. Em vez de reescrever esta lógica em QodlyScript, vamos apenas chamá-la com o comando openDatastore!

Este exemplo simples lida com as taxas horárias dos empregados dependendo do país em que trabalham. Dependendo do local onde trabalham, a taxa horária dos empregados não é a mesma.

Eis o modelo em Qodly-HR:

Na Qodly-HR, criamos empregados. Mas para calcular as suas taxas horárias, vamos basear-nos numa lógica comercial já existente em 4D-HR. De fato, uma função computeHourlyRates está disponível em 4D-HR para o fazer: recebe uma taxa horária num determinado país como parâmetro de entrada e devolve uma coleção de taxas por país.

O trecho de código QodlyScript abaixo é usado para criar um empregado em Qodly-HR. Neste trecho de código, chamamos a nossa função distante 4D-HR datastore computeHourlyRates, fornecendo-lhe uma taxa horária francesa, para obter as taxas horárias do Reino Unido e dos EUA.

var employee: cs.EmployeesEntity
var salaryInfo : cs.SalaryInfoEntity
var salaries: collection
var info : object
var status: object

employee = ds.Employees.new()
employee.firstname="Mary"
employee.lastname="Smith"
status=employee.save()

salaries=ds.getHRDatastore().computeHourlyRates("FR", 100)
//salaries is [{country:FR,hourlyRate:100},{country:UK,hourlyRate:95},{country:US,hourlyRate:90}]

forEach(info, salaries)
salaryInfo=ds.SalaryInfo.new()
salaryInfo.fromObject(info)
salaryInfo.theEmployee=employee
status=salaryInfo.save()
end

 

Aqui está a classe Datastore:

extends DataStoreImplementation

exposed Function getHRDatastore() : 4D.DataStoreImplementation

var connect : object = {hostname: "hr@acme.com"}
var remoteDS : 4D.DataStoreImplementation

remoteDS = openDatastore(connect, "hr")

return remoteDS

 

exemplo 2

Temos outro projeto 4D: 4D-Sales para lidar com vendas e clientes. Também o usamos da mesma forma que o projeto 4D: 4D-HR.

Na classe Datastore, temos essa função para usar o projeto 4D 4D-Sales como um datastore remoto:

Função exposta getSalesDatastore() : 4D.DataStoreImplementation

var connect : object = {hostname: "sales@acme.com"}
var remoteDS : 4D.DataStoreImplementation

remoteDS = openDatastore(connect, "sales")

return remoteDS

Na nossa aplicação web Qodly-HR, precisamos de obter os clientes cujo montante total é superior à média.

Eis a forma como tratamos esta questão. Lemos todos os clientes do projeto 4D: 4D-Sales e fazemos a nossa consulta.

 

var customers, targetCustomers: 4D.EntitySelection
var amountAverage : number

customers=ds.getSalesDatastore().Customer.all()

amountAverage=customers.average("totalAmount")

targetCustomers=customers.query("totalAmount >= :1", amountAverage)

É isso aí!

Fique atento para aprender mais sobre a conexão entre Qodly.com e 4D Server.

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.