Personnalisation du mécanisme d'événement pour les nouveaux objets métier

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é.

Syntaxe du fichier de configuration du module d'événements

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.

  1. Les lignes de commentaire commencent par deux tirets.
  2. Un événement est décrit sur une ligne. Les paramètres sont délimités par une barre verticale (|).
  3. La syntaxe d'une ligne est la suivante :
    <é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 :
    • exists ou not_exists: true ou false ; spécifie si l'objet existe ou non.
    • =, >, >=, <=, < : opérateurs de comparaison pour les types numériques
    • equal, nequal, contains : opérateurs de comparaison pour le type de chaîne.
    • & est utilisé pour séparer les contraintes. Les contraintes sont vraies si toutes les conditions séparées par & le sont.

    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

Exemple de fichier de configuration du module 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

Définition des entrées du fichier de configuration d'événements

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.

Ajout d'événements au fichier pin_notify_cw

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.

Remarque :
Afin d'identifier tous les événements générés pour une opération Infranet, appelez le module d'événements pour tous les événements Infranet (en utilisant /event dans le fichier de configuration load_pin_notify). Le module d'événements sera alors déclenché pour tous les événements générés. Indiquez le niveau de journalisation 3 dans le fichier de configuration du module d'événements, puis, dans le fichier pinlog.log, la flist d'événements sera envoyée par Infranet pour cette opération.

Copyright IBM Corp. 2003, 2005