jeudi 26 juin 2008

XSL - créer ses propres fonctions XSL dans XML Mapper (user defined extension function)

Cet article vous permet de créer vos propres fonctions XSL à partir d'une classe java.

Tout d'abord il faut créer votre classe java effectuant une fonction non existante dans la palette du XML Mapper. Pour ma part j'utilise le super outil jdev .... ;)

Ma fonction d'exemple transforme des lettres 'aaa' en chaine 'bbb'.

package xsltfunctions;
public class XmlToHtml {

public XmlToHtml() { }
public static String getXmlConverted(String s)
{
s = s.replaceAll("aaa", "bbb");
s = s.replaceAll("zz", "RR");
return s;
}}


compiler cette classe, et rajouter un répertoire META-INF dans votre répertoire classes.


Le répertoire classes doit donc comprendre :

- 1 répertoire META-INF avec cet exemple de fichier XML conforme à la JSR 198 extension pour Jdev:





Télécharger ce fichier : ici
- 1 répertoire xsltfunctions contenant notre classe XmlToHtml compilée


Placer vous dans le répertoire classes pour exemple :

D:\dev_hugu\XmlManipulation\ClassXslFunction\classes

Faites un jar via la ligne de commande:

jar cvf xsltfunctions.1.0.jar *

Afin d'intégrer cette nouvelle fonction à jdev, vous devez modifier les préférences. Allez dans le menu Tools/Preferences, et sélectionner la dernière option XSL Maps.




Spécifier un fichier XML dans la zone:




Ce fichier XML décrit notre extension et comment retrouver la bonne classe, voici mon exemple:



Télécharger ce fichier extension.xml : ici

Ensuite quittez Jdev et re démarrer le.


Aller dans une transformation XSL et dans la palette des fonctions, votre nouvelle fonction apparait.

la fonction Test du XML mapper utilise bien notre fonction. Pour l'utiliser dans l'ESB / BPEL lors de l'éxecution sur votre serveur, il suffit de copier le fichier jar dans le répertoire de votre instance SOA suite:

ORACLE_HOME/j2ee/oc4j_soa/applib

Redémarrer votre Soa Suite et déployer votre processus bpel our ESB appelant cette transformation XSL et ca marche .....

Voici les liens vers la doc:

plus d'info sur XML Mapper en anglais : http://download.oracle.com/docs/cd/B31017_01/integrate.1013/b28981/xslt_mpr.htm#sthref1426

mardi 24 juin 2008

Bpel - Ecrire un fichier dans un répertoire dynamique - passer ou modifier des paramètres depuis la console


Voici un petit article sur BPEL et la possibilité au sein de ce super outil de passer ou modifier des paramètres à un processus déjà déployé c'est à dire en production.

L'exemple ci-dessous va illustrer le cas d'un processus Bpel qui doit écrire dans un répertoire un fichier xml. Le répertoire désigné est un paramètre. Il sera changé après avoir déployé ce processus.

Pour écrire un fichier dans un répertoire, on utilise l'adapteur fichier proposé en standard dans Bpel.

Il faut spécifier soit un nom logique, soit un chemin physque pour le répertoire de destination de ce fichier.

dans mon exemple nous allons créer la préférence "monrep", pour atteindre la liste des préférences il suffit de cliquez dans jdev sur l'icone:

puis la popup suivante apparait :

ainsi après le déploiement de ce processus on obtient une préfrence modifiable depuis la console Bpel.

Pour que cette préférence soit dynamique dans le processus, il faut utiliser une variable bpel basée sur le schéma :


et la spécifier dans l'onglet (comme ci-dessus) adapter de l'action invoke. Si le schéma ne fait pas apparaitre le champ xml directory, il faut éditer à la main le WSDL pour qu'il est la structure suivante: ici


Ensuite dans une action ASSIGN avant votre INVOKE de votre adapteur fichier, il suffit d'attribuer le nom du répertoire désiré:



Vous déployer votre processus, et vous pouvez dynamiquement changer le répertoire en modifiant la préférence depuis la console d'administration:




et voilou ....

mardi 17 juin 2008

Oracle Adapter for Siebel - Could not open a session in 4 attempts. {1}(SBL-JCA-00200)


Si vous avez mis en place l'adapteur siebel d'Oracle et que lors de la tentative de connexion vous avez ce superbe message d'erreur:


20080616-17:39:12 ERROR com.ibi.bse.TargetWorker:java.lang.IllegalStateException: Problem activating adapter. (Could not open a session in 4 attempts. {1}(SBL-JCA-00200)). Check logs for more information


N'hésitez pas à vérifier vos paramètres de connexion, si vous êtes certains, consultez alors la log de l'adapteur présente dans ORACLE_HOME\adapters\application\config\jca_sample\log


jca_sample correspond à votre configuration depuis l'application explorer.

Si cette log ne vous donne pas plus d'information sur le problème consultez alors la log du serveur siebel:

présente dans ce répertoire D:\sea\siebsrvr\log dans mon cas. Listez les derniers fichiers Log et vous trouverez l'erreur :


2021 2008-06-16 11:03:27 0000-00-00 00:00:00 -0500 00000000 001 003f 0001 09 siebdev 1500 2872 D:\sea\siebsrvr\log\siebdev.log 8.0 SIA [20405] ENUObjMgrLicense Error 1 00000002485605dc:0 2008-06-16 11:03:27 (dmlicmgr.cpp (133)) SBL-DAT-00171: A license key for this software has expired.
Please enter a new key to proceed, or contact your system administrator.


Si maintenant on ouvre SiebelTool (outil de dev et d'administration des objets siebel)

en allant dans Help puis Technical support puis le bouton licence key on a :


Modifiez vos licences et cela devrait le faire .....

jeudi 12 juin 2008

Oracle WLP (weblogic portal)

Certes c'est en anglais cette superbe vidéo, mais cela vous donnera une étendue du la puissance de WLP ....

http://www.youtube.com/watch?v=tn2DjGoBkMQ

OWSM - Web Service Manager deployer une nouvelle gateway


Vous pouvez configurer depuis la console web de WebService Manager une nouvelle gateway afin de sécuriser vos Web Services.

Pour que cette gateway soit opérationnelle, il faut la déployer sur votre SOA suite.


Pour faire cela, il suffit d'utiliser le script :


ORACLE_HOME\owsm\bin>wsmadmin deploy gateway


PS: Il faut bien entendu que votre SOA suite soit démarrée ...


plus de renseignements en anglais sur :


mercredi 11 juin 2008

WebApp Ipico avec Tolk Framework pour Oracle


Je vous avais déjà proposé un article sur Tolk le framework permettant d'interpréter les trames IPX des lecteurs RFID IPICO, je vous propose maintenant de découvrir la webapplication à déployer dans le serveur d'application Oracle.

Cette webapplication comprend une servlet qui peut démarrer automatiquement vos communications avec vos lecteurs RFID ipico.

Cette application web comprend une servlet qui autorise le démarrage et l'arrêt (bug en cours de correction) manuellement. Une fois la trame récupérée avec le protocole IPX dans la webapp, celle-ci est poussé soit sur un fichier, une base de donnée, ou encore une queue JMS.

C'est le dernier cas que j'ai utilisé dans ce lien vers mon projet Jdev: ici

Bon RFID à tous .........

mercredi 4 juin 2008

XSL - enrichir le flux en temps reel


Afin d'enrichir un flux xml, lors d'une transformation XSL,

SOA suite et Oracle propose des fonctions de base de données:


orcl:query-database (arg1, arg2, arg3, arg4)


sqlquery - requête SQL
rowset - Indicates if the rows should be enclosed in an element
row - Indicates if each row should be enclosed in an element
datasource - Either a JDBC connect string (jdbc:oracle:thin:username/password@host:port:sid) or a JNDI name for the database


Concrètement:
1er argument : votre requête SQL comme celle-ci
concat("select nom from maTable where id='",/ns1:monXml/ns1:id,"'")





2iem argument:
false()





3iem argument:
false()





4iem argument:
"jdbc:oracle:thin:orabam/ora123@hsimonne-fr:1521:hugu"





et automatiquement lors de la transformation xsl, vous accèdez à votre table pour enrichir la requête ou la réponse d'ailleurs .....



je vous propose mon xsl sur ce lien: ici


plus de détail dans la doc oracle officielle :
http://download-west.oracle.com/docs/cd/B31017_01/integrate.1013/b28981/app_xpath_functions.htm