Cuando Qodly.com se encuentra con 4D Server, ¿De qué están hablando?

En septiembre pasado, 4D presentó  Qodly Studio para 4D, que ofrece beneficios integrales que le permiten crear aplicaciones web empresariales dinámicas y eficientes. Si aún no lo ha hecho, consulte este blogpost para aprender cómo empezar con Qodly Studio para 4D.

Qodly Studio también es accesible en qodly.com, formando parte de la nueva oferta SaaS de 4D.

¿Desea aprovechar los datos y la lógica de negocio de su aplicación 4D en una aplicación qodly.com? Le gustará saber que una aplicación web qodly.com puede ahora conectarse a una aplicación 4D desplegada en un servidor 4D gracias al nuevo comando QodlyScript openDatastore. Puede entonces utilizar un proyecto 4D como un datastore remoto desde Qodly.com.

En otras palabras:

  • Una aplicación basada en 4D Server puede hacer ambas cosas: manejar clientes de escritorio 4D y clientes web utilizando formularios Qodly. Si eso es lo que hace, no necesita seguir leyendo.
  • Pero supongamos que quiere extender su aplicación existente basada en 4D Server con una totalmente nueva, sólo basada en web – y alojada en Qodly.com: esta publicación es para usted y muestra cómo comunicarse entre las dos.

ejemplos concretos

Nota: el siguiente código utiliza QodlyScript, un lenguaje derivado de JavaScript y de 4D. Se parece a 4D, pero no es exactamente idéntico.

ejemplo 1

Supongamos que desarrollamos una aplicación web de recursos humanos en qodly.com: Qodly-HR. Tenemos alguna lógica de negocio ya codificada en un proyecto 4D: 4D-HR. En lugar de reescribir esta lógica en QodlyScript, ¡Simplemente la llamaremos con el comando openDatastore!

Este sencillo ejemplo maneja las tarifas por hora de los empleados dependiendo del país en el que trabajen. Dependiendo del lugar donde trabajen, la tarifa por hora de los empleados no es la misma.

Este es el modelo en Qodly-HR:

En Qodly-HR, creamos empleados. Pero para calcular sus tarifas por hora, nos basaremos en una lógica de negocio ya existente en 4D-HR. De hecho, una función computeHourlyRates está disponible en 4D-HR para hacerlo: toma una tarifa por hora en un país determinado como parámetro de entrada y devuelve una colección de tarifas por país.

El siguiente fragmento de código QodlyScript se utiliza para crear un empleado en Qodly-HR. En este fragmento de código, llamamos a nuestra función remota 4D-HR datastore computeHourlyRates ofreciéndole una tarifa horaria francesa, para recuperar las tarifas horarias de Reino Unido y Estados Unidos.

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)
//salarios es [{country:FR,hourlyRate:100},{country:UK,hourlyRate:95},{country:US,hourlyRate:90}]

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

 

Esta es la clase 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

 

ejemplo 2

Tenemos otro proyecto 4D: 4D-Sales para manejar las ventas y los clientes. También lo utilizamos de la misma forma que el proyecto 4D: 4D-HR.

En la clase Datastore, tenemos esta función para utilizar el proyecto 4D 4D-Ventas como un datastore remoto:

Función expuesta getSalesDatastore() : 4D.DataStoreImplementation

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

remoteDS = openDatastore(connect, "sales")

return remoteDS

En nuestra aplicación web Qodly-HR, necesitamos obtener los clientes cuyo importe total es superior a la media.

A continuación, se muestra cómo manejamos esto. Leemos todos los clientes en el proyecto 4D: 4D-Sales y hacemos nuestra consulta.

 

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

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

amountAverage=customers.average("totalAmount")

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

¡Eso es todo!

Permanezca atento para saber más sobre la conexión entre Qodly.com y 4D Server.

Avatar
• Propietario de producto - Marie-Sophie Landrieu-Yvert ingresó al equipo de 4D Product como Propietario de producto en 2017. Como tal, está a cargo de escribir las historias de los usuarios y luego traducirlas en especificaciones funcionales. Su papel es también asegurarse de que la implementación de la funcionalidad entregada cumpla con las necesidades del cliente. Marie-Sophie se graduó en la Escuela de Ingeniería de ESIGELEC y comenzó su carrera como ingeniera en IBM en 1995. Participó en varios proyectos (de mantenimiento y creación) y trabajó como desarrolladora de Cobol. Luego trabajó como diseñadora de UML y desarrolladora de Java. Sus principales funciones fueron analizar y redactar requisitos funcionales, coordinar los equipos de negocio y de desarrollo.