Afficher le texte sourceAnciennes révisionsLiens de retourHaut de page Table des matières Créer une nouvelle procédure Liste des procédures xml Les catégories de procédures Les actions d'une procédure Les éléments intervenant dans une procédure Les balises XML name filter compute-filter default-name cardinality attribute reading handler Helpers Le contrôleur Les vues Modifier une procédure Renommer une procédure Renommer un paramètre de procédure Voir aussi Rédaction des procédures Les procédures permettent de définir les différents intervenants d'une intervention. Créer une nouvelle procédure Les procédures permettent de définir les différents éléments intervenant au sein d'une opération de la production. Liste des procédures xml La liste des procédures xml se trouve dans le répertoire ekylibre/config/procedures Les catégories de procédures Les procédures sont triées par catégories. Les catégories sont renseignées en haut de la procédure xml : categories="" Les catégories sont définies en nomenclature dans la liste des procedure_categories et sont associées à des activity_families. On trouve la nomenclature dans le fichier : ekylibre/db/nomenclature/db.xml Les actions d'une procédure Les actions permettent d'enregistrer dans quels buts a été faite l'intervention. Il y a des actions “obligatoires” : les actions et des actions “optionnelles” : les optional-actions. De le même manière que les categories, elles doivent être renseignées avec les éléments de nomenclature : ekylibre/db/nomenclature/db.xml Les actions optionnelles sont visibles par l'utilisateur sous forme de cases à cocher et permettent de renseigner précisément la ou les actions de l'intervention. Ex: Une intervention de pulvérisation peut avoir une action fongicide, insecticide, biostimulant… Les actions obligatoires ne sont pas visibles pour l'utilisateur, ce sont les actions implicites qui sont systématiquement engendré par un type d'intervention. Ex: Une intervention semis tout-en-un a deux actions incontournables, semer et fertiliser. Les éléments intervenant dans une procédure L'ensemble des éléments participant à une intervention sont définis dans la procédure : Participant Nom XML Exemples La cible target Une parcelle, une culture Les acteurs doer Un chauffeur, un opérateur Les équipements tool Les tracteurs, les outils Les intrants input Engrais, produit phytosanitaire Les extrants output Légumes, grains (lors des récoltes) Les balises XML Pour chaque éléments ci-dessus (target, doer, tool, input, output), des paramètres sont à définir : name, filter et cardinality. name name permet d'afficher le nom. filter filter permet de faire un filtre sur l'ensemble des éléments qui s'afficheront dans la liste déroulante pour l'utilisateur. Les filtres se rédigent suivent un langage précis défini en intégralité dans: lib/working_set/query_language.treetop Ex : filter=“is variety_name and has indicator_name and can ability” compute-filter compute-filter permet de calculer un filtre sur l'ensemble des éléments qui s'afficheront dans la liste déroulante pour l'utilisateur.Il peut comprendre des appels à des méthodes. Les méthodes sont dans: lib/procedo/engine/functions.rb Ex : compute-filter=“'is animal_group and derives from %{variety_of(PRODUCT)}'” Comme pour les filtres, il est possible de s'aider des abilities et varieties definies sur les product_natures de la nomenclature : ekylibre/db/nomenclatures/db.xml default-name default-name permet de calculer un nom par défault lorsqu'un produit est créé pendant une intervention.Il peut comprendre des appels à des méthodes. Les méthodes sont également dans: lib/procedo/engine/functions.rb Ex : default-name=“'%{variant_name(PRODUCT)} %{birth_name(PRODUCT)}'” default-name cardinality cardinality permet de préciser le nombre d'éléments à entrer pour un élément intervenant dans une intervention donnée. Ex : Enregistrer au moins 1 cible, enregistrer aucun, un, ou plusieurs opérateurs…Italique Utilisation : Par défaut, si on ne met pas de cardinality –> Au moins 1 cardinality=“*” –> Facultatif : 0, 1 ou plusieurs cardinality=“1” –> Utile dans un group pour créer en un couple unique d'éléments (ex: semis –> couple target/output=parcelle/culture) attribute La balise attribute est spécifique au target. Elle permet d'afficher la zone de travail sur la parcelle. reading La balise reading permet d'entrer la valeur d'un indicateur à la création du produit. Ex : Enregistrement d'une naissance, entrer le sexe du veau. handler La balise handler est spécifique aux inpout/output (intrant/extrant). Elle permet à l'utilisateur de saisir la valeur d'un produit dans une nouvelle unité et de faire automatiquement la conversion par rapport à l'unité de départ du produit. Le handler “population” obligatoire pour que cela fonctionne. Pour chaque nouvelle unité, un handler est créé pour faire la conversion : tous les handler sont indépendants, basés sur la population. Pour chaque handler, il faut renseigner l'indicateur, l'unité (nouvelle unité) et ajouter un nom si le même indicateur est utilisé dans plusieurs handler de la procédure. Ensuite, il faut ajouter les conditions d'appel de l'indicateur grâce au if. Un fichier permet de visualiser l'ensemble du langage des conditions à utiliser pour écrire ces conditions : ekylibre/lib/procedo/formula/language.treetop Les fonctions auxquelles fait appel ce fichier sont rédigées dans : ekylibre/lib/procedo/engine/functions.rb Pour terminer, pour que les conversions soient gérées correctement de façon automatique, il faut ajouter un backward et un forward. Le backward permet de faire la conversion dans le sens unité de la population –> nouvelle unité Le forward permet de faire la conversion dans le sens nouvelle unité –> unité de la population ATTENTION à la syntaxe des '.' et ':' et aux tests sur les valeurs de population. Helpers La variable working_periods permet de récupérer les dates sous cette forme! [ { started_at: '2016-09-01 08:00', stopped_at: '2016-09-01 10:00' }, { started: '2016-09-01 11:00', stopped_at: '2016-09-01 12:00' } ] De plus, les fonctions intervention_started_at et intervention_stopped_at retourne respectivement la date de début et date de fin, toutes périodes confondues. Le contrôleur Le contrôleur des procédures : ekylibre/app/controllers/backend/interventions_controller.rb respond to est utilisé pour générer des rapports. Les vues Vue de la liste des interventions sur une campagne : ekylibre/app/views/backend/index.html.haml Vue des détails d'une intervention en particulier : ekylibre/app/views/backend/show.html.haml Vue du formulaire de modification ou création d'une intervention : _form.html.haml Modifier une procédure La modification de procédure est plus ou moins impactante. Les noms de procédures et les noms des variables de procédure étant stockés en base de données, leur modification dans les fichiers XML nécessitent forcément une mise à jour de la base de données. Renommer une procédure Pour renommer une procédure, il faut créer une migration : rails g migration rename_procedure_old_to_new Et à l'interieur du def change, il faut mettre le code suivant : Renommer un paramètre de procédure Un générateur permet de créer rapidement la migration de renommage d'un paramètre. Il suffit de renseigner l'ancien nom du paramètre, son nouveau nom et le nom de la procédure. rails g renaming_migration OLD_NAME NEW_NAME PROCEDURE_NAME Voir aussi Spécification fr/guides/writing-procedures.txt Dernière modification: 2016/09/19 15:20(modification externe)