Processus métiers utilisant les fonctions de messagerie (bp)

De Wiki1000
(Différences entre les versions)
(Nouvelle page : ===Activités de messagerie=== Les activités disponibles pour gérer les messageries sont les suivantes : {| class="wikitable" |- | |Envoyer un Email (SMTP) |- | |Attendre la répo...)
 
Ligne 1 : Ligne 1 :
 
===Activités de messagerie===
 
===Activités de messagerie===
 
 
Les activités disponibles pour gérer les messageries sont les suivantes :
 
Les activités disponibles pour gérer les messageries sont les suivantes :
 
{| class="wikitable"
 
{| class="wikitable"
Ligne 17 : Ligne 16 :
 
|}
 
|}
  
Les activités de messageries fonctionnent sur les protocoles standards Internet. Trois scénarios sont possibles :
+
Les activités de messageries fonctionnent sur les protocoles standards Internet.  
  
envoyer un mail,
+
Trois types scénarios sont possibles :
  
recevoir un mail,
+
*Envoyer un mail,
 +
*Recevoir un mail,
 +
*Déclencher une activité dès réception d’un mail.
  
déclencher une activité dès réception d’un mail.
+
Deux méthodes sont offertes pour recueillir la réponse d’un Email :
  
 +
* REST
 +
: l’utilisateur clique sur un lien http correspondant au service d’un Serveur 1000 permettant de créer des évènements métiers. Cette possibilité suppose que l’utilisateur ait accès au domaine hébergeant le Serveur 1000 (Solution Intranet).
  
 
+
* POP3
Deux possibilités sont offertes pour recueillir la réponse d’un Email :
+
: l’utilisateur répond au message reçu en en modifiant son contenu. L’activité scrute la boîte aux lettres de retour pour recueillir la réponse (Solution Internet).
 
+
*REST : l’utilisateur clique sur un lien http correspondant au service d’un Serveur 1000 permettant de créer des évènements métiers. Cette possibilité suppose que l’utilisateur ait accès au domaine hébergeant le Serveur 1000 (Solution Intranet).
+
 
+
*POP3 : l’utilisateur répond au message reçu en en modifiant son contenu. L’activité scrute la boîte aux lettres de retour pour recueillir la réponse (Solution Internet).
+
  
 
===Exemple d’utilisation d’une réponse REST===
 
===Exemple d’utilisation d’une réponse REST===
Ligne 38 : Ligne 37 :
  
 
#Lorsqu’un utilisateur modifie le code d’un objet de WFClasseA, une instance du processus est déclenchée.
 
#Lorsqu’un utilisateur modifie le code d’un objet de WFClasseA, une instance du processus est déclenchée.
 
 
#Un email est alors envoyé à deux destinataires.
 
#Un email est alors envoyé à deux destinataires.
 
 
#Les destinataires peuvent répondre par Oui ou Non.
 
#Les destinataires peuvent répondre par Oui ou Non.
 
 
#Le processus attend la réponse, et en fonction  du choix de l’utilisateur, exécute l’une ou l’autre des activités.
 
#Le processus attend la réponse, et en fonction  du choix de l’utilisateur, exécute l’une ou l’autre des activités.
 
 
  
 
{{#images:image62.png|Guide_-_Processus_métiers}}
 
{{#images:image62.png|Guide_-_Processus_métiers}}
 
 
  
 
Comme précédemment le déclenchement du processus utilise un évènement métier, l’activité suivante est l’envoi de l’email.
 
Comme précédemment le déclenchement du processus utilise un évènement métier, l’activité suivante est l’envoi de l’email.
Ligne 69 : Ligne 61 :
 
les adresses sont séparées par des points-virgules,
 
les adresses sont séparées par des points-virgules,
  
si l’adresse contient un caractère arobase @ alors il s’agit d’une adresse externe Internet
+
*si l’adresse contient un caractère arobase @ alors il s’agit d’une adresse externe Internet
 
+
*si l’adresse ne contient pas de caractère arobase @ alors il s’agit d’une adresses interne d’une boîte à message de l’application.
si l’adresse ne contient pas de caractère arobase @ alors il s’agit d’une adresses interne d’une boîte à message de l’application.
+
  
 
Le corps du message est rédigé en HTML. Il contient les URL qui permettent à l’utilisateur de répondre. Pour placer ces URL, sélectionnez une zone de texte qui constituera le texte associée à l’URL puis utilisez la fonction URL de la barre d’outils.
 
Le corps du message est rédigé en HTML. Il contient les URL qui permettent à l’utilisateur de répondre. Pour placer ces URL, sélectionnez une zone de texte qui constituera le texte associée à l’URL puis utilisez la fonction URL de la barre d’outils.
Ligne 95 : Ligne 86 :
 
L’enchainement du processus en fonction de la réponse du destinataire est réalisé ainsi :  
 
L’enchainement du processus en fonction de la réponse du destinataire est réalisé ainsi :  
  
Si le destinataire répond OK la séquence Succès suivante est exécutée.
+
*Si le destinataire répond OK la séquence Succès suivante est exécutée.
 
+
*Si le destinataire répond NOK la séquence Echec suivante est exécutée.
Si le destinataire répond NOK la séquence Echec suivante est exécutée.
+
  
 
Les activités qui suivront ne feront qu’écrire un message dans l’historique de l’instance.
 
Les activités qui suivront ne feront qu’écrire un message dans l’historique de l’instance.
  
 
{{#images:image67.png|Guide_-_Processus_métiers}}
 
{{#images:image67.png|Guide_-_Processus_métiers}}
 
 
  
 
Exécutez cet exemple en utilisant une machine locale.
 
Exécutez cet exemple en utilisant une machine locale.
Ligne 110 : Ligne 98 :
  
 
{{#images:image68.png|Guide_-_Processus_métiers}}
 
{{#images:image68.png|Guide_-_Processus_métiers}}
 
 
  
 
Si nous avions utilisé un Service 1000 comme Serveur du processus ces informations seraient renseignées dans son fichier de configuration.
 
Si nous avions utilisé un Service 1000 comme Serveur du processus ces informations seraient renseignées dans son fichier de configuration.
Ligne 122 : Ligne 108 :
  
 
{{#images:image70.png|Guide_-_Processus_métiers}}
 
{{#images:image70.png|Guide_-_Processus_métiers}}
 
 
  
 
Démarrez une instance du processus en modifiant un objet de la classe métier.
 
Démarrez une instance du processus en modifiant un objet de la classe métier.
  
 
{{#images:image71.png|Guide_-_Processus_métiers}}
 
{{#images:image71.png|Guide_-_Processus_métiers}}
 
 
  
 
L’instance a démarré.
 
L’instance a démarré.
Ligne 138 : Ligne 120 :
  
 
{{#images:image73.png|Guide_-_Processus_métiers}}
 
{{#images:image73.png|Guide_-_Processus_métiers}}
 
 
  
 
Il est possible de répondre à partir de la boîte à messages accessible depuis  la barre Outlook, la barre d’outils de votre application Desktop ou le menu Fichier de votre application web.
 
Il est possible de répondre à partir de la boîte à messages accessible depuis  la barre Outlook, la barre d’outils de votre application Desktop ou le menu Fichier de votre application web.
Ligne 154 : Ligne 134 :
  
 
{{#images:image76.png|Guide_-_Processus_métiers}}
 
{{#images:image76.png|Guide_-_Processus_métiers}}
 
 
  
 
Après avoir renseigné les informations de connexion, l’utilisateur est redirigé sur l’écran.
 
Après avoir renseigné les informations de connexion, l’utilisateur est redirigé sur l’écran.
 
 
  
 
{{#images:image77.png|Guide_-_Processus_métiers}}
 
{{#images:image77.png|Guide_-_Processus_métiers}}
Ligne 168 : Ligne 144 :
  
 
L’exécution du service a été réalisée et sa réponse est un fragment XML indiquant que l’évènement a bien été créé. (TODO)
 
L’exécution du service a été réalisée et sa réponse est un fragment XML indiquant que l’évènement a bien été créé. (TODO)
 
 
  
 
Concernant le processus, on constate que l’instance s’est terminée, et il est possible de visualiser le le journal  de ce processus.
 
Concernant le processus, on constate que l’instance s’est terminée, et il est possible de visualiser le le journal  de ce processus.
Ligne 180 : Ligne 154 :
  
 
{{#images:image80.png|Guide_-_Processus_métiers}}
 
{{#images:image80.png|Guide_-_Processus_métiers}}
 
 
  
 
===Exemple utilisant une réponse POP3===
 
===Exemple utilisant une réponse POP3===
Ligne 188 : Ligne 160 :
  
 
L’envoi de l’email a été modifié pour permettre une réponse par messagerie.
 
L’envoi de l’email a été modifié pour permettre une réponse par messagerie.
 
 
  
 
{{#images:image81.png|Guide_-_Processus_métiers}}
 
{{#images:image81.png|Guide_-_Processus_métiers}}
 
 
  
 
Les fragments entre crochet seront substitués à l’exécution ; ils ont été insérés avec la fonction suivante de la barre d’outils.
 
Les fragments entre crochet seront substitués à l’exécution ; ils ont été insérés avec la fonction suivante de la barre d’outils.
Ligne 207 : Ligne 175 :
 
{{#images:image83.png|Guide_-_Processus_métiers}}
 
{{#images:image83.png|Guide_-_Processus_métiers}}
  
<font face="verdana">Exemple</font>
+
Exemple :
  
 
{{#images:image84.png|Guide_-_Processus_métiers}}
 
{{#images:image84.png|Guide_-_Processus_métiers}}
 
 
  
 
L’email est reçu dans le logiciel de messagerie.
 
L’email est reçu dans le logiciel de messagerie.
 
 
  
 
{{#images:image85.png|Guide_-_Processus_métiers}}
 
{{#images:image85.png|Guide_-_Processus_métiers}}
Ligne 222 : Ligne 186 :
  
 
{{#images:image86.png|Guide_-_Processus_métiers}}
 
{{#images:image86.png|Guide_-_Processus_métiers}}
 
 
  
 
L’envoi de la réponse est détecté par l’instance du processus qui se termine. Vous retrouvez la trace dans le journal.
 
L’envoi de la réponse est détecté par l’instance du processus qui se termine. Vous retrouvez la trace dans le journal.
 
 
  
 
{{#images:image87.png|Guide_-_Processus_métiers}}
 
{{#images:image87.png|Guide_-_Processus_métiers}}
 
 
  
 
===Cas d’utilisation déclenchant un processus par la réception d’un email===
 
===Cas d’utilisation déclenchant un processus par la réception d’un email===
  
 
Dans cet exemple vous allez réaliser un processus déclenché par la réception d’un email dans une boîte de messagerie. Le processus répond ensuite à l’email puis se termine.
 
Dans cet exemple vous allez réaliser un processus déclenché par la réception d’un email dans une boîte de messagerie. Le processus répond ensuite à l’email puis se termine.
 
 
  
 
{{#images:image88.png|Guide_-_Processus_métiers}}
 
{{#images:image88.png|Guide_-_Processus_métiers}}
 
 
  
 
====Evènement initial====
 
====Evènement initial====
Ligne 254 : Ligne 208 :
  
 
L’activité envoyant la réponse est paramétrée dans la boîte de dialogue des propriétés de l’activité « Envoyer un email »..  
 
L’activité envoyant la réponse est paramétrée dans la boîte de dialogue des propriétés de l’activité « Envoyer un email »..  
 
 
  
 
{{#images:image90.png|Guide_-_Processus_métiers}}
 
{{#images:image90.png|Guide_-_Processus_métiers}}
Ligne 270 : Ligne 222 :
  
 
Exécutez ce processus en  utilisant le logiciel de messagerie d’envoi d’email dans la boîte à lettre utilisée par le processus.
 
Exécutez ce processus en  utilisant le logiciel de messagerie d’envoi d’email dans la boîte à lettre utilisée par le processus.
 
 
  
 
{{#images:image91.png|Guide_-_Processus_métiers}}
 
{{#images:image91.png|Guide_-_Processus_métiers}}
 
 
  
 
La réception de l’Email a créé une instance, celle-ci a répondu puis s’est terminée. Vous en trouvez la trace dans le journal.
 
La réception de l’Email a créé une instance, celle-ci a répondu puis s’est terminée. Vous en trouvez la trace dans le journal.
 
 
  
 
{{#images:image92.png|Guide_-_Processus_métiers}}
 
{{#images:image92.png|Guide_-_Processus_métiers}}
 
 
  
 
Vous pouvez aussi consulter les paramètres de l’email.
 
Vous pouvez aussi consulter les paramètres de l’email.
  
 
{{#images:image93.png|Guide_-_Processus_métiers}}
 
{{#images:image93.png|Guide_-_Processus_métiers}}
 
 
  
 
Consultez la boîte à lettre de l’expéditeur pour retrouver la réponse.
 
Consultez la boîte à lettre de l’expéditeur pour retrouver la réponse.
Ligne 301 : Ligne 243 :
 
Le scénario est le suivant :  
 
Le scénario est le suivant :  
  
un processus est déclenché immédiatement,
+
#un processus est déclenché immédiatement,
 
+
#l’instance du processus envoi un email à l’utilisateur,
l’instance du processus envoi un email à l’utilisateur,
+
#l’instance du processus attend la création de saisie du formulaire.
 
+
l’instance du processus attend la création de saisie du formulaire.
+
  
 
Le modèle du processus est le suivant :  
 
Le modèle du processus est le suivant :  
Ligne 368 : Ligne 308 :
  
 
{{#images:image105.png|Guide_-_Processus_métiers}}
 
{{#images:image105.png|Guide_-_Processus_métiers}}
 
 
  
 
Lorsque l’utilisateur valide sa saisie, l’instance du processus peut évoluer.
 
Lorsque l’utilisateur valide sa saisie, l’instance du processus peut évoluer.
 
 
  
 
{{#images:image106.png|Guide_-_Processus_métiers}}
 
{{#images:image106.png|Guide_-_Processus_métiers}}

Version du 19 août 2009 à 11:16

Sommaire

Activités de messagerie

Les activités disponibles pour gérer les messageries sont les suivantes :

Envoyer un Email (SMTP)
Attendre la réponse d’un Email (REST)
Attendre la réponse d’un Email (POP3)
Attente de réception d’Email dans une boîte à lettre (POP3)

Les activités de messageries fonctionnent sur les protocoles standards Internet.

Trois types scénarios sont possibles :

  • Envoyer un mail,
  • Recevoir un mail,
  • Déclencher une activité dès réception d’un mail.

Deux méthodes sont offertes pour recueillir la réponse d’un Email :

  • REST
l’utilisateur clique sur un lien http correspondant au service d’un Serveur 1000 permettant de créer des évènements métiers. Cette possibilité suppose que l’utilisateur ait accès au domaine hébergeant le Serveur 1000 (Solution Intranet).
  • POP3
l’utilisateur répond au message reçu en en modifiant son contenu. L’activité scrute la boîte aux lettres de retour pour recueillir la réponse (Solution Internet).

Exemple d’utilisation d’une réponse REST

Déroulement du processus :

  1. Lorsqu’un utilisateur modifie le code d’un objet de WFClasseA, une instance du processus est déclenchée.
  2. Un email est alors envoyé à deux destinataires.
  3. Les destinataires peuvent répondre par Oui ou Non.
  4. Le processus attend la réponse, et en fonction du choix de l’utilisateur, exécute l’une ou l’autre des activités.

image62.png

Comme précédemment le déclenchement du processus utilise un évènement métier, l’activité suivante est l’envoi de l’email.

Onglet « Mail »

image63.png

Onglet « Mail »

Identifiant

L’identifiant du mail est un identifiant arbitraire utilisé pour réaliser le lien avec l’activité qui va gérer la réponse.

Adresse

La saisie des adresses des destinataires utilise la convention suivante :

les adresses sont séparées par des points-virgules,

  • si l’adresse contient un caractère arobase @ alors il s’agit d’une adresse externe Internet
  • si l’adresse ne contient pas de caractère arobase @ alors il s’agit d’une adresses interne d’une boîte à message de l’application.

Le corps du message est rédigé en HTML. Il contient les URL qui permettent à l’utilisateur de répondre. Pour placer ces URL, sélectionnez une zone de texte qui constituera le texte associée à l’URL puis utilisez la fonction URL de la barre d’outils.

image64.png

Le corps du message contient aussi des valeurs d’attributs du processus qui seront substituées à l’exécution : [Instance.unCode] la valeur entre les crochets est une expression qui sera évaluée par l’activité lors de l’exécution.

Onglet « Avancé »

Le lien vers l’écran associé fonctionne si vous renseignez le nom de l’écran dans l’onglet « Avancé ».

image65.png

Il permet à l’utilisateur d’accéder directement à une interface en rapport avec l’objet métier associé à l’instance du processus.

L’attente de la réponse à l’email est paramétrée de la façon suivante :

image66.png

Il suffit de reprendre l’identifiant de l’activité mail pour effectuer le lien avec l’email envoyé.

L’enchainement du processus en fonction de la réponse du destinataire est réalisé ainsi :

  • Si le destinataire répond OK la séquence Succès suivante est exécutée.
  • Si le destinataire répond NOK la séquence Echec suivante est exécutée.

Les activités qui suivront ne feront qu’écrire un message dans l’historique de l’instance.

image67.png

Exécutez cet exemple en utilisant une machine locale.

Tout d’abord ce processus envoi un Email à travers le protocole SMTP, il faut donc fournir les informations sur le serveur de messagerie utilisé. Avec l’application Desktop cela s’effectue dans le panneau de configuration du menu Fichier.

image68.png

Si nous avions utilisé un Service 1000 comme Serveur du processus ces informations seraient renseignées dans son fichier de configuration.

Ensuite le processus attend une réponse renvoyée à travers un service du Serveur 1000, il faut donc exécuter un Serveur 1000 pour récupérer cette réponse.

image69.png

Utilisez une machine locale. Cette machine n’étant pas le Serveur 1000 qui récupérera la réponse, il est nécessaire de renseigner l’adresse de ce serveur. Cela s’effectue sur les propriétés des « Serveurs de processus métiers ».

image70.png

Démarrez une instance du processus en modifiant un objet de la classe métier.

image71.png

L’instance a démarré.

image72.png

Vérifiez que les emails ont été envoyés. Tout d’abord dans la boîte à message de l’utilisateur vous retrouvez le message de départ.

image73.png

Il est possible de répondre à partir de la boîte à messages accessible depuis la barre Outlook, la barre d’outils de votre application Desktop ou le menu Fichier de votre application web.

image74.png

Puis dans le compte de votre messagerie.

image75.png

L’adresse du destinataire provient du paramètre situé dans les préférences de l’utilisateur (TODO).

Consultez l’écran associé au message en cliquant sur le lien du message, le navigateur est ouvert par le logiciel de messagerie. A cet instant l’utilisateur n’a pas de session ouverte sur le Serveur 1000, la page de connexion est donc tout d’abord proposée.

image76.png

Après avoir renseigné les informations de connexion, l’utilisateur est redirigé sur l’écran.

image77.png

Répondez maintenant « Répondre à l’email » en cliquant sur le lien Réponse NOK. Comme il s’agit d’un lien, le navigateur est ouvert par le logiciel de messagerie.

image78.png

L’exécution du service a été réalisée et sa réponse est un fragment XML indiquant que l’évènement a bien été créé. (TODO)

Concernant le processus, on constate que l’instance s’est terminée, et il est possible de visualiser le le journal de ce processus.

image79.png

La réponse reçue est bien NOK.

Vous pouvez aussi consulter les deux évènements métiers utilisés par ce processus : le changement d’état initial de l’objet métier et l’évènement créé par la réponse de l’utilisateur.

image80.png

Exemple utilisant une réponse POP3

Ce second exemple est identique au précédent, excepté la réponse de l’utilisateur qui est retrouvée dans sa réponse à l’email. C’est la référence du mail qui fait le lien.

L’envoi de l’email a été modifié pour permettre une réponse par messagerie.

image81.png

Les fragments entre crochet seront substitués à l’exécution ; ils ont été insérés avec la fonction suivante de la barre d’outils.

image82.png

Pour que la réponse de l’utilisateur soit reconnue, il est important qu’elle contienne la référence de l’email , le reste du texte n’a pas d’importance.

Si la réponse contient le fragment correspondant à [mailreponse_ok] la réponse sera considérée comme positive.

Pour paramétrer l’attente d’une réponse POP3, il faut paramétrer les informations nécessaires à la connexion sur le serveur de messagerie POP3.

image83.png

Exemple :

image84.png

L’email est reçu dans le logiciel de messagerie.

image85.png

Répondez en acceptant la réponse, pour cela supprimez la clause de refus.

image86.png

L’envoi de la réponse est détecté par l’instance du processus qui se termine. Vous retrouvez la trace dans le journal.

image87.png

Cas d’utilisation déclenchant un processus par la réception d’un email

Dans cet exemple vous allez réaliser un processus déclenché par la réception d’un email dans une boîte de messagerie. Le processus répond ensuite à l’email puis se termine.

image88.png

Evènement initial

L’évènement initial est la réception d’un email par le protocole POP3. En double-cliquant sur l’activité « Réception d’un Email dans une boîte à lettre », vous la paramétrez avec les informations de connexion du compte POP3.

image89.png

Le préfixe des paramètres sera utilisé pour copier les informations de l’email déclencheur dans les paramètres de l’instance.

Activité

L’activité envoyant la réponse est paramétrée dans la boîte de dialogue des propriétés de l’activité « Envoyer un email »..

image90.png

L’activité utilise les informations copiées lors de la création de l’instance pour :

déterminer l’adresse du destinataire : [GetParameter(‘inbox’,’ReplyTo’) ],

déterminer l’objet de l’Email : [Get(‘inbox.Subject’) ],

déterminer le corps de l’Email : [Get(‘inbox.Content’)].

Les deux formes GetParameter et Get sont équivalentes dans cet exemple.

Exécutez ce processus en utilisant le logiciel de messagerie d’envoi d’email dans la boîte à lettre utilisée par le processus.

image91.png

La réception de l’Email a créé une instance, celle-ci a répondu puis s’est terminée. Vous en trouvez la trace dans le journal.

image92.png

Vous pouvez aussi consulter les paramètres de l’email.

image93.png

Consultez la boîte à lettre de l’expéditeur pour retrouver la réponse.

image94.png

Cas d’utilisation faisant appel à un formulaire

Dans cet exemple vous allez envoyer un mail en demandant au destinataire de remplir un formulaire.

Le scénario est le suivant :

  1. un processus est déclenché immédiatement,
  2. l’instance du processus envoi un email à l’utilisateur,
  3. l’instance du processus attend la création de saisie du formulaire.

Le modèle du processus est le suivant :

image95.png

Le formulaire

Le formulaire lui-même est un écran Sage 1000 qui stockera le contenu de la saisie dans une classe persistante. Le modèle de cette classe contient un champ InstanceId qui stockera l’identifiant de l’instance du processus. Ce champ constitue aussi une clé unique qui évitera la double saisie.

image96.png

L’écran de saisie du formulaire est un écran simple sur lequel les options de navigation ont été supprimées.

image97.png

L’écran possède un argument qui va permettre de renseigner automatiquement l’instance du processus.

image98.png

L’envoi du mail

Dans les propriétés du processus (onglet « Avancés »), associez la classe métier du formulaire, ceci permettra de configurer les activités plus facilement.

image99.png

L’activité email est paramétrée.

image100.png

Le contenu du message est un lien vers l’écran de saisi, l’onglet avancé paramètre ce dernier.

image101.png

L’écran de saisie est ouvert en mode création. Ainsi l’utilisateur n’a plus qu’à remplir les champs et valider. L’argument de l’écran ArgInstanceId sera automatiquement renseigné avec l’identifiant de l’instance du processus.

Dans cet exemple utilisez InstanceGUID comme identifiant d’instance.

La réception de la réponse au formulaire

Pour retrouver la réponse vous avez enregistré un évènement métier déclenché par la création d’un objet de la classe formulaire.

image102.png

L’activité « Attente d’un évènement métier » est utilisée et paramétrée de la façon suivante.

image103.png

Lors de l’exécution de l’activité, le processus n’a pas encore d’objet métier associé, l’attribut « Instance » du processus n’est donc pas globalement défini. Cependant, dans le contexte de cette activité il représente l’objet associé à l’évènement.

Il est possible de tester dans les Post-Conditions que l’objet correspond bien à l’instance de processus.

image104.png

En cochant la case« Définir comme objet de l’instance » de l’onglet « Général », vous associez l’objet de l’évènement à l’instance du processus. Cette association sera effective uniquement pour les activités qui suivront.

Exécutez le processus

https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/

Lorsque l’utilisateur clique sur le lien, il accède à l’écran du formulaire.

image105.png

Lorsque l’utilisateur valide sa saisie, l’instance du processus peut évoluer.

image106.png

Processus Métiers (bp)Développement DSM





Whos here now:   Members 0   Guests 0   Bots & Crawlers 1
 
Outils personnels