Partage via


Détection dynamique des types de messages et résolution dynamique des schémas

Microsoft BizTalk Accelerator pour SWIFT (A4SWIFT) permet la découverte dynamique de type de message et la résolution de schéma dans le désassembleur et l’assembleur SWIFT.

Désassembleur SWIFT

Le désassembleur SWIFT (DASM) a la possibilité de découvrir dynamiquement le type de message d’un message reçu et de charger le schéma approprié nécessaire pour analyser le message. Le plus grand avantage de cette fonctionnalité est que vous pouvez configurer un pipeline unique à l’aide du désassembleur SWIFT pour traiter les messages SWIFT de n’importe quel type de message SWIFT. Contrairement au désassembleur de fichiers plats BizTalk natif, le désassembleur SWIFT ne nécessite pas de créer un pipeline de réception distinct pour chaque type de message que A4SWIFT peut rencontrer.

Vous pouvez utiliser la découverte de type de message dynamique si vous partez du principe que, dans la plupart des cas, tous les messages reçus par un système commencent par des données d’en-tête structurellement homogènes. Dans les données d’en-tête se trouvent des champs qui révèlent le type de message du message. Pour les messages SWIFT, les données d’en-tête se composent de blocs de message SWIFT 1, 2 et 3, avec des informations de type de message contenues dans le bloc 2 (appelé en-tête d’application).

Le composant SWIFT DASM peut traiter tous les messages SWIFT « uniques » (non traités par lots) sans nécessiter la définition d’aucune des propriétés. Par défaut, le schéma d’échange SWIFT et le schéma d’en-tête SWIFT ne sont pas définis ; toutefois, le composant SWIFT DASM utilise le schéma d’en-tête SWIFT présent dans Microsoft.Solutions.FinancialServices.SWIFT.RuntimeSchemas.dll pour détecter dynamiquement le type de message SWIFT et traiter les messages. En outre, BRE et la validation XML sont activés par défaut, de sorte que tout message traité est entièrement validé. La définition de la propriété de schéma d’en-tête SWIFT pour qu’elle pointe vers l’en-tête SWIFT dans RuntimeSchemas.dll entraîne également le même comportement que ci-dessus.

Lorsque la propriété de configuration du schéma d’en-tête SWIFT pour le désassembleur SWIFT est définie sur « None » (valeur par défaut), le désassembleur résout et charge dynamiquement le schéma approprié en effectuant les étapes suivantes :

  1. Utilise le schéma d’en-tête spécifié par l’utilisateur (spécifié par la propriété de configuration du schéma d’en-tête SWIFT) pour analyser le début (en-tête) du message de réception.

  2. Inspecte le « XML d’en-tête » résultant pour le champ de propriété promue A4SWIFT_MessageType. Si ce champ existe, il utilise la valeur de champ comme « type de message » et passe à l’étape 4. Si le champ n’existe pas, il passe à l’étape 3.

  3. Inspecte le code XML d’en-tête pour le champ de propriété promue A4SWIFT_MessageType2 (attendu si le désassembleur ne trouve pas le champ A4SWIFT_MessageType). Utilise la valeur de champ A4SWIFT_MessageType2 comme « type de message ».

  4. Si le « type de message » identifié à l’étape 2 ou 3 est « 574 », le désassembleur SWIFT vérifie si le type de message « 574 » se trouve dans la liste des types de messages spécifiés dans la propriété de configuration Liste de messages double type (qui est une propriété du désassembleur). Si oui, elle passe à l’étape 5. Si non, passe à l’étape 6.

  5. Inspecte le xml d’en-tête pour le champ de propriété promue A4SWIFT_SecondaryMessageType. Si ce champ existe, le désassembleur utilise la valeur de champ (par exemple, « IRSLST ») comme « sous-type de message » et l’ajoute au « type de message », par exemple, « 574_IRSLST ».

    Important

    L’explication donnée pour l’étape 5 est une simplification de ce que le désassembleur SWIFT fait pour évaluer le sous-type de message. En réalité, le désassembleur SWIFT utilise l’algorithme suivant pour déterminer si un type de message comporte des sous-types et, le cas échéant, quel est ce sous-type comme suit.

    Given MT type number nxx ...  
    if nxx is in the Dual-Type list {  
      if field 119 exists AND field 119 is NOT null/empty {  
        if n == 1 {  
          if field 119 == "STP" {  
            Use MTnxxPLUS schema  
          } else if field 119 == "REMIT" {  
            Use MTnxx schema  
          } else {  
            Use MTnxx_<field 119> schema  
          }   
        } else {  
          // n != 1  
          Use MTnxx_<field 119> schema  
        }  
      } else {  
        // field 119 does not exist or 119 does exist but is null/empty  
        Use MTnxx schema  
      }  
    } else {  
      // nxx is not a dual-type message  
      Use MTnxx schema  
    }  
    
  6. Le désassembleur connaît désormais le type de message et peut former le nom du schéma d’échange en concaténant certains préfixes et suffixes de nommage de schéma fixes (tels que « MT » dans le préfixe pour faire « MT574_IRSLST »).

  7. Charge le schéma d’échange (par nom) et analyse l’intégralité du message, à partir du début, à l’aide du schéma chargé (cela signifie que le désassembleur analyse deux fois les données d’en-tête : une fois en utilisant le schéma d’en-tête, puis à nouveau en utilisant le début du schéma d’échange). Le schéma d’échange doit être en mesure d’analyser l’intégralité du message, y compris l’en-tête.

    Notes

    Le désassembleur peut utiliser tous les schémas de message SWIFT A4SWIFT pour analyser l’intégralité de l’échange SWIFT (les blocs SWIFT 1, 2, 3, 4 et 5). Le désassembleur utilise le schéma d’en-tête SWIFT par défaut pour analyser les blocs 1, 2 et 3 uniquement. Voir les détails ci-dessous.

    L’algorithme de résolution de schéma décrit ci-dessus implique que pour que la découverte de type de message dynamique fonctionne, le schéma d’en-tête SWIFT doit contenir des champs que le désassembleur a promus à l’aide des propriétés promues suivantes (définies dans le schéma de propriété A4SWIFT, Microsoft.Solutions.A4SWIFT.PropertySchema) :

  • A4SWIFT_MessageType

  • A4SWIFT_MessageType2 (facultatif si A4SWIFT_MessageTypes est utilisé)

  • A4SWIFT_SecondaryMessageType (facultatif)

    Pour plus d’informations sur ces propriétés et d’autres propriétés promues, consultez propriétés promues A4SWIFT_*.

Notes

Si vous définissez le schéma d’en-tête SWIFT sur Aucun, vous devez spécifier un schéma d’échange complet pour la propriété SWIFT Interchange Schema . Dans ce cas, le désassembleur utilise le schéma d’échange spécifié pour analyser tous les messages que A4SWIFT reçoit. Autrement dit, vous désactivez la résolution de schéma dynamique et configurez le pipeline pour recevoir uniquement les messages dont le type correspond au schéma d’échange spécifié.

A4SWIFT installe un schéma d’en-tête SWIFT par défaut (Microsoft.Solutions.FinancialServices.SWIFT.RuntimeSchemas.HeaderSchemas) qui peut analyser les données d’en-tête standard SWIFT et possède les propriétés promues nécessaires pour faciliter la résolution dynamique du schéma.

Le schéma d’en-tête SWIFT par défaut comporte les champs promus suivants :

  • SWIFTHeader/ApplicationHeaderBlock_Input/MessageType. Le désassembleur promeut cela à l’aide de la propriété A4SWIFT_MessageType .

  • SWIFTHeader/ApplicationHeaderBlock_Output/MessageType. Le désassembleur en fait la promotion à l’aide de la propriété A4SWIFT_MessageType2 .

  • SWIFTHeader/UserHeaderBlock/ValidationFlag_119. Le désassembleur promeut cela à l’aide de la propriété A4SWIFT_MessageType .

    Le désassembleur utilise Microsoft.Solutions.FinancialServices.SWIFT.RuntimeSchemas.HeaderSchema par défaut comme schéma d’en-tête si vous définissez à la fois les propriétés de configuration du schéma d’en-tête SWIFT et du schéma d’échange SWIFT sur « None ».

Assembleur SWIFT

Comme le désassembleur SWIFT, l’assembleur SWIFT a la possibilité de découvrir dynamiquement le type de message d’un message sortant et de charger le schéma approprié nécessaire pour sérialiser le message. Cette fonctionnalité vous permet de configurer un pipeline unique à l’aide de l’assembleur SWIFT pour traiter les messages SWIFT de n’importe quel type de message SWIFT. Contrairement à l’assembleur de fichiers plats BizTalk natif, l’assembleur SWIFT ne vous oblige pas à créer un pipeline d’envoi distinct pour chaque type de message que A4SWIFT peut rencontrer.

La résolution de schéma dynamique dans l’assembleur SWIFT est beaucoup plus simple que dans le désassembleur SWIFT, car l’assembleur effectue le travail de sérialisation du XML au format de fichier plat SWIFT. Le code XML que BizTalk Server donne à l’assembleur SWIFT pour la sérialisation contient le type de message et les informations de schéma, que l’assembleur SWIFT peut utiliser directement pour charger le schéma approprié pour la sérialisation. Par conséquent, l’assembleur SWIFT n’a aucune configurabilité pour les schémas d’en-tête et d’échange : il utilise toujours le schéma spécifié dans le code XML qu’il sérialisera.

Voir aussi

Utilisation du désassembleur et de l’assembleur SWIFT