Inscrivez-vous à la newsletter

Inscrivez-vous à la newsletter

Abonnez-vous maintenant et nous vous tiendrons au courant.
Nous respectons votre vie privée. Vous pouvez vous désabonner à tout moment.

0SB 12c – l'activité javascript

Partager sur linkedin
Partager sur twitter
Partager sur facebook

Préambule

Le javascript peut s’avérer très utile pour débloquer grand nombre de situations, et cela très rapidement.
Initialement prévue pour manipuler le json, la nouvelle activité proposée dans la SOA 12c pour utiliser ce langage dans les flux peut ainsi être une bonne alternative à l’utilisation du java, ce dernier étant assez contraignant à utiliser puisqu’il nécessite souvent la création d’un jar suivi de son déploiement sur les serveurs et leur redémarrage.

Cas pratique

Pour illustrer l’utilisation du javascript à l’aide de l’activité JS, nous mettons en place dans un flux OSB un appel à une fonction de « decodage base 64 ».
Prenons pour base ce code qui permet de réaliser de l’encodage ou du décodage base 64 :
{_keyStr: »ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= »,encode:function(e){var t= » »;var n,r,i,s,o,u,a;var f=0;e=Base64._utf8_encode(e);while(f<e.length){n=e.charCodeAt(f++);r=e.charCodeAt(f++);i=e.charCodeAt(f++);s=n>>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){u=a=64}else if(isNaN(i)){a=64}t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)}return t},decode:function(e){var t= » »;var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9+/=]/g, » »);while(f<e.length){s=this._keyStr.indexOf(e.charAt(f++));o=this._keyStr.indexOf(e.charAt(f++));u=this._keyStr.indexOf(e.charAt(f++));a=this._keyStr.indexOf(e.charAt(f++));n=s<<2|o>>4;r=(o&15)<<4|u>>2;i=(u&3)<<6|a;t=t+String.fromCharCode(n);if(u!=64){t=t+String.fromCharCode(r)}if(a!=64){t=t+String.fromCharCode(i)}}t=Base64._utf8_decode(t);return t},_utf8_encode:function(e){e=e.replace(/rn/g, »n »);var t= » »;for(var n=0;n<e.length;n++){var r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r)}else if(r>127&&r<2048){t+=String.fromCharCode(r>>6|192);t+=String.fromCharCode(r&63|128)}else{t+=String.fromCharCode(r>>12|224);t+=String.fromCharCode(r>>6&63|128);t+=String.fromCharCode(r&63|128)}}return t},_utf8_decode:function(e){var t= » »;var n=0;var r=c1=c2=0;while(n<e.length){r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r);n++}else if(r>191&&r<224){c2=e.charCodeAt(n+1);t+=String.fromCharCode((r&31)<<6|c2&63);n+=2}else{c2=e.charCodeAt(n+1);c3=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);n+=3}}return t}} process.customerInformationsDecoded = Base64.decode(process.customerInformations);
Il suffit ensuite d’insérer l’activité JS dans le flux de la façon suivante :

insertion activite js

parametrage activite js

Ceci a pour effet de déclarer une première variable locale « Base64 » contenant le code JS fourni précédemment, puis d’initialiser une seconde variable « customerInformationsDecoded ». Celle-ci contiendra le résultat du décodage d’une variable existante nommée « customerInformations ».
La variable ainsi déclarée peut par la suite être utilisée dans le reste du process, par exemple dans un « java callout » ($customerInformationsDecoded).
utilisation java callout

Documentation officielle
 
 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.