Didacticiels > Solution Designer > Workflow > Personnalisation des workflows dans Therefore™ Online > Fonctions Azure hébergées par l’utilisateur Personnalisation des workflows dans Therefore™ Online |
Scroll |
Comment configurer la tâche « Appeler une fonction » dans Therefore™ Online ?
La tâche « Appeler une fonction » permet de personnaliser Therefore™ Online. Vous pouvez l'utiliser comme toute autre tâche de workflow automatique. Lorsque la tâche est exécutée, une requête POST HTTP(S) est envoyée à l'URL spécifiée. Cette « URL de requête » est l'unique champ obligatoire de la configuration.
|
---|
Le diagramme suivant illustre les interactions entre les différents composants. Lorsque la tâche « Appeler une fonction » est exécutée dans le moteur de workflow Therefore™, une requête POST HTTPS est envoyée à la fonction. Si l'appel aboutit, la fonction appelée est exécutée et appelle probablement Therefore™ Server à l'aide de Web API pour récupérer des documents, des données d'index ou toute autre information complémentaire requise.
La fonction appelée peut être une fonction Azure, un service Web ou tout code exécutable capable de répondre à une requête POST HTTPS. Il est toutefois nécessaire que la fonction appelée renvoie un objet JSON contenant la chaîne « TheError » et soit la valeur booléenne « TheRoutingDone », soit l'entier « TheRetryAfterMin ». Si une fonction a été développée par Therefore™, elle peut être hébergée dans l'abonnement Azure de Therefore™ Online.
Pour raisons de sécurité, les fonctions développées par les clients doivent s'exécuter dans leur propre abonnement Azure ou dans leur infrastructure. Comme indiqué dans le diagramme, toutes les connexions entre Therefore™ et la fonction appelée ne sont que des requêtes POST HTTPS et des appels (Web) API. Aucun code client n'est directement exécuté par le service du serveur, et aucun code client ne s'exécute au sein de l'environnement Therefore™ Online. Toutes les permissions doivent être vérifiées normalement pour les appels Web API. Le jeton d'accès fourni avec la requête HTTPS se limite à l'instance de workflow en cours uniquement. En raison de cette architecture, l'utilisation de workflows personnalisés dans Therefore™ Online est sécurisée.
|
---|
Comment écrire une tâche « Appeler une fonction » ?
La fonction appelée peut être une fonction Azure, un service Web ou toute application accessible publiquement et capable d'être déclenchée par une requête HTTPS. L'unique élément obligatoire correspond aux « paramètres de retour » suivants que la fonction doit envoyer sous forme de réponse JSON : •TheError : valeur de chaîne obligatoire. Si la chaîne n'est pas vide, elle s'affiche dans l'historique du workflow. L'instance est marquée comme erronée, à moins qu'une nouvelle tentative ultérieure soit demandée. •TheRetryAfterMin : valeur entière facultative. Permet de demander une nouvelle tentative à Thereforeâ„¢.
Si elle est réglée sur une valeur supérieure à zéro, la tâche « Appeler une fonction » se comporte comme une tâche « Attendre » et envoie une nouvelle requête après l'intervalle de temps (approximatif) exprimé en minutes spécifié. Si la valeur « TheError » est définie, elle est traitée comme un avertissement et l'instance de workflow n'est pas marquée comme erronée. •TheRoutingDone : valeur booléenne obligatoire, à moins que la valeur « TheRetryAfterMin » ne soit spécifiée.
Vous pouvez la régler sur « true » pour indiquer que l'acheminement de l'instance de workflow a déjà été effectué par la fonction à l'aide de la fonction Web API « FinishCurrentWorkflowTask ». Si elle est réglée sur « false », Therefore™ achemine l'instance de workflow vers la tâche suivante. Si vous spécifiez « TheRetryAfterMin », l'acheminement n'est pas encore exécuté et, dans ce cas de figure, le paramètre est donc facultatif. À chaque appel de fonction, Therefore™ envoie les paramètres suivants à la fonction sous forme de jeton JSON avec la requête HTTPS :
•TheWebAPIUrl : contient le paramètre de serveur « URL Web API », que vous pouvez configurer sur l'onglet « XML Web Service » ou dans les paramètres avancés. Ce paramètre est déjà configuré correctement si vous utilisez Thereforeâ„¢ Online, mais peut rester vide s'il n'est pas configuré. •TheTenant : nom du locataire en cours. Ce paramètre est vide si le système n'utilise pas plusieurs locataires. •TheAccessToken : jeton JWT que vous pouvez utiliser pour vous connecter à Thereforeâ„¢ à l'aide de Web API.
Le jeton est configuré de sorte à permettre à l'utilisateur associé à « $TheWFSystem » d'accéder au document ou au dossier relatif à l'instance de workflow en cours, ainsi qu'à l'instance de workflow et au jeton en cours. Avec les permissions dont il dispose, il peut modifier le document associé, le dossier ou les documents associés au dossier. Les permissions dont il dispose lui permettent également d'autoriser l'acheminement de l'instance de workflow vers une autre tâche. Il n'est pas autorisé à créer des documents ou des dossiers ni à exécuter des requêtes. Il n'est pas non plus autorisé à supprimer le dossier ou le document principal associé à l'instance de workflow, ni l'instance de workflow en tant que telle. •TheInstanceNo : numéro de l'instance de workflow en cours. •TheTokenNo : numéro de jeton de l'instance de workflow en cours. •TheCaseNo : numéro du dossier associé à l'instance de workflow. Ce paramètre est réservé aux workflows associés aux dossiers. •TheDocNo : numéro du document principal associé à l'instance de workflow. Ce paramètre est réservé aux workflows associés aux documents. •TheSettings : objet JSON (transmis sous forme de chaîne) de tous les « paramètres de fonction personnalisés » configurés.
Cet objet peut être vide ou utilisé pour transmettre d'autres paramètres à la fonction appelée. Vous pouvez sélectionner le nom et la valeur de votre choix pour chaque paramètre, mais les noms doivent être uniques conformément aux spécifications JSON. Toutes les valeurs sont traitées comme des valeurs de chaîne et doivent être converties dans un autre type au sein de la fonction, si besoin est.
Si vous configurez une clé de fonction associée aux fonctions Azure, la requête HTTPS l'inclut en tant que « x-functions-key » dans l'en-tête de la requête.
Toute information complémentaire requise doit être récupérée à l'aide de Therefore™ Web API, soit à l'aide du jeton JWT fourni, soit en indiquant un nom d'utilisateur et un mot de passe si d'autres droits sont nécessaires. Si des fonctions Azure sont utilisées, les informations de connexion peuvent être indiquées dans les paramètres de l'application sous la forme « WebAPIUser » et « WebAPIPassword ». Si ces paramètres ne sont pas définis, la fonction utilise le jeton JWT par défaut.
Lorsque vous écrivez une fonction, veillez à envoyer une réponse en moins de 4 minutes, sous peine que l'appel de fonction dépasse le délai imparti. Envisagez également d'utiliser le paramètre « TheError » pour renvoyer toute exception interceptée, afin de faciliter l'identification du problème.
|
---|
La personnalisation est-elle soumise à des restrictions ?
La personnalisation n'est soumise à quasiment aucune restriction.
Si des fonctions Azure sont utilisées, Azure impose certaines restrictions (lors du chargement des dépendances, en raison de l'environnement PaaS (Platform as a Service) ou du temps d'exécution (délai HTTPS de 230 secondes), par exemple). D'autres implications sont par ailleurs liées à l'exécution de votre code dans Azure.
Pour contourner la restriction associée au délai imparti, écrivez une fonction asynchrone qui envoie une requête de nouvelle tentative à Therefore™. L'exécution peut ainsi continuer dans une tâche en arrière-plan distincte et le résultat/la réponse peut être renvoyé(e) à Therefore™ lorsque la requête de nouvelle tentative suivante est déclenchée.
En raison des restrictions relatives à la dépendance dans Azure, il est impossible d'utiliser Therefore™ API. Vous devez donc utiliser Web API. Pour contourner cette restriction, exécutez la fonction HTTPS déclenchée sur un ordinateur hébergeant une installation Therefore™. L'unique impératif à respecter dans ce cas de figure est que l'ordinateur doit être accessible depuis l'extérieur.
|
---|
© 2024 Therefore Corporation, tous droits réservés.