/

 

The manual

Self-training

Experimentation

Contact

 

Language

Programmation avancée : utilisation de sous fonctions et programmation objet

Principe général

Un objectif majeure de Storga est que les applications déployées restent facilement compréhensibles par un tiers. Pour cela, plusieurs contraintes ont été imposées, dont la principale est qu'un programme de calcul, à l'intérieur d'un formulaire, ne peut pas définir de fonctions. En effet, avec un langage de programmation, dès que l'on dispose de la notion de fonction, la complexité du code que l'on peut produire progressivement est sans limite.

Cependant, dans certains cas, on désire isoler un code un peu complexe, ou éviter un gigantesque 'if eif eif eif else' pour traiter de multiples cas. Dans Storga, cela se fait en définissant une ou plusieurs fonctions sous la forme de formulaires.

L'intérêt de définir une fonction sous forme d'un formulaire est de permette un test facile du code, en remplissant les champs, et en utilisant le bouton. L'inconvénient est que cela n'est efficace ni en termes de vitesse d'exécution, ni de consommation mémoire, donc cela reste à réserver à quelques cas très spécifiques, et ne doit pas être utilisé pour écrire des applications toujours plus complexes en Storga.
Si vous avez besoin d'effectuer des calculs réellement complexes, utilisez la fonction 'r_prog' de Storga, qui permet d'effectuer les calculs sur une machine logique disposant de tout le langage Pliant, ou l'API REST de Storga pour accéder à une application implémentée dans un autre langage.

Exemple simple d'isolation d'un code un peu complexe

Voici un petit exemple d'isolation d'un code un peu complexe.
Le formulaire suivant implémente une fonction permet d'obtenir une date, par décalage de la date initiale suivant une règle. Par exemple 'Translation = 1M' signifie que l'on veut décaler d'un mois. Toute la difficulté d'un tel calcul est de bien gérer les cas pas pratiques tels que la translation de 1 mois du 31 janvier qui doit être soit le 28 février, soit le 29 février, suivant l'année concernée, mais certainement pas le 31 février.

   

Translation d'une date

Date de départ :

Translation :

Date finale :

L'utilisation de cette fonction s'effectue via l'instruction 'new_form' à laquelle on ajoute simplement l'option 'virtual' pour indiquer que le formulaire que l'on veut créer ne servira qu'à effectuer du calcul et non à stocker pérennement des données.

new_form code_ou_nom_du_formulaire_function virtual
  field Date base := ...
  field Str rule := ...

  run_form "translate"
  ... := final

Remarquez que l'on a utilisé 'run_form' et non 'compute_form' car 'run_form' effectue le calcul immédiatement, avant de continuer l'exécution du programme en cours, alors que 'compute_form' enregistre qu'il faudra recalculer le formulaire à la suite de l'exécution du programme en cours.

Utilisation pour appliquer la bonne règle

Il s'agit là d'une ébauche de programmation objet.
Supposons par exemple que vous ayez un grand nombre de règles de facturations.
Avec Storga, vous pouvez implémenter chaque règle dans un formulaire, puis construire un état qui liste ces règles. Vous pouvez alors appliquer la bonne règle sous la forme :

new_form (lookup_form_id état_qui_liste_les_règles champ_code_règle règle_a_appliquer) virtual
  ...

La fonction 'lookup_form_id' vous a permis de trouver le code du formulaire implémentant la règle souhaitée.