Evènements métiers (bp)

De Wiki1000
(Différences entre les versions)
 
(6 révisions intermédiaires par un utilisateur sont masquées)
Ligne 1 : Ligne 1 :
====Définition des évènements métiers====
+
===Introduction===
 +
Les évènements métiers permettent de détecter des changement d'état des objets métiers de l'application, par exemple une nouvelle demande d'engagement a été créée ou le niveau de l'encours commercial d'un client à dépasser un seuil.
  
Les évènements métiers sont des objets d’une classe contenue dans le référentiel.
+
Les évènements métiers permettent aux application d'agir sur les processus métiers.
  
Cette classe hérite de la classe des évènements utilisée pour l’enregistrement des traces. Ainsi les évènements métiers et les évènements de trace sont unifiés dans le même modèle. De ce fait tout évènement généré par le système de trace est potentiellement utilisable comme évènement métier à l’intérieur des processus métiers.
+
===Définition des évènements métiers===
 +
Les évènements métiers sont des [[TdbmEvent (class)|objets de la classe TdbmEvent]] contenue dans le référentiel.
  
Les évènements métiers peuvent donc être créés par :
+
Cette classe hérite de la classe des évènements utilisée pour l’enregistrement des traces. Ainsi les évènements métiers et les évènements de trace sont unifiés dans le même modèle. De ce fait tout évènements générés par le système de trace est potentiellement utilisable comme évènement métier à l’intérieur des processus métiers.
  
*le système de gestion des traces,
+
{{#images:image113.png|Guide_-_Processus_métiers}}
*l’exécution d’une règle d’état posée dans le modèle,
+
*le code métier,
+
*les services du serveur Ligne 1000.
+
  
====Classes d’évènements métiers====
+
Les informations liées à un évènement métier sont enregistrées lors de sa création, elles peuvent être consulter dans le concepteur de processus métiers :
  
 +
{{#images:image114.png|Guide_-_Processus_métiers}}
 +
 +
===Classes d’évènements métiers===
 
Les classes d’évènements métiers décrivent les évènements métiers pour permettre de les identifier plus facilement. Elles permettent en particulier d’associer une classe métier à un ensemble évènements.  
 
Les classes d’évènements métiers décrivent les évènements métiers pour permettre de les identifier plus facilement. Elles permettent en particulier d’associer une classe métier à un ensemble évènements.  
  
 
{{#images:image112.png|Guide_-_Processus_métiers}}
 
{{#images:image112.png|Guide_-_Processus_métiers}}
  
Sur le dossier Classe d’évènements métier enregistrer un évènement à l’aide du clic droit / ''Nouvel évènement''.
+
====Enregistrement des classes d'évènements métiers====
 
+
L’enregistrement des classes d'évènements métiers permet de définir des évènements utilisables dans les processus métiers.
L’évènement créé sera pris en compte uniquement après le redémarrage des services.
+
 
+
====Evènements métiers====
+
 
+
Les évènements métiers sont des objets du référentiel créés par différentes sources, et correspondant à un évènement généralement en rapport avec un changement d’état du métier.
+
 
+
{{#images:image113.png|Guide_-_Processus_métiers}}
+
 
+
====Informations liées aux évènements métiers====
+
 
+
Les informations liées à un évènement métier sont enregistrées lors de sa création.
+
 
+
{{#images:image114.png|Guide_-_Processus_métiers}}
+
 
+
====Enregistrement des évènements métiers====
+
 
+
L’enregistrement des évènements métiers permet de définir des classes d’évènements utilisables dans les processus métiers.
+
  
 
Sur le dossier « Classes d’évènements métiers », choisissez la commande ''Nouvel élément'' du menu contextuel.
 
Sur le dossier « Classes d’évènements métiers », choisissez la commande ''Nouvel élément'' du menu contextuel.
Ligne 42 : Ligne 27 :
 
{{#images:image115.png|Guide_-_Processus_métiers}}
 
{{#images:image115.png|Guide_-_Processus_métiers}}
  
 +
*L’identifiant
 +
:Il est automatiquement construit à partir des constituants. C’est cet identifiant qui est utilisé par les activités pour retrouver les évènements les concernant.
  
 +
*Type
 +
:Type de l’évènement métier. Ce type dépend de la nature et de la source de l’évènement.
  
L’identifiant
+
*Nom utilisé
 
+
:Ce champ contient la classe de l’objet métier associé. Cet attribut est utilisé uniquement pour les évènements en rapport avec une classe métier.
Il est automatiquement construit à partir des constituants. C’est cet identifiant qui est utilisé par les activités pour retrouver les évènements les concernant.
+
 
+
Type
+
 
+
Type de l’évènement métier. Ce type dépend de la nature et de la source de l’évènement.
+
 
+
Nom utilisé
+
 
+
Ce champ contient la classe de l’objet métier associé. Cet attribut est utilisé uniquement pour les évènements en rapport avec une classe métier.
+
 
+
« Nom de l’évènement »
+
 
+
Ce champ contient une propriété associée à l’évènement. Cet élément est utilisé uniquement pour certains types d’évènements.
+
  
 +
*Nom de l’évènement
 +
:Ce champ contient une propriété associée à l’évènement. Cet élément est utilisé uniquement pour certains types d’évènements.
  
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
|Type de l’évènement
+
!Type de l’évènement
|Source
+
!Source
|Attribut Classe
+
!Attribut Classe
|Attribut Propriété
+
!Attribut Propriété
 
|-
 
|-
 
|Création d’un objet
 
|Création d’un objet
Ligne 90 : Ligne 68 :
 
|Exécution d’un traitement
 
|Exécution d’un traitement
 
|Traces
 
|Traces
|Classes d’un d’objet de type processus ayant une méthode « Exécute »
+
|Classes d’un d’objet de type processus ayant une méthode « Execute »
Exécute »
+
Execute »
 
|-
 
|-
 
|Changement de l’état d’un objet
 
|Changement de l’état d’un objet
Ligne 109 : Ligne 87 :
 
|}
 
|}
  
Description de l’évènement
+
*File d'attente
 +
:La file d'attente permet de classifier les évènements et impact [[Modèle évènementiel (bp)|le modèle évènementiel]] qui sera appliqué par les processus.
  
Il est possible dans cet espace de donner une description de l’évènement ou de saisir du code métier.
+
*Description de l’évènement
 +
:Il est possible dans cet espace de donner une description de l’évènement ou de saisir du code métier.
  
Pour relier un évènement métier à une classe d’évènements il faut éditer l’évènement métier puis sélectionner l’identifiant de la classe créée.
+
{{info|L’évènement créé sera pris en compte par un Service 1000 uniquement après son redémarrage.}}
 +
 
 +
====Relier une activité evènement métier à une classe d'évènement métier.====
 +
Pour relier un [[Evènement initial métier (activity bp)|activité évènement métier]] à une classe d’évènements il faut éditer l’activité évènement puis sélectionner l’identifiant de la classe d'évènement créée :
  
 
{{#images:image116.png|Guide_-_Processus_métiers}}
 
{{#images:image116.png|Guide_-_Processus_métiers}}
  
Le bouton [+] à gauche de l’identifiant permet de créer aussi directement la classe à partir de cet écran.
+
Le bouton [+] à gauche de l’identifiant permet de créer directement la classe d'évènement nécessaire si celle-ci n'existe pas.
  
====Ajouter des règles d’état au modèle métier====
+
===Création des évènements métiers===
 +
Les évènements métiers peuvent être créés par :
  
Une règle d’état est une règle métier qui permet de créer automatiquement un évènement métier lorsque l’état d’un objet change. Une règle d’état est statique.
+
*Le framework en fonction des classes d'évènements métier définies.
 +
*L’exécution d’une règle d’état posée dans le modèle.
 +
*Le code métier.
 +
*Le service REST du Serveur Ligne 1000.
  
{{#images:image117.png|Guide_-_Processus_métiers}}
+
====Règles d'état====
 +
Une [[Règles d'état (rule)|règle d’état]] est une règle métier qui permet de créer automatiquement un évènement métier lorsque l’état d’un objet change.
  
Double-cliquez sur la règle pour afficher les propriétés.
+
Une règle d’état est statique.
 
+
{{#images:image118.png|Guide_-_Processus_métiers}}
+
 
+
La règle est associée à une classe d’évènements métiers, cette classe étant déterminée au moment de la définition de la règle.
+
 
+
Le fonctionnement de la règle est le suivant :
+
 
+
la règle est évaluée lorsque l’objet rentre en transaction, la valeur retournée par la règle est sauvegardée.
+
 
+
la règle est de nouveau évaluée lors de l’évènement BeforeSave pendant la mise à jour de l’objet. Si la valeur retournée par la règle a changé, alors l’évènement associé à la règle est créé.
+
 
+
Il est possible d’enregistrer directement un évènement directement par la fonction Nouvel évènement du dossier « Classes d’évènements métiers ».
+
  
 
====Les nouveaux types de trace « Changement d’un état » et « Changement d’un état ou création »====
 
====Les nouveaux types de trace « Changement d’un état » et « Changement d’un état ou création »====
 +
De nouveaux types d’éléments de trace ont été ajoutés pour permettre de définir des règles d’état à partir du système de gestion des traces.
  
De nouveaux types d’éléments de trace ont été ajoutés pour permettre de définir des règles d’état à partir du système de gestion des traces.  
+
Ces éléments fonctionnent comme une [[Règles d'état (rule)|règle d’état]], l’expression associée à l’élément constituant le code de la règle.
  
Ces éléments fonctionnent comme une règle d’état, l’expression associée à l’élément constituant le code de la règle.
+
*« Changement d’un état »
 +
:est déclenché uniquement par le changement d’état de l'objet et '''pas''' par la création de l’objet.
  
Le type « Changement d’un état ou création » est déclenché soit par le changement d’état soit par la création de l’objet.
+
*« Changement d’un état ou création »  
 +
:est déclenché soit par le changement d’état de l'objet '''ou''' par la création de l’objet.
  
 
{{#images:image119.png|Guide_-_Processus_métiers}}
 
{{#images:image119.png|Guide_-_Processus_métiers}}
Ligne 153 : Ligne 132 :
 
{{#images:image120.png|Guide_-_Processus_métiers}}
 
{{#images:image120.png|Guide_-_Processus_métiers}}
  
====Déclenchement d’un évènement métier par le code métier====
+
*« Code associé à la règle »
 +
:ce code doit retourner la valeur de l'état testé par la règle. Il est exécuté '''avant''' et '''après''' la modification de l'objet. Si les deux valeurs retournées diffèrent alors l'évènement est créé.
  
=====Création d’un évènement métier à partir d’une instance d’objet métier=====
+
{{tip|Le code associé à une règle d'état est indispensable, sans ce code la règle ne peut pas détecter la modification de l'état de l'objet}}
  
Les objets métiers exposent une API permettant de créer un évènement utilisateur.
+
====Déclenchement d’un évènement métier par le code métier====
 +
*'''Création d’un évènement métier à partir d’une instance d’objet métier.'''
 +
Les objets métiers exposent une [[CreateCustomEvent (instance)|opération permettant de créer un évènement utilisateur]] :
  
<font face="courrier new">Procedure CreateCustomEvent(const iName :String ; iInfo1,iInfo2 :variant; iParameters:Array of variant) ;</font>
+
<source lang='delphi'>Procedure CreateCustomEvent(const iName:String ; iInfo1,iInfo2:variant; iParameters:Array of variant);</source>
  
 
Cette opération crée un évènement métier dont l’origine est l’instance. L’objet appelant doit être en transaction et l’évènement créé est ajouté à la transaction en cours.  
 
Cette opération crée un évènement métier dont l’origine est l’instance. L’objet appelant doit être en transaction et l’évènement créé est ajouté à la transaction en cours.  
  
Les paramètres doivent être renseignés sous forme de paire Nom, Valeur.
+
Les paramètres peuvent être renseignés sous forme de paire Nom, Valeur.
 
+
=====Créer un évènement métier indépendamment d’une instance d’objet métier.=====
+
  
Utiliser la méthode de classe de TbpeXEvent.
+
*'''Créer un évènement métier indépendamment d’une instance d’objet métier.'''
 +
Utiliser la méthode de classe de [[TdbmEvent (class)|TdbmEvent]].
  
<font face="courrier new">Procedure TbpeXEvent.CreatecustomEvent(const ieventName :String ; iInfo1,iInfo2 :variant ; iParameters:Array of variant) ;</font>
+
<source lang='delphi'>Procedure TdbmEvent.CreateCustomEvent(const ieventName :String ; iInfo1,iInfo2 :variant ; iParameters:Array of variant) ;</source>
  
 
Cette méthode créé un évènement métier, qui n’est pas lié à une instance, dans une transaction séparée. Après l’appel, l’évènement est enregistré en base de données.
 
Cette méthode créé un évènement métier, qui n’est pas lié à une instance, dans une transaction séparée. Après l’appel, l’évènement est enregistré en base de données.
Ligne 175 : Ligne 156 :
 
Exemple :  
 
Exemple :  
  
<font face="courrier new">unit TestSYFREWF;</font>
+
<source lang='delphi'>
 +
Procedure doCreateAnEvent;
 +
begin
 +
  TdbmEvent.CreateCustomEvent('MyEvent','info1','info2',['a1',0,'a2',1]);
 +
end;
 +
</source>
  
<font face="courrier new">interface</font>
+
===Prise en compte des évènements métier par les machines===
  
<font face="courrier new">Type</font>
+
Une machine d’exécution des processus métiers maintient une date d’exécution égale à la plus petite date d’exécution des instances de processus qu’elle contient. Une machine ne peut pas prendre en compte un évènement antérieur à cette date.
  
<font face="courrier new">  TestAPI = Class(TitObject)</font>
+
Une des conséquences de cette règle est que les évènements pris en compte par une instance ne peuvent qu’être chronologiques. Ainsi, il n’est pas possible de prendre en compte un évènement antérieur à un évènement déjà pris en compte.
  
<font face="courrier new">  public</font>
+
===Service REST de création d’un évènement métier===
  
<font face="courrier new">    Caption: string;</font>
+
Ce service REST est un service générique qui permet de créer un évènement en exécutant une requête HTTP GET.
  
<font face="courrier new">    ObjectClassLabel: string;</font>
+
Le service n’est pas identifié ce qui signifie qu’il n’est pas nécessaire d’obtenir une session serveur pour l’appeler.
  
<font face="courrier new">    ObjectClassName: string;</font>
+
L’URL du service est une URL de service REST :
  
<font face="courrier new">    oid: string;</font>
+
http://hostname/servicename/server/rpc.l1000/rest/xevent.add?paramètre1=valeur1&paramètre2=valeur2&…
  
<font face="courrier new">   Procedure CreateAnEvent;</font>
+
Paramètres de la requête :
 +
{| class="wikitable"
 +
|-
 +
!Paramètre
 +
!Type
 +
!Description
 +
!Défaut
 +
|-
 +
|Caption
 +
|Chaîne
 +
|Libellé associé à l’évènement
 +
|
 +
|-
 +
|EventType
 +
|Enuméré
 +
|Type de l’évènement
 +
|CUSTOM
 +
|-
 +
|EventSourceName
 +
|String
 +
|Source de l’évènement
 +
|REST
 +
|-
 +
|EventResult
 +
|Entier
 +
|Valeur entière associée à l’évènement
 +
|0
 +
|-
 +
|EventDataBaseURL
 +
|Chaîne
 +
|Base de données associée à l’évènement
 +
|
 +
|-
 +
|EventSourceInfo1
 +
|Chaîne
 +
|Valeur chaîne associée à l’évènement
 +
|
 +
|-
 +
|EventSourceInfo2
 +
|Chaîne
 +
|Valeur chaîne associée à l’évènement
 +
|
 +
|-
 +
|InstanceOID
 +
oidEventObject
 +
|TOID
 +
|Identifiant de l’objet associé à l’évènement
 +
|
 +
|-
 +
|EventObjectClass
 +
|String
 +
|Nom de la classe de l’objet associé à l’évènement
 +
|
 +
|-
 +
|EventObjectProperty
 +
EventName<br>
 +
EventId<br>
 +
|String
 +
|Identifiant de l’évènement
 +
|
 +
|-
 +
|Autres paramètres
 +
|
 +
|
 +
|
 +
|}
  
<font face="courrier new">  end;</font>
+
Tous les paramètres de la requête sont copiés dans les paramètres associés à l’évènement. Ils pourront être copiés dans les paramètres de l’instance du processus par l’activité consommant l’évènement.
  
<font face="courrier new">Implementation</font>
+
La réponse du service est un flux XML contenant l’acquittement de l’enregistrement de l’évènement.
  
<font face="courrier new">{TestAPI}</font>
+
Pour créer un évènement CUSTOM , vous devez renseigner les paramètres de la façon suivante :
  
<font face="courrier new">Procedure TestAPI.CreateAnEvent;</font>
+
{| class="wikitable"
 +
|-
 +
|EventName
 +
|Obligatoire
 +
|Identifiant de l’évènement CUSTOM
 +
|-
 +
|EventSourceInfo1
  
<font face="courrier new">//Procedure CreateAnEvent;</font>
+
EventSourceInfo2
 +
|Facultatif
 +
|Des paramètres associés à l’évènement qui pourront être testés dans les activités de l’instance.
 +
|-
 +
|EventDataBaseURL
 +
|Facultatif
 +
|L’URL de la base de données si vous souhaitez qui cet évènement ne soit pris en compte que dans un certain contexte
 +
|}
  
<font face="courrier new">begin</font>
 
  
<font face="courrier new">  TbpeXEvent.CreateXEvent('MyEvent','info1','info2',['a1',0,'a2',1]);</font>
+
===Exemple d’utilisation===
 
+
Déclenchement d’un processus par un évènement utilisateur
<font face="courrier new">end;</font>
+
 
+
<font face="courrier new">end.</font>
+
 
+
<font face="verdana">Cas d’utilisation : déclenchement d’un processus par un évènement utilisateur</font>
+
  
 
Pour déclencher un processus depuis un évènement utilisateur, vous pouvez procéder de la façon suivante.
 
Pour déclencher un processus depuis un évènement utilisateur, vous pouvez procéder de la façon suivante.
Ligne 233 : Ligne 291 :
 
{{#images:image124.png|Guide_-_Processus_métiers}}
 
{{#images:image124.png|Guide_-_Processus_métiers}}
  
====Les principaux attributs de la classe Evènement ====
+
Voir aussi :
 
+
====EventType====
+
 
+
Indique le type de l’évènement.
+
 
+
====EventSourceName====
+
 
+
Indique la source qui a créée l’évènement.
+
 
+
<font face="verdana">Exemple</font>
+
 
+
 
+
{| class="wikitable"
+
|-
+
|Règle d’état
+
|Nom de la règle
+
|-
+
|Instance d’objet
+
|Nom de la classe
+
|-
+
|Instance de classe
+
|Nom du type de la classe TbpeXEvent
+
|-
+
|REST
+
|Nom du service
+
|}
+
 
+
 
+
 
+
====EventInfo1 et EventInfo2====
+
 
+
Ces deux informations sont passées lors de la création de l’évènement. Pour une règle d’état ce sont les valeurs de l’état qui à changé et qui a déclenché la règle.
+
 
+
====oidEventObject====
+
 
+
OID de l’objet ayant créé l’évènement.
+
 
+
Pour un processus déclenché par cet évènement métier, cet objet métier devient l’objet métier rattaché à l’instance du processus
+
 
+
====EventObjectClass====
+
 
+
Classe de l’objet associé à l’évènement.
+
 
+
====EventObjectProperty====
+
 
+
Nom de la propriété associé à l’évènement.
+
 
+
====Les paramètres.====
+
  
Un évènement métier peut avoir une liste de paramètres.
+
*[[Modèle_évènementiel_(bp)|Modèle évènementiel]]
  
 
{{Footer|Processus Métiers (bp)}}
 
{{Footer|Processus Métiers (bp)}}
 
[[category:Processus Métiers]]
 
[[category:Processus Métiers]]
 +
[[category:Alertes]]

Version actuelle en date du 3 avril 2014 à 10:36

Sommaire

Introduction

Les évènements métiers permettent de détecter des changement d'état des objets métiers de l'application, par exemple une nouvelle demande d'engagement a été créée ou le niveau de l'encours commercial d'un client à dépasser un seuil.

Les évènements métiers permettent aux application d'agir sur les processus métiers.

Définition des évènements métiers

Les évènements métiers sont des objets de la classe TdbmEvent contenue dans le référentiel.

Cette classe hérite de la classe des évènements utilisée pour l’enregistrement des traces. Ainsi les évènements métiers et les évènements de trace sont unifiés dans le même modèle. De ce fait tout évènements générés par le système de trace est potentiellement utilisable comme évènement métier à l’intérieur des processus métiers.

image113.png

Les informations liées à un évènement métier sont enregistrées lors de sa création, elles peuvent être consulter dans le concepteur de processus métiers :

image114.png

Classes d’évènements métiers

Les classes d’évènements métiers décrivent les évènements métiers pour permettre de les identifier plus facilement. Elles permettent en particulier d’associer une classe métier à un ensemble évènements.

image112.png

Enregistrement des classes d'évènements métiers

L’enregistrement des classes d'évènements métiers permet de définir des évènements utilisables dans les processus métiers.

Sur le dossier « Classes d’évènements métiers », choisissez la commande Nouvel élément du menu contextuel.

image115.png

  • L’identifiant
Il est automatiquement construit à partir des constituants. C’est cet identifiant qui est utilisé par les activités pour retrouver les évènements les concernant.
  • Type
Type de l’évènement métier. Ce type dépend de la nature et de la source de l’évènement.
  • Nom utilisé
Ce champ contient la classe de l’objet métier associé. Cet attribut est utilisé uniquement pour les évènements en rapport avec une classe métier.
  • Nom de l’évènement
Ce champ contient une propriété associée à l’évènement. Cet élément est utilisé uniquement pour certains types d’évènements.
Type de l’évènement Source Attribut Classe Attribut Propriété
Création d’un objet Traces Classe de l’objet
Suppression d’un objet Traces Classes de l’objet
Mise à jour d’un objet Traces Classes de l’objet Vide ou nom d’un attribut de l’objet
Exécution d’une méthode d’un objet Traces Classes de l’objet Nom de la méthode
Exécution d’un traitement Traces Classes d’un d’objet de type processus ayant une méthode « Execute » « Execute »
Changement de l’état d’un objet Traces Classes de l’objet
Exécution d’une règle d’état Règles Classes de l’objet
Evènement utilisateur Code métier, Services Classe de l’objet ou vide Nom de l’évènement
  • File d'attente
La file d'attente permet de classifier les évènements et impact le modèle évènementiel qui sera appliqué par les processus.
  • Description de l’évènement
Il est possible dans cet espace de donner une description de l’évènement ou de saisir du code métier.
Info-20px.png Note : L’évènement créé sera pris en compte par un Service 1000 uniquement après son redémarrage.

Relier une activité evènement métier à une classe d'évènement métier.

Pour relier un activité évènement métier à une classe d’évènements il faut éditer l’activité évènement puis sélectionner l’identifiant de la classe d'évènement créée :

image116.png

Le bouton [+] à gauche de l’identifiant permet de créer directement la classe d'évènement nécessaire si celle-ci n'existe pas.

Création des évènements métiers

Les évènements métiers peuvent être créés par :

  • Le framework en fonction des classes d'évènements métier définies.
  • L’exécution d’une règle d’état posée dans le modèle.
  • Le code métier.
  • Le service REST du Serveur Ligne 1000.

Règles d'état

Une règle d’état est une règle métier qui permet de créer automatiquement un évènement métier lorsque l’état d’un objet change.

Une règle d’état est statique.

Les nouveaux types de trace « Changement d’un état » et « Changement d’un état ou création »

De nouveaux types d’éléments de trace ont été ajoutés pour permettre de définir des règles d’état à partir du système de gestion des traces.

Ces éléments fonctionnent comme une règle d’état, l’expression associée à l’élément constituant le code de la règle.

  • « Changement d’un état »
est déclenché uniquement par le changement d’état de l'objet et pas par la création de l’objet.
  • « Changement d’un état ou création »
est déclenché soit par le changement d’état de l'objet ou par la création de l’objet.

image119.png

Dans le dossier « Classe d’évènements métiers », positionnez-vous sur une classe et ouvrez la fenêtre d’enregistrement d’un évènement.

image120.png

  • « Code associé à la règle »
ce code doit retourner la valeur de l'état testé par la règle. Il est exécuté avant et après la modification de l'objet. Si les deux valeurs retournées diffèrent alors l'évènement est créé.
Tip-20px.png Tip : Le code associé à une règle d'état est indispensable, sans ce code la règle ne peut pas détecter la modification de l'état de l'objet

Déclenchement d’un évènement métier par le code métier

  • Création d’un évènement métier à partir d’une instance d’objet métier.

Les objets métiers exposent une opération permettant de créer un évènement utilisateur :

Procedure CreateCustomEvent(const iName:String ; iInfo1,iInfo2:variant; iParameters:Array of variant);

Cette opération crée un évènement métier dont l’origine est l’instance. L’objet appelant doit être en transaction et l’évènement créé est ajouté à la transaction en cours.

Les paramètres peuvent être renseignés sous forme de paire Nom, Valeur.

  • Créer un évènement métier indépendamment d’une instance d’objet métier.

Utiliser la méthode de classe de TdbmEvent.

Procedure TdbmEvent.CreateCustomEvent(const ieventName :String ; iInfo1,iInfo2 :variant ; iParameters:Array of variant) ;

Cette méthode créé un évènement métier, qui n’est pas lié à une instance, dans une transaction séparée. Après l’appel, l’évènement est enregistré en base de données.

Exemple :

Procedure doCreateAnEvent;
begin
  TdbmEvent.CreateCustomEvent('MyEvent','info1','info2',['a1',0,'a2',1]);
end;

Prise en compte des évènements métier par les machines

Une machine d’exécution des processus métiers maintient une date d’exécution égale à la plus petite date d’exécution des instances de processus qu’elle contient. Une machine ne peut pas prendre en compte un évènement antérieur à cette date.

Une des conséquences de cette règle est que les évènements pris en compte par une instance ne peuvent qu’être chronologiques. Ainsi, il n’est pas possible de prendre en compte un évènement antérieur à un évènement déjà pris en compte.

Service REST de création d’un évènement métier

Ce service REST est un service générique qui permet de créer un évènement en exécutant une requête HTTP GET.

Le service n’est pas identifié ce qui signifie qu’il n’est pas nécessaire d’obtenir une session serveur pour l’appeler.

L’URL du service est une URL de service REST :

http://hostname/servicename/server/rpc.l1000/rest/xevent.add?paramètre1=valeur1&paramètre2=valeur2&…

Paramètres de la requête :

Paramètre Type Description Défaut
Caption Chaîne Libellé associé à l’évènement
EventType Enuméré Type de l’évènement CUSTOM
EventSourceName String Source de l’évènement REST
EventResult Entier Valeur entière associée à l’évènement 0
EventDataBaseURL Chaîne Base de données associée à l’évènement
EventSourceInfo1 Chaîne Valeur chaîne associée à l’évènement
EventSourceInfo2 Chaîne Valeur chaîne associée à l’évènement
InstanceOID

oidEventObject

TOID Identifiant de l’objet associé à l’évènement
EventObjectClass String Nom de la classe de l’objet associé à l’évènement
EventObjectProperty

EventName
EventId

String Identifiant de l’évènement
Autres paramètres

Tous les paramètres de la requête sont copiés dans les paramètres associés à l’évènement. Ils pourront être copiés dans les paramètres de l’instance du processus par l’activité consommant l’évènement.

La réponse du service est un flux XML contenant l’acquittement de l’enregistrement de l’évènement.

Pour créer un évènement CUSTOM , vous devez renseigner les paramètres de la façon suivante :

EventName Obligatoire Identifiant de l’évènement CUSTOM
EventSourceInfo1

EventSourceInfo2

Facultatif Des paramètres associés à l’évènement qui pourront être testés dans les activités de l’instance.
EventDataBaseURL Facultatif L’URL de la base de données si vous souhaitez qui cet évènement ne soit pris en compte que dans un certain contexte


Exemple d’utilisation

Déclenchement d’un processus par un évènement utilisateur

Pour déclencher un processus depuis un évènement utilisateur, vous pouvez procéder de la façon suivante.

  1. Vous devez en premier lieu, sur la classe de l’évènement métier, définir l’évènement utilisateur.

image121.png

  1. Puis utilisez cet évènement lors du paramétrage d’un évènement métier (double-clic sur l’évènement métier).

image122.png

  1. Créez l’évènement dans le code métier.

image123.png

Dans le journal d’exécution, vous retrouvez les paramètres utilisés lors de la création de l’évènement.

image124.png

Voir aussi :

Processus Métiers (bp)Développement DSM

Outils personnels