Si vous créez un objet métier, vous devez déterminer quels sont les événements qui seront générés pour chaque action sur cet objet. Lorsque cela est déterminé, vous devez personnaliser le fichier de configuration du module d'événements afin que la DLL de ce dernier puisse trouver des événements de ce type. Le nom du fichier de configuration du module d'événements estevent_code.txt ; il se trouve dans $INFRANET$\sys\cm.
Infranet génère suffisamment de données relativement à un événement pour permettre au module d'événements d'identifier quelle partie d'une classe stockable (en d'autres termes, quel objet métier) a été appelée. Lorsque le module d'événements extrait un événement, il extrait une instance d'une classe stockable contenant des informations, telles que le compte, l'utilisateur et le programme appelant.
Pour différencier une mise à jour d'une suppression ou d'une création, le module d'événements compare la valeur d'origine et celle mise à jour. Pour savoir si une création ou une suppression a eu lieu, cependant, le module d'événements doit extraire la classe stockable lorsque l'action est effectuée au niveau de la racine ou il peut consulter l'ID d'élément d'un objet enfant. Lorsqu'un enfant est ajouté, son ID d'élément est positif et contient la position de cet élément dans le tableau. S'il est négatif, il a été supprimé.
Lors de modifications du fichier de configuration du module d'événements, celles-ci doivent être conformes aux règles syntaxiques ci-après. Cette syntaxe doit être respectée à la lettre.
<événement>|<action Inf.>|<tableau>|< poid clé>|<contraintes>|<instruction OM.>|<priorité> |<commentaire>
où :
événement | Nom de classe stockable de l'événement |
Action Infranet | C (Création), M (Mise à jour) ou S (Suppression). Cela représente l'action effectuée dans Portal Infranet. |
array | Code Portal Infranet représentant le tableau sur lequel l'action est effectuée.
Le tableau est l'élément Infranet qui doit être extrait des informations d'événement.
Dans Portal Infranet, chaque zone a un numéro associé. Par exemple, PIN_FLD_NAMEINFO est associé au code Infranet 156. La liste des zones et des numéros associés se trouve dans le fichier$INFRANET$\Include\pin_flds.h. |
poid | Code Portal Infranet représentant la zone qui est la clé de la classe stockable créée, mise à jour ou supprimée. |
contraintes | Liste des contraintes nécessaires pour déterminer exactement ce qui s'est passé.
La contrainte prend en charge ces mots clés :
Si vous voulez indiquer un or, utilisez plusieurs lignes. La première ligne dans laquelle les contraintes ont la valeur true sont exécutées. |
instruction OM. | Nom de l'objet métier et instruction correspondant à l'action dans Portal Infranet. |
priorité | Priorité de l'événement |
commentaire | Commentaire à insérer dans la table d'événements |
Le texte ci-dessous montre un exemple de fichier event_code.txt. Cet exemple inclut des lignes indiquant des événements pour la classe stockable account. Les lignes commençant par des tirets sont des commentaires.
-- Account creation: PIN_FLD_STATUSES[0].PIN_FLD_STATUS[0] = 0 & PIN_FLD_SYS_DESCR = "Set Status (acct)": OK /event/customer/status |U |144 |40 |40 exists&55;5 equal "Set Status (acct)"&144:0-145;3 = 0 |Portal_Account.Create |1 |Account Creation -- Account Updated (status updated) : PIN_FLD_STATUSES[1].PIN_FLD_STATUS[0] = 10100 or 10103 or 10102 & & PIN_FLD_SYS_DESCR = "Set Status (acct)" : OK /event/customer/status |U |144 |40 |40 exists&55;5 equal "Set Status (acct) "&144:1-145;3 > 0 |Portal_Account.Update |1 |Status Updated -- Account Updated (new contact added):OK /event/customer/nameinfo |C |156 |40|40 exists|Portal_Account.Update|1|new contact -- Account Updated (contact updated): OK /event/customer/nameinfo |U |156 |40 |40 exists&17;5 equal "Customer Mngmt. Event Log" |Portal_Account.Update |2 |contact_update -- Account Updated (contact deleted):OK /event/customer/nameinfo |D |156 |40 |40 exists&67;5 nequal "Automatic Account Creation"|Portal_Account.Update |2 |contact_delete -- Account Updated (billinfo updated) : two PIN_FLD_BILLINFO and PIN_FLD_BILLINFO[0].PIN_FLD_BILL_TYPE[0] <> 0 : OK /event/customer/billinfo |U |126 |40 |40 exists & 126:0-127;3 > 0 Portal_Account.Update |2 |billinfo_update
Lorsqu'un événement se produit, Infranet génère une flist représentant l'événement. Le module de fonctions d'événements examine la flist pour identifier l'instruction et l'action qui s'est produite.
Par exemple, supposons qu'une flist représentant un événement soit :
0 PIN_FLD_POID POID [0] 0.0.0.1 /event/customer/nameinfo -1 0 0 PIN_FLD_NAME STR [0] "Customer Mngmt. Event Log" 0 PIN_FLD_USERID POID [0] 0.0.0.1 /service/admin_client 2 1 0 PIN_FLD_SESSION_OBJ POID [0] 0.0.0.1 /event/session 10366 0 0 PIN_FLD_ACCOUNT_OBJ POID [0] 0.0.0.1 /account 9406 32 0 PIN_FLD_PROGRAM_NAME STR [0] "Admin Manager" 0 PIN_FLD_START_T TSTAMP [0] (942104217) 11/08/99 15:36:57 0 PIN_FLD_END_T TSTAMP [0] (942104217) 11/08/99 15:36:57 0 PIN_FLD_SYS_DESCR STR [0] "Set Name Info" 0 PIN_FLD_NAMEINFO ARRAY [0] allocated 20, used 17 1 PIN_FLD_SALUTATION STR [0] "" 1 PIN_FLD_LAST_NAME STR [0] "Event Test1" 1 PIN_FLD_LAST_CANON STR [0] "event test1" 1 PIN_FLD_FIRST_NAME STR [0] "Event Test1" 1 PIN_FLD_FIRST_CANON STR [0] "event test1" 1 PIN_FLD_MIDDLE_NAME STR [0] "" 1 PIN_FLD_MIDDLE_CANON STR [0] "" 1 PIN_FLD_TITLE STR [0] "Event Test1 " 1 PIN_FLD_COMPANY STR [0] "Event Test1" 1 PIN_FLD_ADDRESS STR [0] "Event Test1" 1 PIN_FLD_CITY STR [0] "Event Test1" 1 PIN_FLD_STATE STR [0] "CA" 1 PIN_FLD_ZIP STR [0] "00000" 1 PIN_FLD_COUNTRY STR [0] "US" 1 PIN_FLD_EMAIL_ADDR STR [0] "" 1 PIN_FLD_CONTACT_TYPE STR [0] "Billing" 1 PIN_FLD_ELEMENT_ID UINT [0] 1 0 PIN_FLD_NAMEINFO ARRAY [1] allocated 20, used 19 1 PIN_FLD_SALUTATION STR [0] "" 1 PIN_FLD_LAST_NAME STR [0] "Event Test1" 1 PIN_FLD_LAST_CANON STR [0] "event test1" 1 PIN_FLD_FIRST_NAME STR [0] "Event Test1" 1 PIN_FLD_FIRST_CANON STR [0] "event test1" 1 PIN_FLD_MIDDLE_NAME STR [0] "" 1 PIN_FLD_MIDDLE_CANON STR [0] NULL str ptr 1 PIN_FLD_TITLE STR [0] "Event Test1" 1 PIN_FLD_COMPANY STR [0] "Event Test1" 1 PIN_FLD_ADDRESS STR [0] "Event Test1" 1 PIN_FLD_CITY STR [0] "Event Test1" 1 PIN_FLD_STATE STR [0] "CA" 1 PIN_FLD_ZIP STR [0] "00000" 1 PIN_FLD_COUNTRY STR [0] "US" 1 PIN_FLD_EMAIL_ADDR STR [0] "" 1 PIN_FLD_CONTACT_TYPE STR [0] "Billing" 1 PIN_FLD_ELEMENT_ID UINT [0] 1 1 PIN_FLD_CANON_COUNTRY STR [0] "US" 1 PIN_FLD_CANON_COMPANY STR [0] "event test1" 0 PIN_FLD_ITEM_OBJ POID [0] 0.0.0.1 /item 11454 0 0 PIN_FLD_CURRENCY UINT [0] 840
Lors de l'ajout d'une ligne au fichier du mode d'événements, vous devez indiquer le numéro associé à la zone au lieu du nom de celle-ci. Par exemple, la zone PIN_FLD_NAMEINFO, figurant en gras dans la flist précédente, est représentée par le code 156.
Une contrainte doit être utilisée pour identifier une zone située au delà du premier niveau de la flist. A l'exception d'une contrainte, chaque zone est identifiée par un numéro simple, qui est celui qui lui est associé.
Un événement donné pouvant être généré pour plusieurs raisons, des contraintes sont parfois requises pour déterminer si un événement est le résultat d'un objet métier particulier. Par conséquent, vous pouvez avoir besoin d'ajouter des contraintes telles que exists.
La syntaxe suivante doit être utilisée dans une contrainte pour identifier une zone.
[<code de tableau:élément de tableau>-zone;type]
Par exemple, si le code Infranet 156 représente PIN_FLD_NAMEINFO, et le code 161 représente PIN_FLD_LAST_NAME, la représentation de la zone PIN_FLD_LAST_NAME figurant dans le tableau PIN_FLD_NAMEINFO de l'élément ID 1 est représentée dans une contrainte associée à cette zone avec 156:1-161;5 = PINFLDNAMEINFO[1].PIN_FLD_LASTNAME
Le dernier numéro suivant le point-virgule dans une contrainte représente le type de l'objet. Il s'agit du type de données sur lequel la comparaison doit être effectuée. Par exemple, le numéro 5 indique une chaîne. Pour plus d'informations, voir la liste des types associés dans $INFRANET$\Include\pin_type.h.
Lorsque vous ajoutez de nouveaux objets métier, vous devez aussi ajouter des événements au fichierpin_notify_cw. Ce fichier contient les noms des événements de connecteur. Pour ajouter des événements, respectez le format standard du fichier, tel qu'il est présenté dans Définition des entrées du fichier de configuration d'événements.
Le module de notification d'événements CrossWorlds (FmCw.dll) vérifie l'ID utilisateur de tout événement Portal qui lui est envoyé (défini dans le fichier pin_notify_cw). Si aucun PIN_FLD_USERID n'est associé à l'événement envoyé au module, une erreur sera générée et des problèmes se produiront lors de la sauvegarde de l'objet en ligne. Ces types d'événements doivent être ajustés (f-lists ou les classes stockables) pour inclure un tel ID. Recherchez ces erreurs dans le fichier journal défini dans le fichier de configuration crossworlds.cnf.
Le module d'événements recherche un ID utilisateur pour empêcher que les événements envoyés dans l'application par le connecteur soient ajoutés à la file d'attente d'événements. Cette procédure est appelée "travail en alternance". "/event/customer/billinfo" est un exemple de type d'événement dans lequel un tel problème existe.