Automic Workload Automation

Expand all | Collapse all

Création d'un workflow avec conditions

  • 1.  Création d'un workflow avec conditions

    Posted Sep 23, 2016 04:53 AM

    Bonjour,

    J'ai besoin d’implémenter un workflow faisant des actions en fonction d'un nom de fichier :

    Dans un workflow je dois encapsuler les traitements suivants :

     

    -          Je dois détecter des fichiers sur un serveur

    -          En fonction du nom de fichier, je dois effectuer des actions parmi celles-ci : backup du fichier, zip, ou chiffrement GPG

    -          Une fois l’action faite je dois le transférer vers un autre serveur en SFTP

     

    Le serveur ou se fait la détection est un Windows et il y a un serveur SFTP installé dessus.

     

    Comment feriez-vous ?

    Pour ma part j’ai pensé à créer :

    -          Un objet EVNT de fichier pour la détection

    -          Un objet VARA avec les noms de fichier et les actions à faire dessus (symbolisé par des lettres) : Ex « FIC1 ZBC », Dans cet ex le fichier FIC1 devra etre zippé (Z), backupé (B) et chiffré(C)

    -          Ensuite j’appellerai un script faisant du SFTP

    Cette approche est-elle bonne ? y-a-t-il plus optimisé ?

    Si c'est la bonne approche, les questions suivantes se posent :

    -          Quelle est la manière la plus adaptée de récupérer les valeurs de l’objet VARA ?

    -          Quelle est la manière la plus adaptée de passer les  variables d’un job à un autre dans un workflow ?

    -          Quelle est la manière de gérer les conditions dans le workflow (test du fichier récuperé avec les valeurs dans VARA pour savoir quelles actions accomplir)

    Merci de votre aide,

    Cordialement.





  • 2.  Création d'un workflow avec conditions

    Posted Sep 23, 2016 06:14 AM
    Bonjour Kalid,

    Cette approche me semble plutôt bonne.

    -          Quelle est la manière la plus adaptée de récupérer les valeurs de l’objet VARA ?

    Le plus simple est d'utiliser la commande:GET_VAR

    -          Quelle est la manière la plus adaptée de passer les  variables d’un job à un autre dans un workflow ?
    Vous pouvez :
    > soit les stocker dans une variable statique avec PUT_VAR puis lire leurs valeurs avec GET_VAR.
    > Soit les définir avec :PSET pour qu'elles puissent être utilisées tout au long du workflow.

    -          Quelle est la manière de gérer les conditions dans le workflow (test du fichier récuperé avec les valeurs dans VARA pour savoir quelles actions accomplir)
    Vous pouvez par exemple utiliser les préconditions de la tâche dans le workflow comme ci-dessous:
    cpbnnr4a6ne2.pnghttps://us.v-cdn.net/5019921/uploads/editor/ik/cpbnnr4a6ne2.png" width="1029">


  • 3.  Création d'un workflow avec conditions

    Posted Sep 26, 2016 04:57 AM
    Bonjour et Merci pour la réponse.

    j'ai essayé d'implémenter le workflow mais il y a des problèmes au niveau de l’exécution.

    En fait j'aimerais avoir un workflow générique et pouvoir parser l'objet VARA afin d'utiliser les variables dans le workflow.
    Voici à quoi ressemble l'objet VARA :

    1daw4fiaz72m.jpghttps://us.v-cdn.net/5019921/uploads/editor/8y/1daw4fiaz72m.jpg" width="851">

    L'idée est d'avoir un objet EVNT unique et d'utiliser les valeurs dans l'objet VARA pour effectuer la détection de telle sorte que je puisse mettre un nom de variable substituable à détecter dans l'objet VARA, ici &FILE# (l'objet LOGIN est volontairement vide) :

    q4o5t0hdps3h.jpghttps://us.v-cdn.net/5019921/uploads/editor/u1/q4o5t0hdps3h.jpg" width="781">

    J'arrive à récupérer la liste des clefs/valeurs de l'objet VARA en passant par l'objet pre-process d'un JOBS Windows, j'arrive à afficher chaque ligne.
    Ce que je n'arrive pas à faire c'est à passer le nom du fichier à l'objet EVNT afin qu'il soit détecter et traiter.

    J'utilise un JOBS Windows pour parser le contenu de l'objet VARA, j'ai mis ce qu'il me reste à faire dans le code pm3l4k6vaw02.jpghttps://us.v-cdn.net/5019921/uploads/editor/u3/pm3l4k6vaw02.jpg" width="723">

    Voici le workflow :

    3d8g6jqvp03w.jpghttps://us.v-cdn.net/5019921/uploads/editor/z4/3d8g6jqvp03w.jpg" width="697">

    Merci de votre aide.

    Cdt,
    Kalid


  • 4.  Création d'un workflow avec conditions

    Posted Sep 27, 2016 04:13 AM
    Bonjour,

    J'ai reçu la réponse suivante de la part du support.

    "Dear Kalid,

     

    We have reviewed this request with my management and we think this is special request that can be handle by our Professional Services.

    You need to select the good agent and create different jobs within a complete workflow. This will have to be tested before going on Production.

     

    We recommend you to contact our Consultant team, they have the knowledge to create such Workflows.

     

    Regards"

    Dont acte. Je pense que ça va à l'encontre de l'esprit communautaire.

    Cordialement,

    Kalid






  • 5.  Création d'un workflow avec conditions
    Best Answer

    Posted Sep 27, 2016 09:26 AM

    Bonjour Kalid,

    Je suis en congés jusqu'à la semaine prochaine (lundi), et ne pourrai malheureusement pas vous faire de réponse technique très détaillée d'ici-là.

    Au vu de votre message, il semble que la solution la plus adaptée serait d'utiliser le "variable picker" depuis le champ que vous souhaitez instancier avec la variable :

    sm1irtqe1kbf.png

    Ensuite cherchez l'objet variable concerné depuis la fenêtre qui s'ouvre. 

    D'autre part, j'espère que le message de mon collègue ne vous a pas offensé. Il voulait simplement dire que dans le cas où vous auriez besoin d'assistance pour développer vos objets, notre équipe de consultants se tient également à votre disposition.

    La communauté demeure un lieu d'entraide où les utilisateurs de nos logiciels et le staff Automic peuvent discuter autour de solutions. Cependant, à la différence des consultants qui eux garantissent de vous livrer du "prêt-à-l'emploi", il s'agit essentiellement de donner des pistes afin de vous y aider.

    Je vous souhaite bonne chance pour le développement de vos objets et vous dis à bientôt.

    Cordialement,

    Antoine



  • 6.  Création d'un workflow avec conditions

    Posted Sep 27, 2016 09:43 AM
    Bonjour,

    Merci de votre retour.
    Je ne suis absolument pas offensé, je fais la part des choses et je comprends parfaitement ce que votre collègue a voulu dire.

    Cordialement,

    Kalid



  • 7.  Création d'un workflow avec conditions

    Posted Sep 28, 2016 05:07 AM
    Bonjour,

    J'ai reçu la réponse suivante de la part du support.

    "Dear Kalid,

     

    We have reviewed this request with my management and we think this is special request that can be handle by our Professional Services.

    You need to select the good agent and create different jobs within a complete workflow. This will have to be tested before going on Production.

     

    We recommend you to contact our Consultant team, they have the knowledge to create such Workflows.

     

    Regards"

    Dont acte. Je pense que ça va à l'encontre de l'esprit communautaire.

    Cordialement,

    Kalid




    Bonjour Kalid,

    Je me permets de rebondir sur ce post pour apporter quelques précisions:
    - Le Support s'occupe principalement des requêtes techniques et est équipé à cet effet pour analyser des dysfonctionnements liés aux différents produits Automic; les requêtes fonctionnelles sont redirigées soit vers la Communauté, soit vers nos équipes PS en fonction de leur complexité, d'où la réponse du Support.
    - La Communauté quant à elle devrait traiter principalement des requêtes fonctionnelles, liées à l'utilisation (méthode, implémentation, customisation...) des différents produits. Ici le partage d'expérience, l'esprit communautaire des membres sont l'essence même de la Communauté; c'est la raison pour laquelle certaines requêtes techniques sont quelquefois traitées dans la Communauté. Pour celles qui nécessitent une analyse approfondie, elles sont redirigées vers le Support pour les raisons évoquées plus haut.
    La frontière entre les problématiques techniques et fonctionnelles n'étant pas  toujours facile à délimiter, les deux services travaillent en étroite collaboration, leur but  étant au final d'apporter l'aide nécessaire aux utilisateurs de nos produits.

    Cordialement,

    Octavie



  • 8.  Création d'un workflow avec conditions

    Posted Sep 28, 2016 09:35 AM
    Bonjour Octavie,

    Merci de ce rebond et ces précisions.

    Évoluant profondément dans le monde GNU/Linux depuis pas mal d'années déjà, je me suis juste permis de faire une remarque sur les différences d'approche,de philosophie, relativement à ce que je connaissais.

    J'ignorais que le support était réservé aux posts techniques, et que le forum était  pour les posts fonctionnels.

    Si je puis me permettre, il serait peut être opportun de spécifier cette règle (et éventuellement d'autres) dans une charte afin de cadrer les choses.

    En tout cas, merci de votre éclaircissement.

    Cordialement,
    Kalid








  • 9.  Création d'un workflow avec conditions

    Posted Oct 03, 2016 06:20 AM
    Bonjour Kalid,
    Merci pour votre retour.

    Le variable picker vous a-t-il permis d'atteindre votre objectif ? Ou avez-vous encore des questions?

    Si c'est le cas n'hésitez pas à nous en faire part.

    Cordialement,
    Antoine


  • 10.  Création d'un workflow avec conditions

    Posted Oct 03, 2016 07:09 AM
    Bonjour Antoine,

    Merci de prendre des nouvelles !
    En fait non, je n'ai malheureusement pas pu trouver une solution à mon problème.

    J'ai pas mal avancé en utilisant une autre piste, mais il me reste un problème à résoudre pour avoir une solution générique qui devrait fonctionner.

    J'ai posté mon besoin sur le forum en Anglais, afin d'élargir les potentiels contributeurs :
    https://community.automic.com/discussion/7440/unable-to-use-wildcard-in-evnt-object#latest

    Si vous voulez y jeter un oeil ?

    Cordialement,
    Kalid


  • 11.  Création d'un workflow avec conditions

    Posted Oct 03, 2016 07:58 AM
    Merci pour votre réponse.

    Je viens de jeter un oeil au post en Anglais et quelques détails m'ont un peu dérangé dans le code:

    739shdqbl390.pnghttps://us.v-cdn.net/5019921/uploads/editor/eb/739shdqbl390.png" width="484">

    > Pourquoi mettre les conditions :IF entre :PROCESS et :ENDPROCESS plutôt qu'après?
    > Avez-vous pensé à utiliser :SWITCH plutôt que des :IF successifs ? Voici un exemple:

    :SWITCH &ACTION#        
    :CASE 'BZP'
    : SET &RET# = ACTIVATE_UC_OBJECT("EVNT.FILE.KAL",,,,, PASS_VALUES)

    :CASE 'BZ'
    : SET &RET# = ACTIVATE_UC_OBJECT("EVNT.FILE.KAL",,,,, PASS_VALUES)            
    :CASE 'B'
    : SET &RET# = ACTIVATE_UC_OBJECT("EVNT.FILE.KAL",,,,, PASS_VALUES)


    :ENDSWITCH

    > A ce propos, quelles devraient être les différenciateurs dans les conditions ? Au vu du code il semble que des conditions différentes déclenchent la même action:
    : SET &RET# = ACTIVATE_UC_OBJECT("EVNT.FILE.KAL",,,,, PASS_VALUES)         
    J'espère que cela vous aidera. N'hésitez pas à poster un export xml de vos objets directement dans le discussion si vous souhaitez que je les vérifie.

    Cordialement,
    Antoine


  • 12.  Création d'un workflow avec conditions

    Posted Oct 03, 2016 08:33 AM
    Merci Antoine,

    En fait si je ne mets pas les IF entre :PROCESS et :ENDPROCESS je n'aurais que la dernière ligne du tableau VARA qui sera évaluée, or je souhaite que toutes les lignes soient évaluées.

    Concernant le SWITCH je suis tout à fait d'accord avec vous, je ne maitrise pas encore la syntaxe du langage, et ne savais pas qu'il existait le bon vieux SWITCH :-) . Il est clair que dans mon cas c'est bien plus adapté.

    En fait les conditions ne déclenchent pas toujours le même EVNT, car les fichiers détectés sont différents le (&FILE#) c'est ce fichier qui est passé à l'objet EVNT qui est lui même un objet générique, en fonction du nom du fichier, j'ai un type d'action qui est déclenché.

    a0niw1tkgtkr.jpghttps://us.v-cdn.net/5019921/uploads/editor/iw/a0niw1tkgtkr.jpg" width="769">

    Alors pour essayer de résumer, mon code va :
    - Parser un objet et pour chaque ligne récupérer les 4 champs et les déclarer en variables de workflow (PSET)
    - Ensuite en fonction de l'action (colonne 2), un objet EVNT FILE va être lancé avec comme nom de fichier à détecter, celui trouvé dans le VARA à la première colonne. (J'ai fait comme ça pour avoir un objet EVNT générique).
    - Ensuite (et c'est le coeur de mon problème), si le fichier est détecté, il va lancer un JOBS qui fera les actions correspondantes (en lançant des scripts powershell). Le gros souci c'est que dans EVNT je n'arrive pas à utiliser de wildcards. Par exemple si le fichier à détécter est FILE123 et FILE456, je veux pouvoir mettre FI* pour avoir une détection des 2 fichiers et les traiter tous les 2.

    Ce qu'il me reste à faire c'est trouver un moyen d'utiliser les wildcards et gérer la détection de plusieurs fichiers dans un objet EVNT et les passer à l'objet suivant (un autre JOBS) pour traitement.

    J'ai conscience du fait que ce ne soit pas facile à comprendre, en tout cas merci beaucoup de vos efforts très appréciés.

    Je vous ai transmis en PJ l'export des objets au format XML.

    Très cordialement,
    Kalid

    Attachment(s)

    xml
    VARA.KAL.xml   1 KB 1 version
    xml
    JOBS.KAL.xml   3 KB 1 version
    xml
    EVNT.FILE.KAL.xml   3 KB 1 version
    xml
    JOBP.KAL.xml   7 KB 1 version


  • 13.  Création d'un workflow avec conditions

    Posted Oct 03, 2016 10:07 AM
    Je viens d'importer vos objets, et votre demande me semble un peu plus claire.

    Au lieu d'utiliser un EVNT.FILE je vous recommande plutôt d'utiliser directement :PREP_PROCESS_FILENAME. Les '*' sont supportées, il faut juste faire attention à ne pas créer de conflit dans les noms (par exemple mettre à la fois "FI*" et "FI123").

    Petit exemple ci-dessous:

    !Commande permettant de lister les fichiers sur un agent à un emplacement donné
    :SET &HND#= PREP_PROCESS_FILENAME("NB200003_WS112_X64_01_SAA","c:\temp\*.*","Y",,,,"UC_LOGIN=@LOGIN.SAA")

    !on extrait les données retournées par la commande précédente
    :PROCESS &HND#
    :  SET &FILE#=GET_PROCESS_LINE(&HND#)
    :ENDPROCESS

    Vous pouvez ensuite parcourir le contenu de la variable VARA.KAL avec PREP_PROCESS_VAR et utiliser un :SWITCH &FILE# pour déclencher les actions en fonction du nom de fichier.

    Cordialement,
    Antoine


  • 14.  Création d'un workflow avec conditions

    Posted Oct 03, 2016 12:25 PM
    Super,

    Ça à l'air de répondre à mon besoin.
    Merci beaucoup, je vais tester ça et je vous tiens au courant.

    Cordialement,
    Kalid.


  • 15.  Création d'un workflow avec conditions

    Posted Oct 05, 2016 10:40 AM
    Bonjour Antoine,

    J'ai bien réussi à implémenter un JOBS faisant toutes les actions en utilisant le scripting.
    Le seul bémol que je peux soumettre c'est que j'ai du faire du script en langage Automic et que je n'ai pas pu utiliser des objets Automic afin de bénéficier du côté graphique de l'outil.

    En tout cas merci beaucoup Antoine pour vous être intéressé à mon problème et avoir fourni une solution.

    Cdt,
    Kalid


  • 16.  Création d'un workflow avec conditions

    Posted Oct 05, 2016 10:53 AM
    Bonjour Kalid,

    Content de voir que la solution proposée a fonctionné.
    Comme souvent il en existe certainement d'autres, dont certaines utiliseraient davantage les objets.
    Le script a toutefois l'avantage d'apporter plus de flexibilité et de couvrir donc plus de besoins. C'est aussi un penchant personnel de l'utiliser :smile:

    Bonne continuation et à bientôt,
    Antoine