Objectif : Création d'un masque de saisie permettant de sélectionner un ou plusieurs Agents sur lesquels un Job doit être exécuté. Les agents qui peuvent être sélectionnés sont déterminés de façon dynamique à partir de la base de données AE lors de l'exécution. De plus, un objet Queue et une commande du système d'exploitation doivent être définis dans le dialogue de saisie. Vous pouvez pour cela définir en toute confiance dans le dialogue de saisie la commande du système d'exploitation à exécuter et les ordinateurs sur lesquels elle doit l'être.
Objets utilisés : PromptSet, Script, Job (Windows), Variable (interne SQL)
Eléments de script utilisés: :SET, :PSET, :WHILE :ENDWHILE, :IF :ELSE :ENDIF, LENGTH, SYS_HOST_ALIVE, ACTIVATE_UC_OBJECT, :PRINT, :DATA, :PUT_ATT
Prérequis : Vous devez créer et utiliser des Variables propres à SQL (privilège et paramètre SQLVAR_INTERNAL = Y dans la Variable UC_SYSTEM_SETTINGS requis)
Cet exemple explique l'utilisation des objets PromptSet, des objets variables dynamiques, des variables prédéfinies et des tableaux de script.
La saisie des valeurs définies par l'utilisateur s'effectue via un objet PromptSet appelé via un objet script. Les objets Queue pouvant être sélectionnés et les Agents Windows sont recherchés dans la base de données AE à l'aide des objets Variables du type SQL interne. Après l'envoi du dialogue PromptSet, un Job est lancé sur chacun des Agents choisis.
Les objets PromptSet sont des masques de saisie définis par l'utilisateur qui peuvent être appelés via des objets activables. Les éléments d'un objet PromptSet permettent de saisir ou de sélectionner les valeurs, les valeurs autorisées ou sélectionnables étant issues d'un objet Variable (= Variable de référence).
Ainsi, les objets Variables de référence doivent tout d'abord être créés : Créez deux objets Variables du type SQLI : VARA.SQLI.AGENT et VARA.SQLI.QUEUE.
L'avantage des objets Variables du type SQL interne réside dans le fait que les valeurs sont déterminées de façon dynamique à partir de la base de données AE pendant l'exécution. Les valeurs actuelles sont ainsi toujours affichées dans l'élément PromptSet. Lorsqu'un nouvel Agent est ajouté, par exemple, il est automatiquement affiché lors de l'appel suivant du masque de saisie. Vous pouvez également naturellement utiliser des Variables statiques dont le contenu peut toutefois être géré manuellement.
Une des Variables lit tous les Agents Windows, l'autre lit tous les objets Queue du Client actuel à partir de la base de données AE. Ajoutez les instructions SQL suivantes dans les objets Variables si vous voulez utiliser une base de données MS SQL Server :
Les instructions SQL doivent être modifiées en conséquence pour une autre base de données (Oracle ou DB2). Vérifiez ensuite les instructions SQL à l'aide de la fonction "Prévisualisation". Si les valeurs sont affichées sans erreur, les instructions fonctionnent.
La Variable &$CLIENT# est une Variable prédéfinie qui est remplacée lors de l'exécution par le numéro du Client AE actuel. Pour résoudre cette Variable, le paramètre VAR_SECURITY_LEVEL = 1 (ou 2 ou 3) au moins est nécessaire dans la Variable AE UC_SYSTEM_SETTINGS.
Créez ensuite un nouvel objet PromptSet avec le nom : PRPT.AGENT
Ouvrez l'objet et allez dans l'onglet Designer. Vous pouvez maintenant déplacer les éléments PromptSet souhaités de la droite vers le milieu à l'aide de la fonction Glisser-déposer.
Dans notre exemple, nous devons utiliser les éléments PromptSet suivants avec les propriétés citées :
Eléments | Description | Propriétés |
---|---|---|
Zone de texte | Pour le nom du Job (prédéfini dans notre exemple) |
|
Check-list | Permet de sélectionner un ou plusieurs Agents Windows |
|
Combo box | Permet de sélectionner un objet Queue |
|
Zone de texte | Saisie d'une commande de système d'exploitation |
|
L'objet script permet d'appeler l'objet PromptSet, de lire ses valeurs et d'activer les jobs.
SCRI.START.JOBS
Ouvrez l'objet et allez dans l'onglet Variables & Prompts. Sous "PromptSets", sélectionnez l'objet PromptSet précédemment créé PRPT.AGENT. Si vous le souhaitez, vous pouvez écraser ici les valeurs standard des éléments PromptSet.
Accédez à l'onglet Traitement et ajoutez les lignes suivantes :
:SET &LEN# = LENGTH(&AGENT[])
:WHILE &LEN# > 0
: PSET &HOST# = &AGENT[&LEN#]
: IF SYS_HOST_ALIVE(&HOST#) = "Y"
: SET &RET# = ACTIVATE_UC_OBJECT(&JOB#,,,,,PASS_VALUES,&queue#,"&JOB#_&HOST#")
: P "Start Job &JOB# on agent &HOST# with RunID &RET#"
: ELSE
: P "Agent &HOST# is not active."
: ENDIF
: SET &LEN# = &LEN# - 1
:ENDWHILE
Ce script permet de récupérer le nombre d'agents qui ont été sélectionnés dans l'objet PromptSet. Les noms des agents sont ensuite lus dans le tableau du script. Si l'agent est actif, le job Windows démarre.
Pour différencier les exécutions du Job dans les statistiques, un alias est utilisé pour les exécutions. Il se compose des noms du job et de l'agent. Par exemple : JOBS.WIN.PROMPT_WIN01
Créez un objet Job Windows avec le nom ci-après: JOBS.WIN.PROMPT
Ouvrez le Job et saisissez dans l'onglet Attribut un objet Login qui fonctionne pour tous les Agents Windows. Accédez ensuite à l'onglet Pré-traitement et ajoutez les lignes suivantes:
: PUT_ATT HOST = &HOST#
L'agent qui a été transmis par l'objet script au moyen d'une variable d'objet est ainsi activé de façon dynamique lors de l'exécution.
Les lignes suivantes sont requises dans l'onglet Traitement pour exécuter la commande Windows définie par l'utilisateur :
:DATA &jcl#
:DATA "@set retcode=%errorlevel%"
:DATA "@if NOT %ERRORLEVEL% == 0 goto :retcode"
Démarrez l'objet script pour appeler le dialogue de saisie. Sélectionnez l'agent requis et un objet queue. Dans le champ "JCL", saisissez la commande Windows qui doit être exécutée sur les ordinateurs des agents sélectionnés.
Dans ce cas, le Job JOBS.WIN.PROMPT est lancé dans la queue CLIENT_QUEUE sur les Agents WIN01, WIN02 et WIN03. La liste des fichiers de C:\ est demandée sur les ordinateurs de ces Agents.
Vous pouvez ainsi exécuter rapidement et simplement des commandes définies par l'utilisateur sur plusieurs ordinateurs.
s