jeudi 27 décembre 2007

Sensor Edge Server (SES) et eflow pour appeler un Web Service

Ce mémo vous explique trés simplement comment relier un SES avec un Web Service présent par exemple sur le bus ESB Oracle, ou vers un autre webservice de votre choix.

Dans SES, vous avez par défaut la possibilité d'utiliser EFLOW (event flow), afin de propager vos données du RFID vers le monde informatique.

il suffit de placer un fichier eflow.xml dans le répertoire de votre SES ce qui correspond à :

ORACLE_HOME\j2ee\home\applications\edge\edge\config

ce fichier explique ce que fera le SES dans le cas où votre événement RFID (lecture de tag par exemple) correspond à vos critères. Pour le cas de ce mémo, il va propager l'information dans une interface ESB Oracle. Cette interface n'est autre qu'un Web Service dont la structure comporte les paramètres suivants :


Ensuite vous devez stopper le SES, placer le fichier Eflow.xml dans le répertoire que nous avons décrit ci-dessus. Dans ce fichier vous pouvez librement rajouter des actions, suite à un événement RFID.


Oracle vous propose un fichier eflo.xml contenant beaucoup de commentaires. Je vous propose une version plus simple à télécharger sur ce lien : http://hugues.simonnet.free.fr/logiciels/blog/eflow.xml


Noter que dans ce fichier vous devez spécifier :

- le WSDL de réception

- la méthode à appeler

- le namespace xmlns de votre Web Service

Lors du démarrage du SES vous devez avoir ce type de ligne dans les log de l'application edge :

ORACLE_HOME\j2ee\home\applications\edge\edge\log\edgeX.log
(où X est le numéro du fichier)

Thu Dec 27 16:59:15 CET 2007(8): ThreadFactory: New thread Name=SES.TF.EventFlow Runnable=oracle.edge.tools.eflow.EventFlow@86f847
Thu Dec 27 16:59:15 CET 2007(8): Valid dispatcher preloaded, using it


PS:
Noter également que EFLOW est trés ouvert, vous pouvez implémenter votre propre classe java de propagation de l'information RFID, en déclarant une classe java dans le fichier eflow.xml:

comme cela est fait pour l'appel d'un web service:

component name="callWs" class="oracle.edge.tools.eflow.impl.WsState"

exemple:
component name="callHugu" class="com.hugu.tools.MaClasseBlog"

Cette classe peut ainsi faire appel à ce que vous voulez ....

Aucun commentaire: