Services Diva (dhsServices)

Généralités sur les services Diva

Les services Diva sont utilisés pour exécuter les traitements en tâche de fond ou selon une planification définie à l'avance

  • Le service DhsServices.exe est installé par défaut avec le Runtime Divalto

  • Il convient de lui attribuer un compte de service afin de permettre aux services qui en dépendent d'accéder aux ressources (SQL, fichiers joints)

    • Le compte de ce service peut partager un profil de licence Divalto avec un autre utilisateur mais doit disposer de sa propre licence IUOP

    • L'identité du compte de service doit disposer des paramètres (via propagation ou manuellement) nécessaires (Environnements, paramètres de messagerie, ..)

  • Il est également possible de réaliser une impersonation indépendamment pour chaque service

  • Le service est unique sur un même serveur mais peut exploiter plusieurs services Diva et gère les différents environnements

  • Il existe plusieurs types de services Diva :

    • Les scrutateurs (Production, WMS, Mobile, Datahub, ..) qui vont réagir à la présence d'un élément à un certain emplacement (Fichiers ou base de données)

    • Les BPM (Module Processus) qui vont exécuter des enchainements de tâches de manière planifiée

    • Les services web

 

Principe de fonctionnement

 

Les services Diva

Présentation des services

Définition

Un service Diva est un programme (écrit en Diva) qui s'exécute automatiquement lors du démarrage de l'ordinateur.
Les services Diva sont exécutés même si aucune session n'est ouverte sur le poste de travail.
Le comportement d'un service Diva est donc similaire à celui d'un service Windows.


Méthode

Pour créer des services Diva vous devez simplement :

  • Ecrire un programme Diva.

  • Ajouter une ligne dans le fichier paramètre dhsServices.txt pour demander le lancement de ce programme au démarrage de l'ordinateur.

Les services Diva sont lancés par le service « Divalto Services Diva ». Ce dernier est un service lancé par le système d'exploitation qui lit le fichier paramètre dhsServices.txt et qui lance les services Diva.

Interaction avec le bureau

En règle générale, un service est un programme qui tourne en tâche de fond sans interaction avec le bureau, c'est à dire qu'il n'effectue ni affichage, ni aucun dialogue avec l'utilisateur. Nous verrons qu'un service Diva peut tout de même ouvrir une fenêtre à partir du moment où une session utilisateur est ouverte sur le poste de travail.
Remarque : L'utilitaire Xtask.dhop permet de lancer un service Diva manuellement.

 

  • Les services Diva sont définis à l'aide du fichier 'DhsServices.txt' situé dans le dossier 'divalto\sys'.

  • Paramètres principaux :

    • Nom : Nom unique, il est recommandé de suffixer le nom du service par le nom de l'environnement

    • Programme : Programme Diva à exécuter au format DHOP

    • Utilisateur : Identifiant Divalto en charge de l'exécution du programme

    • Env : Nom de l'environnement sur lequel doit s'exécuter le programme

    • Le caractère ; devant une ligne permet de désactiver un service

Exemples :

Les services Diva peuvent être démarrés ou arrêtés à l'aide de la console d'administration (xconsole.dhop)

 

  • Le fait de redémarrer le service Windows 'DhsServices' va relancer l'ensemble des services Diva (sauf ceux qui étaient désactivés)

  • En cas de problème avec un service :

    • Vérifier le livre de bord et le journal système

    • Exécuter le programme en mode interactif

 



Fichier paramètre dhsServices.txt

Localisation du fichier


Le fichier paramètre dhsServices.txt doit se trouver dans le répertoire d'installation d'Harmony (/Divalto/Sys). S'il n'existe pas, vous pouvez le créer avec un éditeur de textes.
Le choix « Services Diva » du menu Harmony.dhop permet d'éditer ce fichier.


Format du fichier

Chaque service diva est décrit sur une et une seule ligne du fichier.
Les différents paramètres de la ligne respectent la syntaxe HMP, à savoir :

  • un nom de paramètre entre < et >

  • suivi de la valeur du paramètre.

Cette ligne est intégralement transmise au programme Diva qui est lancé. Elle pourra donc comporter des paramètres personnels.
Commentaires
Si le premier caractère significatif d'une ligne est le point-virgule, la ligne est considérée comme étant du commentaire.
Paramètres standard

<nom>

Nom du service diva. Ce nom doit être unique.
Ce nom est utilisé pour lancer manuellement un service Diva depuis Xtask.dhop.

 

 

<programme>

Nom du programme Diva à lancer.

 

 

<mode>

Si la valeur de ce paramètre est manuel le service n'est pas lancé automatiquement au démarrage de l'ordinateur. Par contre, il peut être lancé manuellement depuis Xtask.dhop.

 

 

<tache>

Numéro de tâche (ou fourchette de numéros) à utiliser. Il est possible de lancer les services avec les numéros de tâche supérieur à 16.
Exemple : <tache>17-999.
Ce paramètre est facultatif, s'il est omis, la première tâche disponible sera prise.

 

 

<windowShow>

Mode d'affichage de la fenêtre.
Attention : par défaut les services n'ouvrent pas de fenêtre. Si le service autorise une interaction avec le bureau, les services Diva pourront alors effectuer des affichages.
Les fenêtres ne seront affichées que lorsqu'une session sera ouverte.
Les valeurs possibles sont :

 

 

 

SW_HIDE

La fenêtre est cachée (valeur par défaut)
Le programme ne peut donc pas effectuer de saisie clavier. Toute instruction Diva d'entrée clavier provoque l'arrêt du programme.

 

 

SW_SHOWNORMAL

La fenêtre est affichée.

 

 

SW_SHOWMINIMIZED

La fenêtre est minimisée.

 

 

SW_SHOWMAXIMIZED

La fenêtre est maximisée.

 

<utilisateur>

Code utilisateur avec lequel le service Diva s'exécutera. Par défaut l'utilisateur $Service est utilisé.
Le service Diva aura donc les chemins implicites et les droits de l'utilisateur spécifié ici.

 

 

<domaine>

Nom de domaine. Uniquement en cas d'impersonnation.

 

 

<impersonnation>OUI

Si OUI, le programme est lancé sous le compte Windows précisé dans les paramètres <utilisateur> et <domaine>. Le mot de passe de ce compte doit être le même sous Windows et pour Harmony.
L'impersonnation permet par exemple l'utilisation des fonctions Mapi.

 

 

<env>

Nom de l'environnement d'exécution du service. Exemple : <env>ERP210 Attention : La mise en œuvre des environnements est facultative mais si elle est activée, elle concerne obligatoirement tous les services Diva d'un même fichier paramètres.

 

 

 

Paramètres spécifiques


Vous pouvez ajouter d'autres paramètres à la ligne de commande. Votre programme peut récupérer l'intégralité de la ligne et ensuite extraire les paramètres par les fonctions HmpRead et HmpSeek.
Voir Programmation d'un service Diva

Exemple de fichier dhsServices.txt
; ceci est du commentaire
<nom>xbal<programme>xbal.dhop<tache>17-999<utilisateur>DEMO
<nom>monservice<programme>monprog.dhop<tache>17-999<utilisateur>MOI<fichieratraiter>fic.dhfi
La première ligne correspond au lancement du service Xbal d'Interlogiciel..
La seconde ligne lance un service Diva spécifique. Remarquez le paramètre <fichieratraiter> qui n'est pas un paramètre standard des services. Ce paramètre pourra être lu dans le programme Diva.
Voir également :
Programmation d'un service Diva
Rubrique "Harmony Markup Parameters HMP" de la documentation Xwin - Programmation.

Paramétrage du service "Divalto Services Diva"

Si vous désirez que l'un de vos services Diva puisse effectuer des affichages, vous devez paramétrer le service « Divalto Services Diva » pour autoriser l'interaction du service avec le bureau.
Dans le gestionnaire de services, sélectionnez la ligne « Divalto Services Diva », puis appelez les propriétés et cochez la case : Autoriser le service à interagir avec le bureau.
Si vous voulez que vos services s'exécutent avec un compte utilisateur Windows autre que le compte système, spécifiez le compte et le mot de passe depuis les gestionnaire des services. Pour le service Xbal, il est indispensable que le service soit lancé depuis un compte Windows standard, afin que le profil de messagerie soit défini.
Dans le cas où un compte spécifique est utilisé, le service ne pourra pas interagir avec le bureau.
Remarques

  • Lorsque le service « Divalto Services Diva » est autorisé a interagir avec le bureau, votre service Diva peut effectuer des affichages, voir même des entrées clavier. Pour que la fenêtre soit visible il faut impérativement que le paramètre <windowShow> ne soit pas positionné à SW_HIDE.

  • Les fenêtres apparaissent uniquement lorsqu'une session est ouverte sur l'ordinateur. S'il n'y a pas de session ouverte, le programme se déroule normalement et les affichages seront effectués lors de l'ouverture de la session.

  • Si un service Diva tente de faire une entrée clavier (saisie de masque par exemple) alors que la fenêtre est cachée (SW_HIDE) ou que l'interaction avec le bureau n'est pas possible, le programme est arrêté. Un message est écrit dans le journal des événements et dans le journal Ferror.log.

  • En cas d'erreur de lancement d'un service consultez le journal des événements de Windows et le fichier journal d'Harmony.

 

Programmation d'un service Diva

Un service Diva est un programme Diva ordinaire.
Il ne doit pas effectuer de saisie (sauf éventuellement en phase de mise au point).
Par contre, il peut afficher des messages (par l'instruction Display) pour indiquer les travaux qu'il est en train d'effectuer.
Récupération des paramètres
L'intégralité de la ligne paramètre du fichier dhsServices.txt est transmise au programme par la variable d'environnement HARMONYSERVICEPARAMETRES.
Pour la lire vous devez utiliser la fonction GetEnv.
Exemple :
1 param 512
param = GetEnv("HARMONYSERVICEPARAMETRES")
Vous pouvez ensuite extraire les différents paramètres par les instructions HmpSeek et HmpRead.
ProgramCall
Un service Diva peut exécuter des instructions ProgramCall. Les programmes sont lancés avec le même mode d'affichage (caché, visible etc…) que le programme courant. Les programmes lancés peuvent également accéder à la variable d'environnement HARMONYSERVICEPARAMETRES.

Voir également :
Rubrique "Harmony Markup Parameters HMP" de la documentation Xwin - Programmation.
Rubrique "GetEnv" de la documentation Xwin - Programmation.
Rubrique "ProgramCall" de la documentation Xwin - Programmation.

ServiceMode

La fonction Diva ServiceMode permet à un programme de savoir s'il a été lancé comme un service ou comme une tâche ordinaire.
La fonction ServiceMode renvoie une des valeurs suivantes :

0

Le programme n'est pas un service Diva.

1

Le programme est un service Diva autorisé à interagir avec le bureau (c'est à dire effectuer des affichages et des saisies).

2

Le programme est un service Diva qui n'est pas autorisé à interagir avec le bureau.