Implémentation automatique de la bdd

Bonjour,

Je ne trouve pas de solution pour implémenter automatiquement des valeurs à une de mes tables lorsque je rajoute une valeur dans une autre table (implémentation automatique de plusieurs lignes dans ma table lorsque j’ajoute un produit dans une autre table de ma base de données).

Exemple : J’ajoute dans une table le produit “Fraise” et je veux que plusieurs lignes se créent automatiquement dans une autre table présentant les actions a réaliser : “ajouter le produit sur l’étalage”, “ajouter le prix du produit sur l’étalage”, “faire de la publicité pour le nouveau produit”. Et donc faire cela à chaque nouveau produit que l’on ajoute dans la BDD.

Merci d’avance pour vos solutions :slight_smile:

Cette question relève plus de la formation que du support. Avez vous suivi une formation ? Dites moi en message privé, le cas échéant, dans quel contexte client/partenaire vous intervenez pour qu’on puisse mieux contextualiser nos réponses.

Pour faire simple, dans Simplicité on manipule des objets métier logiques (dont la persistance est, par défaut, dans une table physique d’une base de données mais d’autres cas sont possibles). Donc déjà dans Simplicité, il faut toujours raisonner/travailler au niveau logique, jamais au niveau physique (ou très rarement et pour de bonnes raisons).

Il y a bien entendu des APIs Java pour manipuler les objets logiques pour faire, à minimum, du CRUD. Cf. cette doc qui décrit les hooks des objets logiques et fourni de nombreux exemples d’usage de ces APIs au sein de ces hooks: Simplicité® documentation/01-core/businessobject-code-hooks

Dans votre cas vous devrez sans doute implémenter des appels de type “create” (le C du CRUD) sur l’objet lié “action sur produit” dans le hook postCreate de l’objet “produit”.

ex:

try {
  ObjectDB o = getGrant().getTmpObject("MyObject");
  BusinessObjectTool t = o.getTool();
  t.getForCreate();
  o.setFieldValue("myField1", ...);
  ...
  t.validateAndSave();
} catch (Exception e) {
  AppLog.error("Error creating my object record", e, getGrant());
  ...
} 

PS: Si vous débutez en Simplicité je vous suggère de vous installer le module de démo (via l’appstore) car celui-ci contient de nombreux exemples/patterns didactiques.

Merci pour votre réponse, j’ai bien suivi la formation et je vais plus me renseigner sur les hooks donc.

Simplicité est une plateforme low code => 80 à 90 % d’une appli peut en général se faire par paramétrage, le reste c’est des règles métier non méta modélisables pour lesquelles il est nécessaire d’écrire quelques lignes de code.

Ces règles s’implémentent dans des “hooks” = des point d’enrichissement du comportement paramétrable.

Il y a des hooks serveur en Java et des hooks UI en Javascript (les vraies régles metier sont toujours à implémenter coté serveur car la UI n’est qu’un mode d’accès parmi d’autres (il est aussi possible d’interagit avec Simplicité via des APIs (REST, …) et des interfaces “batch” (I/O).

En pratique l’essentiel des règles métier non paramétrables s’implémentent dans les hooks principaux des objets métier qui sont:

  • le postLoad pour les régles immuable pour toute la session d’un utilisateur donné
  • les preValidate pour “préparer” un record en vue de sa validation générique avant enregistrement
  • le postValidate pour ajouter des règles qui vont au delà de la validation générique du record
  • les pre/postSave/Create/Update/Delete qui permettent de faire des choses avant et après l’enregistrement d’un record (typiquement créer des records liés en cascade comme dans votre cas)

Il existe aussi un entre-deux = les contraintes qui restent paramétrables mais sont proches de code => en gros c’est pour les r-gles de type “if/then”

De manière générale le “but du jeu” avec Simplicité c’est d’écrire le moins de code possible en exploitant au maximum ce qui se paramètre.

Merci pour votre aide! Par contre je viens de recevoir cette erreur 502 et je n’ai plus accès a mon application. Est-ce normal?

Il nous faut l’URL complète de cette instance pour regarder son état et analyser les logs si besoin

Le process était down. Pas vu de trace claire sur la cause du plantage dans les logs.

J’ai relancé ça devrait être OK désormais.

Super, merci beaucoup!