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.