Utilisation de transactions à long terme
Les scénarios suivants décrivent l'utilisation des transactions à long terme.
Scénario 1 : Utilisation de transactions de longue durée avec des délais d’expiration
Les étendues à long terme peuvent être associées à un délai, qui est une durée logique au terme de laquelle le travail à long terme doit être fini. Si l’étendue ne se termine pas dans le délai spécifié, une exception système prédéfinie TimeoutException est levée.
Vous pouvez créer des processus à long terme soit en marquant l'intégralité de l'orchestration à long terme soit en imbriquant les autres étendues dans une étendue à long terme externe. Dans le premier cas, un gestionnaire d'exceptions fourni par le système est exécuté, tandis que le second cas permet l'association de gestionnaires d'exceptions spécifiques à l'étendue externe. Le gestionnaire d'exceptions fourni par le système exécute le gestionnaire de compensation pour chacune des étendues transactionnelles imbriquées correctement terminées, le cas échéant, dans l'ordre inverse de leur achèvement. Vous pouvez obtenir le même résultat par le biais d'une auto-compensation en utilisant la forme Compenser dans le gestionnaire d'exceptions pour une transaction à long terme.
L'orchestration suivante illustre l'association des délais aux transactions à long terme.
Transactions à long terme avec délais d'expiration
Parfois, il est nécessaire d'assurer l'interface avec les systèmes hérités fonctionnant en mode par lots. Ce scénario présente un bon de commande reçu et envoyé au système hérité. Le système hérité traite le bon de commande et renvoi un accusé de réception de bon de commande. L'opération d'envoi initialise un ensemble de corrélations en utilisant le numéro du bon de commande et l'opération de réception suit cet ensemble de corrélations. L'opération de réception est une étendue à long terme avec une valeur de délai.
Le moteur d'orchestration met l'instance d'orchestration en attente de la réception. La corrélation garantit que la même instance d'orchestration est appelée une fois le message reçu. Si l’accusé de réception du bon de commande n’arrive pas dans l’intervalle de temps spécifié par les valeurs de délai d’expiration, une exception TimeoutException est levée.
Scénario 2 : Utilisation de transactions de longue durée avec une compensation personnalisée
Les orchestrations suivantes montrent comment associer et appeler des compensations personnalisées liées à des orchestrations entières. Ce scénario insère un nouveau client et des informations de commande pour le client. La logique de l'orchestration impose qu'en cas d'échec de l'insertion de la commande, l'insertion du client doit être annulée. L'insertion du client peut être effectuée par un système hérité, et donc illustrée dans une orchestration pouvant être appelée séparément. L’orchestration appelée a la propriété Personnalisée définie pour la compensation, qui fournit une feuille distincte pour effectuer le processus de compensation. La compensation doit supprimer le client récemment inséré.
L'orchestration appelante dispose d'une étendue à long terme pour effectuer l'insertion de la commande. Cette étendue est imbriquée dans une étendue à long terme. L'étendue externe dispose d'un gestionnaire d'exceptions associé pour intercepter les exceptions. Le gestionnaire utilise la forme Compenser pour appeler l'exception personnalisée associée à l'orchestration appelée pour annuler les modifications qui pourraient avoir été apportées pendant l'appel de l'orchestration.
Transactions à long terme avec compensation personnalisée
Orchestration appelée (principal)
Orchestration appelée (compensation)