Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Mercator Jobs

0000002459     -      27/10/2017

Mercator Jobs est un système permettant d'envoyer des tâches de maintenance (jobs) depuis un Mercator vers d'autres Mercator. Cela permet, par exemple, de répercuter des modifications apportées dans une configuration Mercator dans toute une série d'autres installations Mercator (par ex. en multi-magasins avec dossiers indépendants, vers une configuration Mercator SOS, depuis un Mercator de développement vers un Mercator de production)

Les jobs sont encapsulés dans une enveloppe (jobs bundle) qui peut contenir plusieurs jobs et qui est adressée à un destinataire. Ces enveloppes peuvent être remises à leur destinataire via :

  • simple dépôt dans un répertoire (ce répertoire doit être visible par le Mercator émetteur).
  • dépôt dans la base de données SQL du Mercator de destination (le serveur SQL qui héberge cette base de données doit être visible par le Mercator émetteur).
  • transmission par Mercator Jobs Online pour des Mercators qui ne se voient d'aucune façon. Ce transfert se fait via un web-service (port 80) hébergé sur les serveurs Mercator.
  • ou par tout autre moyen (mail, ...) en utilisant le transfert par répertoire.

Les fonctionnalités décrites ci-dessous sont disponibles via le menu "Outils Avancés / Mercator Jobs".

Pour accepter un bundle de jobs, le récepteur doit :

  • disposer d'un ID l'identifiant de façon unique. Cet identifiant est créé via le menu "Créer ID". Il est essentiel que cet ID reste unique. Dès lors, en cas de duplication d'une base de données pour la mettre à disposition d'un autre Mercator, il faut recréer un autre ID. L'ID est automatiquement invalidé si le serveur SQL et/ou le nom de la base de données changent, ainsi que les paramètres de la licence Mercator.
  • créer un manifeste via le menu "Créer Manifeste". Ce manifeste est un fichier identifiant un Mercator de façon unique. Il agit comme une clé qu'il faut donner à un ou plusieurs Mercator à qui on donne l'autorisation de nous émettre des bundles de jobs. Veuiller noter que tout changement dans l'ID unique invalide automatiquement le manifeste et donc toutes les autorisations émises. Lors de la création d'un manifeste, l'utilisateur détermine si celui-ci contient l'autorisation d'exécuter des jobs en mode silencieux, çàd sans acceptation d'un utilisateur.

Création de destinataires

Chez un émetteur, les destinataires sont listés dans la fenêtre accessible via le menu "Destinataires". L'ajout dans cette liste se fait par sélection d'un manifeste. Pour chaque destinataire, il faut sélectionner un type (moyen de communication) :

  • Répertoire : le bouton de la dernière colonne permet de sélectionner facilement ce répertoire. L'idéal est de sélectionner le répertoire principal du Mercator destinataire.
  • Base de données SQL : le bouton de la dernière colonne permet de composer facilement la chaîne de connexion SQL qui sera stockée dans la 4ème colonne. Si ce bouton a été utilisé, le mot de passe de connexion dans la chaîne de connexion sera crypté. Il ne faut dès lors plus le modifier manuellement.
  • Online Jobs : aucun paramètre supplémentaire ne doit être fixé.

Création de bundles de jobs

L'émetteur d'un bundle de jobs doit tout d'abord créer un fichier correspondant à ce bundle. Ce fichier peut être créé sur disque. Nous recommandons toutefois de le stocker dans la base SQL. Un répertoire spécifique a été créé à cet effet (<MJobs).

On peut créer un nouveau bundle via :

  • le menu "Nouveau Fichier"
  • le menu "Fichier SQL" et ensuite, par le menu contextuel, sélectionner "Nouveau Fichier"

Un bundle contient un nombre illimité de jobs qui peuvent être de 4 types :

  • Requête SQL : exécution de n'importe quelle requête SQL. Si celle-ci est de type "select ...", alors le dataset résultant de cette requête sera renvoyé en tant que résultat à l'émetteur
  • Code C# : exécution de n'importe quel code C#
  • SQL Bulk : upload de n'importe quelle table en mode bulk dans la base de données du destinataire. Cette table peut être, soit importée d'un fichier Excel ou XML local chez l'émetteur, soit le résultat de n'importe quelle requête SQL renvoyant une seule table.
  • Copie Fichier : ceci permet de copier n'importe quel fichier disponible chez l'émetteur vers le récepteur. Chez l'émetteur, il peut s'agir d'un fichier sur disque ou d'un fichier SQL. Chez le récepteur, on peut spécifier un de ces répertoires de destination :
    • Répertoire principal
    • Répertoire data
    • Répertoire SQL principal
    • Répertoire SQL data
    • Répertoire SQL autres
    • N'importe quel autre répertoire (disque ou SQL) : il est possible de saisir une valeur quelconque dans le comboBox.

Un nouveau job s'ajoute dans le bundle en sélectionnant l'élément souhaité dans ce bouton :

 

L'ordre des lignes, donc l'ordre d'exécution des jobs, peut être modifié par drag & drop dans la liste.

L'onglet "Paramètres" permet de fixer différents points liés à l'exécution du bundle :

  • Arrêter après la première erreur : faut-il ou non exécuter les jobs suivants si un job de la liste a produit une erreur ?
  • Toujours se connecter au serveur : la connexion au serveur SQL est automatique si le bundle contient un job "Requête SQL" ou "SQL bulk". Toutefois, lors de l'exécution d'un code C#, il peut être souhaité d'utiliser la connexion SQL établie par le bundle. Dès lors, dans ce cas, il faut cocher cette case.
  • Sous transaction SQL : les  jobs "Requête SQL" ou "SQL bulk" doivent-ils être exécutés sous transaction SQL ? Si c'est le cas, un rollback sera effectué si une erreur est rencontrée (dans n'importe quel job), sinon la transaction sera committée.
  • Dans le thread de base : pour des raisons de fluidité de l'interface, un bundle est par défaut exécuté chez le destinataire dans un thread secondaire. Si un code C# contient des éléments d'interaction avec l'utilisateur (par exemple une boîte de dialogue), alors il est nécessaire de cocher cette case.
  • Ne pas demander la confirmation de l'utilisateur : ceci permet d'exécuter un bundle sans que l'utilisateur destinataire n'ait la possibilité d'accepter ou de refuser l'exécution du job. Cette option requiert que le manifeste émis par le destinataire autorise ce comportement.
  • Message : ce texte sera affiché à l'utilisateur lors de la demande de confirmation de l'exécution du bundle.

Les bundles consistent en un contenu XML comprimé.

Mercator propose aussi une liste de "easy jobs" (via le bouton en bas à gauche) qui permettent d'envoyer des jobs "pré-fabriqués" :

  • Customizer : envoyer un customizer, code-source et code compilé
  • Ecran signalétique : envoyer le paramétrage d'écran d'un signalétique (extrait table CTL + ASSEMBLIES)
  • Filtres de signalétique : envoyer les filtres personnalisés définis pour un signalétique (extrait table SIGIFILTERS)
  • Ecran séquence : envoyer le paramétrage d'écran d'une séquence (extrait table CTL + ASSEMBLIES)
  • Paramétrage documents : envoyer un document défini dans "Outils / Paramétrage Documents"
  • Action : envoyer le paramétrage d'écran d'une action (extrait table CTL + ASSEMBLIES)
  • Fermer Mercator
  • Demander Redémarrage Mercator
  • Kill Mercator : fermer "brutalement" une session Mercator, sans possibilité de sauvegarde de l'activité en cours.
  • Forcer Mise à Jour : envoyer les informations de version minimale des assemblies, comme définies par le menu "Forcer Mise à Jour" des outils avancés
  • Changer Option : modifier la valeur d'une option de "Outils / Options"
  • Modifier voucher : changer une ou plusieurs zones du voucher (donc, seules les zones devant être modifiées doivent être complétées)
  • Version des Assemblies : obtenir la version des assemblies de Mercator utilisées
  • Mettre à jour certificat : fonctionnalité identique à celle-ci

Il est bien entendu possible de mettre plusieurs "easy jobs" dans un même bundle, ainsi que des modifiers. Ils peuvent aussi servir de modèle à la réalisation d'autres jobs.

Envoi de jobs à un ou plusieurs destinataires

Cet envoi se fait par la fenêtre accessible par le menu "Activité", en cliquant sur le bouton "Ajouter Ligne". Mercator va alors demander :

  • la sélection d'un fichier de jobs
  • la sélection d'un ou plusieurs destinataires. Dans cette boîte de dialogue, un menu contextuel permet de cocher ou décocher l'ensemble des lignes. Si un seul destinataire est sélectionné, alors on peut en plus spécifier le nom de l'utilisateur ou un SPID (n° de connexion SQL) à qui s'adresse ce bundle. Sinon, le bundle sera adressé à "n'importe quel utilisateur" et sera donc ouvert par le premier qui exécutera, de façon automatique ou manuelle, l'exécution des jobs.

Si ces envois sont effectués avec succès, alors les lignes correspondantes sont ajoutées dans la grille. Le résultat est alors "vide", ce qui indique que le bundle a été envoyé mais qu'on ne dispose pas encore de la réponse.

Dans le Mercator destinataire, exécuter les jobs

L'exécution des jobs peut se faire à divers moments et selon différents modes :

  • Automatiquement, au démarrage de Mercator. Pour cela, il faut mettre à OUI les options souhaitées (menu "Outils / Options") :
    • Autres / Recevoir jobs via répertoire principal
    • Autres / Recevoir jobs via base de données SQL
    • Autres / Recevoir jobs via Mercator Online Jobs.
       
  • Manuellement via le menu "Outils / Outils Avancés / Mercator Jobs / Exécuter Jobs Reçus". Dans la boîte de dialogue, il suffit de cocher les modes de communication souhaités.
     
  • Indviduellement, si le job est reçu dans la base de données SQL. Pour cela, il faut utiliser le menu "Gestion / Fichiers SQL / Principal", localiser le fichier mjobs souhaité et via le menu contextuel, choisir "Exécuter".
     
  • Automatiquement à intervalle régulier, en mettant une valeur non nulle dans l'option "Autres / Délai exécution automatique jobs" et en mettant à "OUI" une ou plusieurs de ces 3 options 
    • Autres / Recevoir jobs via répertoire principal
    • Autres / Recevoir jobs via base de données SQL
    • Autres / Recevoir jobs via Mercator Online Jobs

Sauf si le bundle est spécifiquement envoyé avec le paramètre "Ne pas demander la confirmation de l'utilisateur", l'utilisateur peut toujours refuser l'exécution d'un bundle. La boîte de dialogue qui demande d'approuver l'exécution du bundle contiendra, le cas échéant, le message placé dans le bundle. Pour le reste, l'exécution du bundle est transparente et n'interagit pas avec l'utilisateur réceptionnaire. Les erreurs d'exécution seront placées dans le bundle pour renvoi à l'émetteur.

Réception des réponses d'après exécution dans le Mercator émetteur

La vérification des réponses peut se faire, pour l'ensemble des bundles émis, dont le résultat est encore vide, via le bouton "Obtenir Réponses" de la fenêtre d'activité. Il est aussi possible de demander une réponse inviduelle, pour un bundle, via le menu contextuel "Obtenir Réponse". Si une réponse a été reçue, alors la première colonne indique si l'enveloppe a été exécutée avec succès (OK) ou pas (ERREUR).

En double-cliquant sur une ligne de la grille, on peut ouvrir le bundle pour voir les résultats de chaque job. Celui-ci est disponible en double-cliquant sur chacune des lignes correspondant aux jobs. Les lignes des jobs n'ayant pas produit d'erreur sont en vert, les autres en rouge.

 

Astuces

Dans l'onglet "Explorateur de fichiers" réservé aux jobs, un double-clic permet d'ouvrir le bundle directement

Lors de l'édition d'une liste de jobs, un clic-droit sur une ligne correspondant à un bulk permet de voir les données qui vont être envoyées et bulkées.

Lors de l'exécution d'un code C#, on reçoit en paramètre le MercatorJobs.JobExecCsharp qui correspond au job en cours d'exécution. Via la propriété Bundle de cet objet, on peut ainsi obtenir les valeurs des propriétés du bundle : Caption, SqlConnection, ...

Le code C# doit renvoyer une chaîne de caractères. Celle-ci sera affichée comme résultat de l'exécution de ce script. Vous pouvez y prévoir vos propres messages d'erreur.

Via le menu contextuel de la fenêtre d'activité, on peut notamment cloner un bundle ou le réenvoyer.