AppWorx, Dollar Universe and Sysload Community

 View Only
  • 1.  [$U v5.6] Tâche avec changement de user

    Posted Apr 25, 2019 05:11 AM

    Bonjour à tous,

     

    Comme dit dans le titre, je cherche à résoudre un problème de changement de user.

    Auparavant j'ai cherché dans les discussions mais malheureusement, vu leur ancienneté, certains liens qui pourraient proposé une solution sont morts (R.I.P. un poste intéressant à mon problème).

    Bref, je vous expose mon problème

     

    J'ai des SESSIONS dont le but est d'extraire, transférer et sauvegarder des données. Pour cela, 3 uprocs dans la SESSION: UP_extrac ; UP_trans ; UP_sauv.
    L'UP_extrac est variabilisé pour extraire spécifiquement des données. l'UP_trans et l'UP_sauv sont identiques quelques soit la SESSION (pour facilité la maintenabilité et éviter 6-7 ou 8 uprocs en copiée/collée).

    Vu que mes différentes SESSIONS peuvent se lancer en même temps dans certain cas, j'ai utilisé le système de classe afin qu'elles ne se lancent que une par une (la suivante B attends que la précédente A est terminée son cycle extraction-transfert-sauvegarde).

    Là où le bas blesse, c'est que UP_trans doit être lancée par un user différent de UP_extrac et UP_sauv (appellont les user_trans pour UP_trans et user_admin pour les autres).

    Au début, je pensais lancer une tâche provoquée (via un uxordre) pour changer de user (je reste toujours dans le même noeud). Cependant, si j'ai une SESSION B en attente (à cause de la classe), en faisant un uxordre ça crée une nouvelle tâche à la file d'attente. Donc, la SESSION B qui attendait patiemment va se lancer avant la tâche provoquée de transfert UP_trans et la SESSION A n'est pas terminée donc (et les UP_trans de A va attendre que B ai terminée ce qui pourrait me faire une boucle infinie surement).

     

    Bref, il y a-t-il une façon simple de changer de user dans une SESSION en cours? Si oui, comment (tuto, descriptionetc...). Sans ce problème de changement de user, ça marcherai nickel.

       schématiquement

       SESSION

             UP_extrac (noeud1, user_admin)

                   ||=>  UP_trans (noeud1, user_trans)

                                  ||=>  UP_sauv (noeud1, user_admin)

     

     

    Sinon, mon autre solution, c'est au tout début de l'UP_extrac de créer un flag qui sera supprimé à la toute fin de l'UP_sauv. Et je mets une dépendance de non présence (donc devrait être en attente d'évènement) pour l'UP_extrac quelque soit la session (en gros, c'est créer à la main le système de classe en quelque sorte). Ainsi, je peux faire un uxordre sans problème en changeant de user).
    Mais bon, c'est dommage de ne pas pouvoir utiliser les fonctionnalités de $U.



  • 2.  Re: [$U v5.6] Tâche avec changement de user

    Posted May 07, 2019 09:19 AM

    Bonjour Erwan,

     

    On va pouvoir exhumer le post

    Je pense que le tutoriel auquel vous faites référence se trouve à l'adresse ci-dessous:

     

    https://communities.ca.com/thread/241798954