Recevoir des messages AS2
Avec FlowForce Server, vous pouvez créer des tâches pour recevoir des messages AS2 depuis les partenaires de vos institutions, traiter ces données et les stocker localement. En général, ce type de tâches partage les mêmes caractéristiques que d'autres tâches FlowForce, et fournissent en outre, la fonction supplémentaire suivante :
•Vous pouvez créer, directement depuis la page de configuration de la tâche, un service AS2 qui écoute les requêtes.
•Comme illustré ci-dessous, la tâche qui reçoit les données AS2 prend deux paramètres prédéfinis, partner et message. Ces paramètres fournissent des informations concernant le partenaire d'envoi et le message d'entrée, respectivement.
L'exposition d'une tâche en tant que service AS2 fonctionne à peu près de la même manière que l'exposition d'une tâche en tant que service Web, voir aussi Exposer des tâches en tant que Services Web. Concrètement, l'URL de service AS2 se trouve dans un format comme http(s)://<flowforce-server>:<port>/service/<as2-service-name>, où :
•<http(s)> se réfère au protocole que vous pouvez choisir, HTTP ou HTTPS (cela est configuré depuis la page de configuration FlowForce Server, voir Définir les paramètres de réseau)
•<flowforce-server> est le nom d'hôte ou l'adresse IP de l'appareil sur lequel FlowForce Server est exécuté
•<port> est le nom de port (par défaut, 4646). Veuillez noter que HTTP et HTTPS ont des numéros de port différents, comme défini depuis la page de configuration, et, spécifiquement, depuis la section "FlowForce Server", voir Définir les paramètres de réseau.
•service cette partie de l'URL est toujours la même et ne peut pas être modifiée
•<as2-service-name> est le nom personnalisé que vous souhaitez donner à votre service AS2. Vous pouvez définir cette partie d'URL lorsque vous créez la tâche.
Selon vos besoins, vous pouvez configurer FlowForce Server pour accepter des requêtes provenant de clients non authentifiés (rendant ainsi le service public) ou demander une authentification HTTP de base de la part des clients. Pour rendre le service AS2 accessible sans authentification, créer la tâche de service AS2 dans un conteneur de FlowForce Server dans lequel l'utilisateur anonymous a la permission suivante : "Service: Utiliser". Pour plus d’informations sur les conteneurs et permissions, voir Permissions et Conteneurs. Pour un exemple d'une telle configuration, voir Exemple : Échange de message AS2 complet (simple).
Prérequis
Avant de pouvoir recevoir des données AS2 de la part des partenaires, les exigences préalables doivent être remplies :
•Les détails de chaque partenaire à partir duquel vous recevrez des données seront ajoutés à FlowForce Server, voir Configurer des partenaires AS2.
•Le service "FlowForce Server" doit accepter des connexions depuis des clients à distance sur une URL désignée, comme mentionné ci-dessus.
Par défaut, FlowForce Server accepte des connexions depuis localhost sur port 4646. Pour rendre le service AS2 accessible aux appareils différents de localhost, ouvrir la page de configuration, et changer l'adresse de liaison de FlowForce Server sur Toutes les interfaces (0.0.0.0) ou sur une interface spécifique, voir Définir les paramètres de réseau. De plus, assurez-vous que FlowForce Server est autorisé à communiquer par le biais du pare-feu du système d'exploitation du système. |
Note : | Le service "FlowForce Server" ne doit pas être confondu avec le service "FlowForce Web Server". Ce dernier est utilisé pour accéder à l'interface d'administration Web, accepte les connexions sur le port 8082 et a une configuration séparée, voir aussi Fonctionnement. |
Créer le service AS2
Cet exemple illustre comment créer une tâche qui expose un service AS2. Premièrement, se connecter sur l'interface d'administration FlowForce Web (voir Se connecter sur FlowForce Server). Vous pouvez créer le service AS2 dans le conteneur public par défaut ; néanmoins, il est une bonne idée de créer un conteneur séparé (parce que ce service pourrait nécessiter des permissions séparées). Cliquer sur Configuration, puis cliquer sur Créer | Créer conteneur.
Saisir le nom d'un conteneur (par exemple, "as2service"), puis cliquer sur Enregistrer et ouvrir. Ensuite, cliquez sur Créer | Créer tâche. La page de configuration s'ouvre sur :
Pour transformer cette tâche dans un service AS2, sélectionner la case à cocher Rendre cette tâche disponible sur... et saisir le nom du service (par exemple, "as2-receiver"). De plus, s'assurer de choisir AS2 service depuis la liste déroulante.
Veuillez noter que deux nouveaux paramètres ont maintenant été ajoutés automatiquement à la tâche :
Paramètre | Objectif |
---|---|
partenaire | Ce paramètre fournit l'information concernant le partenaire AS2 qui envoie le message. Le type de données de paramètre est "AS2 partner". Vous pouvez traiter cet objet dans une étape suivante et obtenir le nom local ou à distance du partenaire en tant que string, avec l'aide des fonctions d'expression FlowForce as2-partner-local-name ou as2-partner-remote-name. |
message | Ce paramètre fournit un accès au message entrant. Le type de données du message est "stream". Comme illustré ci-dessous, vous pouvez convertir le stream en un fichier en utilisant des fonctions d'expression FlowForce. |
Note : | Les paramètres prédéfinis partner et message ne doivent pas être supprimés. Si vous n'utilisez pas les paramètres prédéfinis dans des étapes ultérieures, vous pouvez les ignorer, cela ne rend pas la tâche invalide. Néanmoins, vous souhaiterez probablement traiter au moins le message entrant d'une manière ou d'une autre (par exemple, l'enregistrer dans un fichier). Comme illustré ci-dessous, cela peut être effectué en utilisant des fonctions d'expression FlowForce, et en particulier, Fonctions d'expression MIME. Dans certains cas, vous pouvez ajouter des paramètres supplémentaires à la tâche (par exemple, pour définir des valeurs constantes réutilisables sur plusieurs étapes) ; si vous procédez de la sorte, veuillez vous assurer que le paramètre a une valeur par défaut ; sinon, la tâche ne sera pas lancée lorsqu'un message AS2 arrive, et un message d'erreur sera journalisé. |
Jusqu'à présent, la tâche est configurée pour accepter les données AS2, mais elle ne touche pas encore les données. Pour pouvoir lire le contenu du message depuis le stream et l'enregistrer dans un fichier, ajoutons une nouvelle étape d'exécution à la tâche. Cliquer sur Nouvelle étape d'exécution, et chercher la fonction /system/filesystem/copy. Puis remplir les paramètres Source et Cible tel qu'illustré ci-dessous :
L'étape d'exécution ci-dessus appelle la fonction /system/filesystem/copy pour copier les données de Source à Cible. Source est une expression FlowForce. Dans cet exemple, l'expression
{as-file(message)} |
lit le paramètre message mentionné plus tôt et le convertit en un nom de fichier, avec l'aide de la fonction d'expression as-file.
L'expression
{substring(current-message-id(), 1, -1)} |
permet de réaliser les choses suivantes :
1.Elle obtient la valeur du champ d'en-tête Message-ID en tant que string, à l'aide de la fonction d'expression current-message-id. Par exemple, un Message-ID typique pourrait ressembler à <20180309125433018954-56c8aeb2fb4b478eb02f6f57662607da@somehostname>.
2.Il supprime le premier et le dernier caractère du string résultant, à l'aide de la fonction d'expression substring. Ceci pourrait pourrait faire que le Message-ID ressemble à 20180309125433018954-56c8aeb2fb4b478eb02f6f57662607da@somehostname (notez que les crochets pointus "<" and ">" ont été supprimés maintenant.
Enfin, le string ".msg" est apposé à l'expression et cela crée le chemin où FlowForce doit enregistrer le message AS2 entrant. Noter que le chemin est relatif au répertoire de travail C:\temp. Essentiellement, si quelqu'un enverra un message AS2 sur http://<flowforce-server>:<port>/service/as2-receiver, cette tâche lira le contenu de message et l'enregistrera dans un chemin comme C:\temp\20180309125433018954-56c8aeb2fb4b478eb02f6f57662607da@somehostname.msg.
Remarques :
•La case Écraser n'est pas sélectionnée, ce qui signifie que la tâche retournera une erreur dans l'événement qu'une tâche avec la même ID de message arrive deux fois.
•Le paramètre Abandonné sur erreur est activé, signifiant que la tâche échouera si la fonction de copie échoue. Une tâche échouée entraînera FlowForce à envoyer une MDN négative au partenaire. Dans ce cas, cette option est activée intentionnellement ce qui signifie que, si FlowForce échoue à enregistrer le message, il enverra une MDN négative au partenaire.
Vous avez maintenant terminé la création d'un service AS2 de base qui écoute les requêtes AS2 et stocke des messages AS2 entrant localement. Pour un exemple de la manière dont ce service AS2 peut être consommé par les clients, voir Exemple : Échange de message AS2 complet.
Dans un scénario provenant de la vie réelle, pour un traitement plus avancé, il est réaliste de penser que vous devrez ajouter plus d'étapes d'exécution à la tâche et d'utiliser d'autres fonctions d'expressions disponibles dans FlowForce. Pour faire référence à toutes les fonctions que vous pouvez appeler dans les étapes d’exécution, voir Fonctions intégrées. Pour une introduction de base des expressions FlowForce, veuillez consulter le chapitre Expressions FlowForce.
Il est possible de configurer FlowForce pour qu'il retourne un résultat avant que toutes les étapes de la tâche soient exécutées. Cela est particulièrement utile si la tâche invoquée en tant que service prend beaucoup de temps. Le résultat précoce peut être traité par l'appelant en guise de confirmation que la tâche a été acceptée par FlowForce Server pour le traitement. Pour plus de détails, voir Étapes reportées.