Les opérations

WB utilise assivement les sessions PHP pour conserver des informations lorsque des traitement sont partagés par plusieurs scripts.

Du fait de sa conception modulable, on ne peut pas savoir à l'avance quelles seront les variables utilisées par tel ou tel script à l'intérieur d'une session. Il y a donc un risque de définir plusieurs fois la même variable. C'est particulièrement vrai si l'on considère qu'on peut effectuer plusieurs fois la même opération en ême temps : par exemple cataloguer plusieurs notices en même temps (dans la même session).

Pour éviter la confusion et l'écrasement des variables, on peut créer dans une session plusieurs opérations. Une opération est simplement un tableau associatif contenu dans $_SESSION et qui permettra de stocker toutes les variables relatives à cette opération.

Chaque opération est est définie par une clef générée automatiquement par WB. De cette manière il n'y aura pas de confusion entre les vraiables de même nom, même si 2 opération de même nature sont effectuées simultanément dans la même session. Par exemple, si on catalogue simultanément 2 notices, et que chaque opération a besoin de la variable $notice, on aura :

$_SESSION["operations"]["XXXX"]["notice"] = ......;
$_SESSION["operations"]["YYY"]["notice"] = ......;

Les clefs "XXX" et "YYY" étant attribuées par WB

1) Créer une opération

Pour créer une opération, il suffit de mettre au début du script :

if ($ID_operation=="") {
    $ID_operation=get_id_operation();
    $_SESSION["operations"][$ID_operation]=array();
}

Ces lignes sont généralement placées au début des scripts PHP affichables (pas de ceux de type WebService). En utilisant les fonctionnalités des pages de WB, on peut n'écrire ce code qu'une fois, même si l'opération se déroule sur plusieurs pages.

La variable $ID_operation est automatiquement extraite de $_REQUEST, inutile de le refaire.

La fonction get_id_operation() va automatiquement générer une clef.

2) Propager une opération

Il est nécessaire de propager l'ID de l'opération dans les templates. Les différents formulaires devront généralement avoir ID_operation en champ caché. De même chaque appel aux WebServices devra contenir la variable ID_operation.

3) Utiliser les variables de l'opération

Les variables sont accesibles via
$_SESSION["operations"][$ID_operation]...

que ce soit dans les scripts de de BIB.php ou BIB_WS.php