Avant de commencer
Assurez-vous que le client dispose d'une référence à l'interface UserWorkArea, comme indiqué dans la rubrique Accès à la partition UserWorkArea, ou d'une référence à une partition définie par l'utilisateur, comme indiqué dans la rubrique Accès à une partition Work Area définie par l'utilisateur. Les étapes ci-après utilisent la partition UserWorkArea comme exemple. Toutefois, une partition définie par l'utilisateur peut être utilisée exactement de la même manière.
Pourquoi et quand exécuter cette tâche
Dans une application de gestion qui utilise des zones de travail, les objets serveur extraient généralement les propriétés de zone de travail et les utilise pour guider le travail local.
Procédure
- Extraire le nom de la zone de travail pour déterminer si
l'unité d'exécution appelante est associée à une zone de travail.
Les applications utilisent la méthode getName sur l'interface
UserWorkArea pour extraire le nom de la zone de travail en cours. Si l'unité d'exécution
n'est pas associée à une zone de travail, la méthode getName renvoie une
valeur NULL. Dans l'exemple de code ci-dessous, le nom de la zone de travail correspond au nom de la classe dans laquelle la zone de travail a été créée.
public class SimpleSampleBeanImpl implements SessionBean {
...
public String [] test() {
// Extraction de la référence de zone de travail à partir de JNDI.
...
// Extraction du nom de la zone de travail. Dans cet exemple,
// le nom sert à identifier la classe dans laquelle la
// zone de travail a été créée.
String invoker = userWorkArea.getName();
...
}
}
- Remplacement des propriétés de zone de travail. Les objets serveur peuvent remplacer les propriétés de zone de travail client en créant leur propre zone de travail imbriquée.
Pour plus d'informations, voir l'article Remplacement des propriétés de zone de travail.
- Extraire les propriétés d'une zone de travail à l'aide de
la méthode get.
La méthode Get est intentionnellement simple ; il n'y a
aucune exception déclarée à traiter. Si aucune zone de travail n'est active ou si aucune propriété de ce type
n'est définie dans la zone de travail en cours, la méthode get renvoie une valeur NULL.
Important : La méthode get peut générer une erreur NotSerializableError
dans le cas relativement rare où les clients CORBA définissent des types
de données composés et appellent des interfaces de bean enterprise.
L'exemple ci-dessous présente l'extraction des propriétés de priorité et d'identificateur de site par SimpleSampleBean. Remarque : une des propriétés a été définie par le client dans une
zone de travail extérieure et l'autre propriété par le bean côté
serveur dans la zone de travail imbriquée ; l'imbrication est
transparente pour l'extraction des propriétés.
public class SimpleSampleBeanImpl implements SessionBean {
public String [] test() {
...
// Création d'une zone de travail imbriquée.
userWorkArea.begin("SimpleSampleBean");
try {
userWorkArea.set("company",
SimpleSampleCompany.London_Development);
}
catch (NotOriginator e) {
}
SimpleSampleCompany company =
(SimpleSampleCompany) userWorkArea.get("company");
SimpleSamplePriority priority =
(SimpleSamplePriority) userWorkArea.get("priority");
...
}
}
- Facultatif : Extraire la liste de toutes les clés
visibles d'une zone de travail.
L'interface UserWorkArea fournit la méthode retrieveAllKeys
permettant l'extraction de la liste de toutes les clés visibles à partir
d'une zone de travail. Cette méthode n'accepte aucun argument et renvoie un tableau de chaînes. La méthode retrieveAllKeys renvoie
une valeur NULL si aucune zone de travail n'est associée à l'unité d'exécution. Si une zone de travail associée ne contient aucune propriété, la méthode renvoie un tableau de taille 0.
- Demander le mode d'une propriété d'une zone de travail
avec la méthode getMode.
L'interface UserWorkArea fournit la méthode getMode pour
déterminer le mode d'une propriété spécifique. Cette méthode utilise la clé de la propriété comme argument et renvoie le mode sous la forme d'un objet PropertyModeType. Si la clé indiquée n'existe pas dans la zone de travail, la méthode renvoie PropertyModeType.normal, indiquant que la propriété peut être définie et supprimée sans erreur.
- Facultatif : Supprimer une propriété d'une zone
de travail.
L'interface UserWorkArea fournit la méthode
remove pour supprimer une propriété de la portée en cours d'une zone
de travail. Si la propriété a initialement été définie dans la portée en cours, sa suppression supprime la propriété. Si la propriété a initialement été définie dans une zone de travail d'inclusion, sa suppression supprime la propriété jusqu'à l'achèvement de la portée en cours. Une fois la zone de travail en cours terminée, la propriété supprimée est restaurée.
La méthode remove utilise la clé de la propriété comme argument. Seules les propriétés comportant les modes normal et lecture seule peuvent être supprimées.
La tentative de suppression d'une propriété fixe crée
l'exception PropertyFixed.
La tentative de suppression des propriétés des
zones de travail émanant d'autres processus crée l'exception NotOriginator.
Exemple
Le serveur de l'exemple d'application SimpleSample, inclus dans la rubrique Développement d'applications qui utilisent des zones de travail, accepte les appels à distance des clients. Avec chaque appel à distance, le serveur extrait également une zone de travail du client, si ce dernier en a créé une. La zone de travail est propagée de façon
transparente. Aucune des méthodes éloignées n'inclut la zone de travail dans sa liste d'arguments.
Dans l'exemple d'application, les objets serveur utilisent l'interface de zone de travail à des fins de démonstration uniquement. Par exemple, SimpleSampleBean tente intentionnellement d'écrire
directement dans une zone de travail importée, ce qui crée l'exception
NotOriginator. De même, le bean tente intentionnellement de masquer le SimpleSampleCompany en lecture seule, ce qui génère l'exception PropertyReadOnly. Le SimpleSampleBean imbrique également une zone de travail et
remplace avec succès la propriété de priorité avant d'appeler
SimpleSampleBackendBean. Une réelle application de gestion extrait
les propriétés de zone de travail et les utilise pour guider le
travail local. Cela est reproduit par SimpleSampleBean qui écrit un
message indiquant que la fonction est rejetée lorsqu'une demande
émane d'un environnement commercial.