Gestion des travaux locaux dans une zone de travail

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

  1. 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();
           ...
       }
    }
  2. 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.
  3. 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");
           ...
       }
    }
    
  4. 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.

  5. 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.

  6. 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.


Icône indiquant le type de rubrique Rubrique de tâche



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twa_using
Nom du fichier : twa_using.html