lundi 28 janvier 2008

ALSB & BPEL

Un petit test avant la fusion entre BEA et Oracle :
Dans ce mémo je démontre l'intéraction entre l'ESB (ex: BEA) et l'orchestrateur Bpel Process Manager.

Je vous confirme que cela fonctionne parfaitement par cette petite démo:
1 - il faut télécharger ALSB (version 2.6 actuelle, v3 fin Q1 normalement)
2 - installer ALSB (20mn à feu doux)
3 - paramétrer l'ESB via l'interface Web (http://monserveur:7021/sbconsole)


Dans un premier temp il faut importer le contrat d'interface WSDL et tout ce qui va avec. Pour cela on utilise dans ALSB la fonction d'import "Bulk ressources from url"



puis on fait suivant :

On paramètre ensuite son Business Service, qui correspond à l'interface du service que vous exposer sur votre bus. Ce BS (Business Service) peut être un web service, un fichier, un message tuxedo, du jms .... C'est l'interface de votre service disponible dans votre SI (système d'information).

On paramètre ensuite un Proxy Service, interface de consommation du service que vous mettez à la disposition de vos consommateurs de services. Ils peuvent être multiple et utiliser des transformation xquery, xpath, xslt ...

Pour mon petit test j'ai utilisé la même interface en le proxy service et le business service. J'ai définit un flux xml de l'un vers l'autre dans la console ALSB:




On peut rajouter des modifications, sur la requête comme sur la réponse. Une fois le PS (proxy service) configuré vous avez alors une interface de consommation disponible. Cette interface peut être testée avec SOAPui ou directement depuis la console de ALSB afin d'avoir un processus Bpel qui se déclenche depuis le bus ALSB :

A gauche de cette image vous avez la console ALSB et en arrière plan Bpel Process Manager.


Evolution de ALSB :

La version 3.0 a été présentée recemment sous forme de web séminaire, je vous propose 2 copies d'écrans. On notera que l'interface de paramètrage passe enfin dans Eclipse, (car la console tout seul à force c'était pas toptop).





Faudra que tout cela passe dans Jdev maintenant ..... et pourquoi pas les 2 possibilités ???

Pour le moment l'intégration des produits n'est toujours pas définit !

mercredi 23 janvier 2008

Oracle - GS1 : Démonstrateur ONS (root & local)


Oracle participe au démonstrateur GS1 sur l'ONS (Object Naming Service).

Une présentation de GS1 France sera faite de l'utilité de l'ONS dans le monde RFID. Un démonstrateur utilisant la technologie Oracle Sensor Edge sera présenté. Ce démonstrateur utilise un lecteur ALIEN, le middleware Oracle (SES, EPCIS, ONS client ...), les serveurs Orange Business Services (pour l'ONS).


Plus de détail sur le site de GS1 France :





Ce démonstrateur effectuera des requêtes vers un ONS Local puis ONS Root et affichera les informations de produit lu par le lecteur RFID dans une application Web. Toutes ces informations proviennent du résultat d'une requête EPCIS normalisée.


Etant donné que j'ai participé à ce démonstrateur, je vous propose un extrait de la présentation de demain dans les locaux de GS1 France sur ce lien : ICI


Bonne lecture et peut être à demain chez GS1 France !


mercredi 16 janvier 2008

Oracle vient de racheter BEA

Une news importante dans le monde middleware, Oracle vient de racheter BEA $8.5 billion !

Moi je suis ravi ... :)
je connais déjà les 2 offres !

mardi 15 janvier 2008

Mise à jour SOA v11 preview 3 - avec gestion des variables en java dans bpel

Suite à l'article :


http://hugublog.blogspot.com/2007/03/bpel-java-rcupration-des-variables.html

je voulais valider que ce type de manipulation fonctionne bien sous la V11 (beta 3) de SOA Suite.

Je vous engage d'ailleurs à la télécharger gratuitement afin de la découvrir ....

Cette version 11 supporte SCA (Service Composite Architecture). L'exemple suivant affiche une application composite appelant un processus BPEL. Celui-ci manipule des variables XML directement en Bpel mais aussi via les Api Java disponible dans les version 10.1.3.X et 11 :







j'ai effectué dans le code source bpel l'ajout des package suivants :

bpelx:exec import="org.w3c.dom.Document"

bpelx:exec import="org.w3c.dom.Element"

bpelx:exec import="org.w3c.dom.Node"

bpelx:exec import="org.w3c.dom.NodeList"



Le code java de l'action JavaExec est trés simple, il utilise la variable input et copie son contenu dans la variable de type String "rating":

Element elementIN = (Element)getVariableData("inputVariable","payload","/client:BPELProcess1ProcessRequest/client:input");

addAuditTrailEntry(">>> >>> Element tag name "+ elementIN.getTagName() + " -- "+ elementIN.getFirstChild().getNodeValue());

setVariableData("rating", elementIN.getFirstChild().getNodeValue().toString());

addAuditTrailEntry(">>> >>> rating");


Tout ca pour dire que ca fonctionne bien sous la V11

;)

lundi 14 janvier 2008

Windows - FAT32 vers NTFS

Un petit mémo sur la conversion Fat32 Ntfs:

Comment faire pour convertir un volume FAT ou FAT32 en NTFS Remarque : Bien que les risques de corruption ou de perte de données pendant la conversion soient minimes, nous vous conseillons d'effectuer une sauvegarde des données sur le volume à convertir avant de démarrer la conversion.

Pour convertir un volume FAT ou FAT32 en NTFS, procédez comme suit :

1. Cliquez sur Démarrer, pointez sur Tous les programmes, sur Accessoires, puis cliquez sur Invite de commandes.

2. À l'invite de commande, tapez la commande suivante, lettre_lecteur désignant le lecteur à convertir : convert lettre_lecteur : /fs:ntfs
Par exemple, tapez la commande suivante pour convertir le lecteur E en NTFS : convert e : /fs:ntfs

Remarque:
Si le système d'exploitation se trouve sur le lecteur que vous convertissez, vous serez invité à planifier la tâche au redémarrage de l'ordinateur, car la conversion ne peut se faire pendant que le système d'exploitation est en cours d'exécution. Lorsque vous y êtes invité, cliquez sur OUI.

3. Lorsque vous recevez le message suivant à l'invite de commande, tapez le nom de volume du lecteur que vous convertissez, puis appuyez sur ENTRÉE :Le type du système de fichiers est FAT.Entrez le nom de volume actuel de lettre_lecteur

4. Lorsque la conversion en NTFS est terminée, vous recevez le message d'erreur suivant à l'invite de commande :La conversion est terminée.

5. Quittez l'invite de commandes.

mercredi 2 janvier 2008

Sensor Edge Server (SES) et eflow.xml avec JMS (DispatcherJMS)




Voici un petit mémo sur SES et une destination JMS présente par exemple sur un autre serveur d'application ou sur une EDA suite Oracle.

L'opération consiste à propager la donnée RFID dans l'ESB Oracle (par exemple) via cette fois-ci l'utilisation de JMS (Java Message Service). Le JMS du serveur d'application Oracle propose en standard cette fonctionnalité avec ou sans persistance des messages (mémoire, fichier, base de données).

Pour configurer votre eflow.xml :


il faut configurer l'appel à votre propre classe par :

component name="callBean" class="oracle.edge.tools.eflow.impl.CallBeanState"

voici mon eflow.xml pour vous détailler, accèssible sur ce lien ICI .

Le contenu de ce fichier doit être copié dans votre fichier eflow.xml dans le répertoire : ORACLE_HOME\j2ee\home\applications\edge\edge\config

La ligne du fichier eflow.xml suiavante permet de spécifier la classe qui sera exécuté lors d'un évènement RFID :

callBean name="callbean.event" class="eflow.JmsHuguBean" methodName="onEvent" userData="queueRFIDHugu"

Dans mon cas c'est cette classe JmsHuguBean dont le source est disponible ICI

Cette classe java compilée doit être présente dans le répertoire du Edge Server : ORACLE_HOME\j2ee\home\applications\edge\edge\extensions\classes

A chaque évènements RFID, elle créée un message de type JMS vers une Queue JMS : queueRFIDHugu

Ps: Afin d'obtenir l'URN EPC (exemple : URN:EPC:ID:SGTIN-64:10240.917504.25165824), j'ai rajouté dans la classe java ces lignes :

....

import oracle.edge.tools.epc.BinarySet;
import oracle.edge.tools.epc.Encodings;
import oracle.edge.tools.epc.Tag;
.....


// EPC:URN get
Encodings encs;
String value=null;
try {
encs = new Encodings();
BinarySet bs = new BinarySet(id.length() * 4, id.toUpperCase(), 16);
Tag tag = encs.decode(bs);
Logger.n("JMSHuguBean --- decoded...!");
value = tag.getField("urn");
Logger.n("JMSHuguBean --- urn hugu ==> " + value);
} catch (Exception e) { e.printStackTrace(); }