Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

Présentation

...

  • Le système écrira une ligne dans sw_sys_brokermessage. Table à ne pas altérer.

  • Le service broker-message-gateway parcours tous les projets et regarde s'il y a des messages à envoyer au serveur RabbitMQ.

  • Le service JobCenter crée les queues de messages dans RabitMQ au démarrage et gère le dispatching, qui au final appel le script d'endpoint définis dans le notifications managment du studio.

...

  • Vérifier dans la table sw_sys_brokermessage que le champ logs n'est pas rempli.

  • Vérifier les data du bodyData dans le champ messageBody de la table sw_sys_brokermessage en faisant clique droit Copy content et en l’enregistrant dans un .txt

  • Utiliser la fonctionnalité script tester directement depuis le studio afin de s’assurer de ne pas avoir d’erreur de script.

Exemple pratique

Cet extrait provient du standard.

Bloc de code
languagecpp
// Script d'endpoint
// Nous récupérons la variable bodyData afin de la parser dans le script de parsing
EXECUTE_SCRIPT_FOREACH_ROW( "SysNotification_Customer_ParseForEach", "json", / Récupéra"<varscript>bodyData</varscript>" )



// Script de parsing
// Initialisation des variables contenant les data nécessaires du bodyData
rowid     = TRANSLATE( "<varscript>rowid</varscript>" )
action    = TRANSLATE( "<varscript>action</varscript>" )
device_ID = TRANSLATE( "<varscript>device_ID</varscript>" )

entity = "customer"
baseentity_ID = VARGET_DBSQL( "SELECT baseentity_ID FROM sw_data_baseentity WHERE codebaseentity = '<varscript>entity</varscript>'" )
messageToSubscribers = ""
// Surcharge
messageOverloadToSubscribers = CALL_SCRIPT( "SysNotificationOverload_Customer", rowid, action )
translationKeyToSubscribers = ""

// Initialisation de variable dépendantes de l'entité principale. name, city, postalCode.
entityDataQuery = TRANSLATE( "
  SELECT 
    t.code<varscript>entity</varscript> AS entityCode,
    t.name,
    t.city,
    t.postalCode
    
  FROM sw_data_<varscript>entity</varscript> AS t
    
  WHERE <varscript>entity</varscript>_ID = '<varscript>rowid</varscript>'
" )
VARINITIALIZE_SCRIPT_BYSQL( "<varscript>entityDataQuery</varscript>" )

// Echappement des appostrophes.
name = REPLACE( "<varscript>name</varscript>", "'", "''" )
city = REPLACE( "<varscript>city</varscript>", "'", "''" )


// Condition sur chaque actions
IF( EQUALS( action, "1" ) )THEN
  
  actionKey = "insert"
  
ENDIF

IF( EQUALS( action, "2" ) )THEN
  
  actionKey = "update"
  translationKeyToSubscribers = TRANSLATE( "NotificationModel_<varscript>entity</varscript>_<varscript>actionKey</varscript>" )
  
ENDIF

IF( EQUALS( action, "4" ) )THEN
  
  actionKey = "delete"
  
ENDIF

IF( LEN( messageOverloadToSubscribers ) > 0 )THEN
      
  messageToSubscribers = TRANSLATE( "<varscript>messageOverloadToSubscribers</varscript>" )
      
ENDIF

// Notification des subscribers
IF( ( LEN( messageToSubscribers ) > 0 ) || ( LEN( translationKeyToSubscribers ) > 0 ) )THEN
  
  CALL_SCRIPT( "FuncSysNotification_NotifySubscription", actionKey, device_ID, entity, rowid, baseentity_ID, "NOTIFICATION", messageToSubscribers, translationKeyToSubscribers, "REPLACE( REPLACE( REPLACE( REPLACE( ltMessage.text, '%codecustomer%', '<varscript>entityCode</varscript>' ), '%name%', '<varscript>name</varscript>' ), '%city%', '<varscript>city</varscript>' ), '%postalCode%', '<varscript>postalCode</varscript>' )")
  
ENDIF