Oracle BAM 11g : Utiliser les web services

L’Oracle BAM 11g, offre plusieurs possibilités d’interaction avec les objets de données (dataobjects) :

  • Oracle BAM Adapter : connecteur JCA (Java Connector Architecture), le standard Java de connexion avec les composants du système d’information.
  •  JMS (Java Messaging Service), le standard Java des files de messages,  utilisés par plusieurs systèmes de message.
  • Oracle BAM web services : ensemble de web services exposés par le BAM.

Dans cet article, nous allons découvrir ensemble quelques possibilités offertes par les web services Oracle BAM.
 

Découvrir les web services BAM

Oracle BAM fournis plusieurs web services,  dans cet article nous allons explorer les deux web services suivent :

  •  DataObjectOperationsByID : permet d’interagir avec les objets de données (dataobjects) grâce à leurs Id (ex : _Client).
  • DataObjectOperationsByName : permet d’interagir avec les objets de données (dataobjects) grâce à leurs noms (ex : Client).

Pour voir la liste exhaustive des web services Oracle BAM rendez-vous à la documentation Oracle.

Cas d’exemple

Afin de tester nos deux web services, rendez-vous dans la partie « Architect » du BAM, pour créer l’objet de données Client, avec les attributs Nom, Prénom et âge, dans le sous-dossier « Easyteam ».
Création du DataObject ClientCliquer sur l’objet « Client », deux éléments nous intéressent :

  • Emplacement : /Easyteam
  • ID d’objet de données : _Client

DataObjectOperationsByID

Maintenant que notre objet de données « Client » est prêt, nous allons essayer de l’alimenter grâce au web service DataObjectOperationsByID, dont le WSDL se trouve ici :
http://host:port/OracleBAMWS/WebServices/DataObjectOperationsByID?WSDL
Pour pouvoir testé le web service nous avons besoin d’un client web service, dans mon cas j’utilise soapUi. Une fois le wsdl importé, compléter l’opération « insert »  par le message soap suivent :

<soapenv:Envelope xmlns:bam="http://xmlns.oracle.com/bam" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Header></soapenv:Header>
   <soapenv:Body>
      <bam:Insert>
<bam:dataObject>/Easyteam/Client</bam:dataObject>
<bam:xmlPayload><![CDATA[<_Client><_Nom>TOTO</_Nom><_Prenom>TATA</_Prenom><_Age>30</_Age></_Client>]]></bam:xmlPayload>
      </bam:Insert>
   </soapenv:Body>
</soapenv:Envelope>

NB : le web service est sécurisé, pensez à compléter les éléments d’authentification dans le header (utiliser l’utilisateur weblogic par exemple).
Rendez-vous dans la partie « Architect » du BAM pour vérifier la création d’une nouvelle ligne (Comme ci-dessous) dans notre objet Client.
DataObject Client
Pour supprimer une ou plusieurs lignes, il faut utiliser la méthode « delete » comme ci-dessous :

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bam="http://xmlns.oracle.com/bam">
   <soapenv:Header/>
   <soapenv:Body>
      <bam:Delete>
         <bam:dataObject>/Easyteam/Client</bam:dataObject>
        <bam:keysCSV>_Nom</bam:keysCSV>
<bam:xmlPayload><![CDATA[<_Client><_Nom>TOTO</_Nom></_Client>]]></bam:xmlPayload>
      </bam:Delete>
   </soapenv:Body>
</soapenv:Envelope>
  • dataObject : chemin vers l’objet de données.
  • keysCSV : la ou les colonne(s) clés séparés par des virgules.
  • xmlPaload : l’Xml décrivant la clause « where » du « delete ».

DataObjectOperationsByName

De la même manière que DataObjectOperationsByID, nous allons récupérer le Wsdl du web service avec lien suivent :
http://host:port/OracleBAMWS/WebServices/DataObjectOperationsByName?WSDL
Contrairement au web service précèdent,  la méthode « insert » du web service DataObjectOperationsByName, n’offre que le champ « xmlPaload » à compléter par ceci :

<![CDATA[<DataObject Name="Client" Path="/Easyteam"><Contents><Row><Column Name="Nom" Value="TOTO1" /><Column Name="Prenom" Value="TATA1" /><column Name="Age" Value="35" /></Row></Contents></DataObject>]]>

NB : il est possible d’insérer plusieurs lignes, il suffit de multiplier les « Row ».
Il nous nous reste plus qu’à vérifier l’insertion de notre nouvelle ligne dans l’objet de données.
 
DataObject ClientDe la même façon, pour supprimer une ou plusieurs lignes, il faut utiliser la méthode « delete » comme ci-dessous :

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bam="http://xmlns.oracle.com/bam">
  <soapenv:Body>
      <bam:Delete>
         <!--Optional:-->
         <bam:keysCSV>Nom</bam:keysCSV>
         <!--Optional:-->
         <bam:xmlPayload><![CDATA[<DataObject Name="Client" Path="/Easyteam"><Contents><Row><Column Name="Nom" Value="TOTO1" /></Row><Row><Column Name="Nom" Value="TOTO" /></Row></Contents></DataObject>]]></bam:xmlPayload>
      </bam:Delete>
   </soapenv:Body>
</soapenv:Envelope>

Conclusion

Nous avons testé dans cet article, les différentes façons d’alimentation d’un objet de données BAM grâce aux deux web services DataObjectOperationsByID et DataObjectOperationsByName.
Il faut noter que les web services offrent d’autres méthodes, que nous aborderons en détails dans d’autres articles à venir.