Quand Qodly.com rencontre 4D Server, de quoi parle-t-on ?

Traduit automatiquement de Deepl

En septembre dernier, 4D a dévoilé Qodly Studio for 4D, qui offre des avantages complets vous permettant de créer de manière transparente des applications web professionnelles dynamiques et efficaces. Si vous ne l’avez pas encore fait, consultez cet article de blog pour savoir comment démarrer avec Qodly Studio pour 4D.

Qodly Studio est également accessible sur qodly.com, faisant partie de la nouvelle offre SaaS de 4D.

Vous souhaitez exploiter les données de votre application 4D et la logique commerciale dans une application qodly.com ? Vous serez heureux d’apprendre qu’une application web qodly.com peut désormais se connecter à une application 4D déployée sur un serveur 4D grâce à la nouvelle commande QodlyScript openDatastore. Vous pouvez alors utiliser un projet 4D comme un datastore distant à partir de Qodly.com.

En d’autres termes :

  • Une application basée sur 4D Server peut faire les deux : gérer des clients de bureau 4D et des clients web utilisant des formulaires Qodly. Si c’est ce que vous faites, inutile de continuer à lire.
  • Mais supposons que vous souhaitiez étendre votre application existante basée sur 4D Server avec une toute nouvelle application, uniquement basée sur le web – et celle-ci hébergée sur Qodly.com : cet article est pour vous et montre comment communiquer entre les deux.

exemples concrets

Note: le code suivant utilise QodlyScript , un langage dérivé de JavaScript et de 4D. Il ressemble à 4D, mais n’est pas exactement identique.

exemple 1

Supposons que nous développions une application web RH sur qodly.com : Qodly-HR. Nous avons déjà codé une certaine logique d’entreprise dans un projet 4D : 4D-HR. Au lieu de réécrire cette logique dans QodlyScript, nous allons simplement l’appeler avec la commande openDatastore !

Cet exemple simple gère les taux horaires des employés en fonction du pays dans lequel ils travaillent. Selon l’endroit où ils travaillent, le taux horaire des employés n’est pas le même.

Voici le modèle dans Qodly-HR:

Dans Qodly-HR, nous créons des employés. Mais pour calculer leur taux horaire, nous allons nous appuyer sur une logique métier déjà existante dans 4D-HR. En effet, une fonction computeHourlyRates est disponible dans 4D-HR pour ce faire : elle prend un taux horaire dans un pays donné comme paramètre d’entrée et renvoie une collection de taux par pays.

L’extrait de code QodlyScript ci-dessous est utilisé pour créer un employé dans Qodly-HR. Dans ce morceau de code, nous appelons notre fonction distante du datastore 4D-HR computeHourlyRates en lui fournissant un taux horaire français, pour récupérer les taux horaires du Royaume-Uni et des États-Unis.

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)
//salaires est [{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

 

Voici la 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

 

exemple 2

Nous avons un autre projet 4D : 4D-Sales pour gérer les ventes et les clients. Nous l’utilisons de la même manière que le projet 4D : 4D-HR.

Dans la classe Datastore, nous avons cette fonction pour utiliser le projet 4D 4D-Sales comme datastore distant :

Fonction exposée getSalesDatastore() : 4D.DataStoreImplementation

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

remoteDS = openDatastore(connect, "sales")

return remoteDS

Dans notre application web Qodly-HR, nous avons besoin de récupérer les clients dont le montant total est supérieur à la moyenne.

Voici comment nous procédons. Nous lisons tous les clients du projet 4D : 4D-Sales et effectuons notre requête.

 

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

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

amountAverage=customers.average("totalAmount")

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

Et voilà !

Restez à l’écoute pour en savoir plus sur la connexion entre Qodly.com et 4D Server.

Avatar
- Product Owner - Marie-Sophie Landrieu-Yvert a rejoint l'équipe de 4D Product en tant que Product Owner en 2017. En tant que Product Owner, elle est en charge de rédiger les user stories puis de les traduire en spécifications fonctionnelles. Son rôle est également de s'assurer que l'implémentation de la fonctionnalité livrée répond au besoin du client.Marie-Sophie est diplômée de l'école d'ingénieur ESIGELEC et a commencé sa carrière en tant qu'ingénieur chez IBM en 1995. Elle a participé à divers projets (projets de maintenance ou de construction) et a travaillé en tant que développeur Cobol. Elle a ensuite travaillé en tant que concepteur UML et développeur Java. Dernièrement, ses principaux rôles étaient d'analyser et de rédiger des exigences fonctionnelles, de coordonner les équipes commerciales et de développement.