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.