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 serveurRabbitMQ
.Le service
JobCenter
crée les queues de messages dansRabitMQ
au démarrage et gère le dispatching, qui au final appel lescript d'endpoint
définis dans lenotifications managment
du studio.
...
Bloc de code | ||
---|---|---|
| ||
// 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 |
...