Appeler des transactions

Les transactions d'appel permettent d'appeler une ou plusieurs commandes de cluster sur un nœud cible. Elle est semblable aux appels de procédure à distance effectués vers une commande définie dans le cluster.

Comme les transactions d'écriture, les transactions d'invocation sont compatibles avec les transactions avec et sans délai. Pour en savoir plus sur les transactions temporisées, consultez la section Actions temporisées et non temporisées.

Transaction d'appel sans délai

Séquence d'opérations d'une transaction d'appel non temporisée
Figure 1 : Transaction d'appel sans délai

Appeler l'action de demande

Direction : Initiateur -> Cible

Comme pour les actions "Read Request Action" et "Write Request Action", dans cette action, l'initiateur fournit la cible avec :

  • Invoke Requests (Requêtes d'appel) : liste des chemins d'accès aux commandes de cluster, ainsi que des arguments facultatifs des commandes, appelés Command Fields (Champs de commande).
  • Timed Request : indicateur qui indique si cette action fait partie d'une transaction d'appel temporisée.
  • Supprimer la réponse : indicateur indiquant si l'action "Appeler la réponse" doit être supprimée.
  • ID d'interaction : entier utilisé pour faire correspondre l'action de requête d'appel à l'action de réponse d'appel.

Appeler l'action de réponse

Direction : Cible -> Initiateur

Une fois que la cible a reçu l'action de requête d'appel, elle finalise la transaction avec une action de réponse d'appel qui contient les éléments suivants :

  • Réponses d'invocation : liste des réponses aux commandes ou de l'état de chaque demande d'invocation envoyée.
  • ID d'interaction : entier utilisé pour faire correspondre l'action de réponse à l'action de requête d'appel.

Restrictions d'invocation sans durée

L'action de demande d'appel peut être une diffusion de groupe, mais dans ce cas, l'indicateur Supprimer la réponse doit être défini. L'idée est d'éviter que le réseau ne soit inondé par les réponses simultanées de chaque membre d'un groupe.

Pour activer ce comportement, le chemin d'accès utilisé dans la liste "Appeler des requêtes" peut contenir des groupes ou des caractères génériques, mais uniquement dans le champ "Point de terminaison". De plus, si l'action est une diffusion de groupe, cette transaction se termine sans réponse.

Transactions d'appel temporisées

Comme les transactions d'écriture temporisées, les transactions d'appel temporisées commencent également par l'action de requête temporisée.

Séquence d'opérations d'une transaction d'appel temporisé
Figure 2 : Transaction d'appel temporisé

Action de demande temporisée

Direction : Initiateur -> Cible

Un initiateur lance la transaction en envoyant cette action qui contient :

  • Délai avant expiration : nombre de millisecondes pendant lesquelles cette transaction peut rester ouverte. Pendant cette période, la prochaine action envoyée par l'initiateur sera considérée comme valide.

Une fois l'action de requête temporisée reçue, la cible doit l'accuser réception avec une action de réponse d'état. Une fois que l'initiateur a reçu une action de réponse d'état ne signalant aucune erreur, il envoie une action de requête d'appel.

Action de demande d'appel

Identique à l'action de requête d'appel décrite précédemment.

Appeler l'action de réponse

Identique à l'action de réponse d'appel décrite précédemment.

Restrictions d'invocation programmée

Toutes les commandes d'appel peuvent être appelées sur une interaction chronométrée. Les actions de requête programmée, d'appel de requête et d'appel de réponse sont réservées à Unicast. Elles ne peuvent donc pas être utilisées comme groupcast sur les transactions d'appel programmé.

L'action "Appeler l'action de requête" accepte l'utilisation de chemins d'accès avec des groupes et des caractères génériques, mais l'action "Appeler l'action de réponse" n'accepte pas l'utilisation de caractères génériques.