vendredi 28 décembre 2007

Bonne Année 2008 à tous ....

je vous souhaite à tous une excellente année 2008 !!







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

mercredi 26 décembre 2007

ESB Oracle - problèmes de connexion

Un petit mémo sur l'ESB:

En cas de problème de connexion à votre ESB Oracle, soit pour un déploiement vérfier ces informations dans le schéma ORAESB. Ces informations doivent être présente dans la table esb_parameter de votre base de donnée :


insert into esb_parameter values ('PROP_NAME_MONITOR_TOPIC_JNDI','OracleASjms/ESBMonitorTopic');
insert into esb_parameter values ('PROP_NAME_ERROR_XATCF_JNDI','OracleASjms/MyXATCF');
insert into esb_parameter values ('PROP_NAME_ERROR_RETRY_JNDI','OracleASjms/ESBErrorRetryTopic');
insert into esb_parameter values ('DT_OC4J_HTTP_PORT','<>');
insert into esb_parameter values ('PROP_NAME_CONTROL_TCF_JNDI','OracleASjms/MyXATCF');
insert into esb_parameter values ('PROP_NAME_MONITOR_TCF_JNDI','OracleASjms/MyTCF');
insert into esb_parameter values ('PROP_NAME_ERROR_TOPIC_JNDI','OracleASjms/ESBErrorTopic');
insert into esb_parameter values ('PROP_NAME_ERROR_TCF_JNDI','OracleASjms/MyTCF');
insert into esb_parameter values ('PROP_NAME_CONTROL_TOPIC_JNDI','OracleASjms/ESBControlTopic');
insert into esb_parameter values ('PROP_NAME_DEFERRED_TCF_JNDI','OracleASjms/MyTCF');
insert into esb_parameter values ('DT_OC4J_HOST','<>');
insert into esb_parameter values ('PROP_NAME_DEFERRED_XATCF_JNDI','OracleASjms/MyXATCF');
insert into esb_parameter values ('PROP_NAME_ERROR_RETRY_TCF_JNDI','OracleASjms/MyXATCF');

vendredi 21 décembre 2007

Utilisation de AQ (Advanced Queueing) avec SOA

Cet article va vous expliquer comment utiliser AQ d'Oracle (MOM interne de la base de données) avec Bpel ou ESB. AQ peut être comparé à MQSerie de IBM.

Tous les messages sont stockés dans la base Oracle et vous assure de les retrouver quoiqu'il se passe, notamment en mettant en oeuvre l'option Oracle RAC (Cluster de la base de donnée).

La première étape consiste à créer une queue dans votre base de donnée (9i jusqu'à 11g). Pour ma part j'utilise 10g. On peut bien sure scripter la création d'une queue ou alors utiliser l'interface graphique d'administration de votre base de donnée.

Aller sur le "Database Control" qui est une webapp livrée avec votre base de donnée. Si elle ne démarre pas vérifier que le service Windows associé est bien démarré.
Pour ma part, il s'agit de l'URL : http://hsimonne-fr.fr.oracle.com:1158
(où hsimonne-fr.fr.oracle.com est le nom de mon serveur)

Connectez-vous en tant que SYSDBA puis cliquer sur l'onglet "maintenance". Dans cette rubrique, vous avez "Stream", cliquez sur "setup", puis "messaging". Vous devez arriver à ce type d'écran:




Cliquez ensuite sur "CREATE" puis sélectionner "Normal Queue, Fixed Datatype".

Saisir un nom pour votre "queue de message" et une table associé pour y stocker les informations.
Vous devez ensuite créer une table qui stockera l'ensemble de vos messages :

Le nom de table doit être précédé du schema comme "EDGE" .
Exemple :

Cliquez ensuite sur "Finish". Pour rendre actif votre queue AQ, il faut lui associer un "Subscriber". Cet objet va gérer la réception des messages et la consommation de ceux-ci.

Sélectionnez alors :

puis "GO" et dans l'écran suivant "CREATE" pour arriver sur cela :



Entrez un nom de "subcriber" et le nom de la queue précédemment créer avec son schéma devant comme dans l'image ci-dessus. Voila c'est terminée pour la partie DataBase.

Ensuite dans votre Jdev préféré, soit vous pousser un message depuis l'ESB ou depuis BPEL en utilisant l'adapteur proposé en standard pour AQ adapter:


puis suivre les étapes suivantes:

Attention ! Spécifier bien une connexion database avec l'utilisateur ayant accès au schéma dans lequel réside votre queue.


Spécifier comme ci-dessus si vous consommer ou envoyer un message, puis sélectionner ensuite votre queue depuis cet écran :


Spécifier ensuite si vous voulez corréler les messages, c'est à dire dépiler ou envoyer un message contenant un certain identifiant (sinon ne rien mettre):




Spécifier le format du message stocké, en utilisant par exemple un XSD:



Et voila c'est fini pour envoyer un message AQ !

Si vous souhaitez maintenant le consommer, il suffit de prendre le même adpateur AQ et de spécifier que vous consommer. Attention ! Dans ce cas il faut spécifier le "Subscriber" configuré dans la Base de donnée, exemple:




Ainsi, votre ESB Oracle ou Bpel Manager peut envoyer / consommer des messages avec AQ.

vendredi 14 décembre 2007

Interfaces Web Services - Oracle BAM

Depuis le super outil Oracle BAM 10.1.3.x, vous pouvez accèder aux interfaces Web Services proposés dans l'outil.

Vous pouvez ainsi pousser des données directement dans vos dataObjects de votre BAM, il suffit d'utiliser l'Url:

http://hsimonne-fr:8080/oraclebam/services/DataObject/DataObjectOperations.asmx


Pour récupérer, créer, supprimer des dataObjects :

http://hsimonne-fr:8080/oraclebam/services/DataObject/DataObjectDefinition.asmx


ainsi pour la méthode UpSert du premier lien "asmx", on peut envoyer la réquête exemple suivante (en utilisant par exemple SOAPUI ou l'interface .Net de Oracle BAM)


Détail du 3iem champ sur cette image ci-dessous:
via SOAPui :


j'attire votre attention sur la fenêtre en bas à gauche, il faut passer une authentification vers le web service OracleBam