Générer un fichier propriétaire de manière récurrente

Générer un fichier propriétaire de manière récurrente
0
Tags: #<Tag:0x00007f85361930a8>

Bonjour,

J’ai besoin de générer de manière quotidienne un fichier dans un format propriétaire précis (type mainframe, avec insertions d’espaces à la place des données vides, etc.) et de le stocker quelque part pour être récupéré par un autre système (a priori : sur un Amazon S3).

Exemple d’une portion de ligne du fichier à générer :

2018-04-22-22.30.01.921408AD       09510400     09510400RESA ESPANA SA                     DIRECTION EXPORTATION              AVDA DE BURGOS 89                  APARTADO 262

Chaque caractère de la ligne doit correspondre à une donnée en particulier : la date/heure de création du fichier, un identifiant métier, un certain nombre d’espaces, la valeur du champ d’un de mes objets métiers, des espaces, la valeur du champ d’un autre objet métier, etc.

En somme, c’est un peu comme l’inverse d’un adapter. Au lieu d’avoir un fichier en entrée que j’insère dans le modèle métier de Simplicité, je pars du modèle métier de Simplicité et récupère des valeurs que je vais concaténer dans un fichier.

Quelle serait la meilleure manière de mettre ça en place ? Est-ce que je peux mettre le script de génération du fichier dans un share coded que je peux faire exécuter dans la cron table ? Est-ce que je dois créer un objet métier ?

Merci d’avance.

Bonjour

  1. pour créer une tache planifiée
  • il suffit de créer une Action de liste back-office (avec une méthode) sur un objet métier (dédié ou existant typiquement l’objet source du flux sortant, hidden si non accessible par UI).
  • L’habiliter au user qui lancera la tache cron
  • Parametrer la crontab en précisant quel user lance la tache : à defaut c’est designer qui devra avoir tous les droits sur l’action ou les objets utilisés, ou ajouter des changeAccess dynamiques dans votre code
  1. coder l’action
    La méthode publique de l’objet fait ce que vous voulez en java / javascript.
    Nous conseillons désormais de tout faire en java.
  • select SQL direct ou object.getCurrentList ou search pour chercher vos données
  • padding de vos champ avec des espaces
  • output stream pour écrire dans un ficher (vers grant.getExportDir() ou via path d’un paramètre système pour que ce soit paramétrable)
    Rien de spécifique à Simplicité à ce niveau.

Bonjour,

Je n’ai pas d’objet métier dédié pour ce dataset d’export (c’est un dataset particulier qui ne correspond pas à un cas fonctionnel autre).
Je crée donc un objet métier vide (sans champs) qui portera le code de mon export ? Est-ce qu’il faut que je paramètre quoi que ce soit d’autre sur l’objet métier ou je n’y crée que mon code d’action ?

Ok pour les autres points (Action, etc.), merci.

Un objet métier sans champ n’a pas de sens (il faut une clé fonctionnelle, des fonctions CRUD…).
Les données exportées viennent nécessairement d’au moins un de vos objets métier.
Mettez y la méthode callback qui peut si vous préférez uniquement appeler un code partagé dédié.

Ok, merci. Je mettrai donc un timestamp de lancement du script comme clé fonctionnelle.