Gerenciando o Trabalho Local com uma Área de Trabalho

Antes de Iniciar

Certifique-se de que seu cliente tenha uma referência à interface UserWorkArea, conforme descrito no tópico Acessando uma Partição UserWorkArea, ou uma referência a uma partição definida pelo usuário, conforme definido no tópico Acessando uma Partição da Área de Trabalho Definida pelo Usuário. As etapas a seguir utilizam a partição de UserWorkArea como uma ilustração. No entanto, uma partição definida pelo usuário pode ser utilizada exatamente da mesma maneira.

Sobre Esta Tarefa

Em um aplicativo de negócios que utiliza áreas de trabalho, os objetos de servidor normalmente recuperam as propriedades de área de trabalho e as utilizam para orientar o trabalho local.

Procedimento

  1. Recupere o nome da área de trabalho ativa para determinar se o encadeamento de chamada está associado a uma área de trabalho.

    Os aplicativos utilizam o método getName na interface UserWorkArea para recuperar o nome da área de trabalho atual. Se o encadeamento não estiver associado a uma área de trabalho, o método getName retornará nulo. No exemplo de código a seguir, o nome da área de trabalho corresponde ao nome da classe na qual a área de trabalho foi começada.

    public class SimpleSampleBeanImpl implements SessionBean {
    
        ...
    
        public String [] test() {
           // Obter a referência de área de trabalho do JNDI.
           ...
    
           // Recuperar o nome da área de trabalho. Neste exemplo,
           // o nome é utilizado para identificar a classe na qual a
           // área de trabalho foi começada.
           String invoker = userWorkArea.getName();
           ...
       }
    }
  2. Substituindo propriedades da área de trabalho. Os objetos de servidor podem substituir as propriedades da área de trabalho do cliente criando sua própria área de trabalho aninhada. Consulte o artigo Substituindo Propriedades da Área de Trabalho para obter informações adicionais.
  3. Recupere as propriedades de uma área de trabalho utilizando o método get.
    O método get é intencionalmente simples; não há exceções declaradas a serem tratadas. Se não houver área de trabalho ativa ou se essa propriedade não estiver definida na área de trabalho atual, o método get retornará nulo.
    Importante: O método get pode gerar um NotSerializableError no cenário relativamente raro no qual os clientes CORBA definem tipos de dados compostos e chamam interfaces de enterprise bean.

    O exemplo a seguir mostra a recuperação das propriedades identificador de site e prioridade pelo SimpleSampleBean. Observe que uma propriedade foi configurada em uma área de trabalho externa pelo cliente e a outra propriedade foi configurada na área de trabalho aninhada pelo bean do lado do servidor; o aninhamento é transparente para a recuperação das propriedades.

    public class SimpleSampleBeanImpl implements SessionBean {
    
        public String [] test() {
          ...
    
          // Começar uma área de trabalho aninhada.
          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. Opcional: Recupere uma lista de todas as chaves visíveis a partir de uma área de trabalho.

    A interface UserWorkArea fornece o método retrieveAllKeys para recuperar uma lista de todas as chaves visíveis a partir de uma área de trabalho. Esse método não utiliza argumentos e retorna uma matriz de cadeias. O método retrieveAllKeys retornará nulo se não houver uma área de trabalho associada ao encadeamento. Se houver uma área de trabalho associada que não contenha propriedades, o método retornará uma matriz de tamanho 0.

  5. Consulte o modo de uma propriedade de área de trabalho usando o método getMode.

    A interface UserWorkArea fornece o método getMode para determinar o modo de uma propriedade específica. Esse método utiliza a chave da propriedade como um argumento e retorna o modo como um objeto PropertyModeType. Se a chave especificada não existir na área de trabalho, o método retornará PropertyModeType.normal, indicando que a propriedade pode ser definida e removida sem erro.

  6. Opcional: Exclua uma propriedade da área de trabalho.

    A interface UserWorkArea fornece o método remove para excluir uma propriedade do escopo atual de uma área de trabalho. Se a propriedade foi inicialmente definida no escopo atual, sua remoção excluirá a propriedade. Se a propriedade foi inicialmente definida em uma área de trabalho circundante, sua remoção excluirá a propriedade até que o escopo atual esteja concluído. Quando a área de trabalho atual for concluída, a propriedade excluída será restaurada.

    O método remove utiliza a chave da propriedade como um argumento. Apenas as propriedades com os modos normal e somente leitura podem ser removidas. A tentativa de remover uma propriedade fixa cria a exceção PropertyFixed. A tentativa de remover propriedades em áreas de trabalho originadas em outros processos cria a exceção NotOriginator.

Exemplo

O lado do servidor do aplicativo SimpleSample de exemplo, que está incluído no tópico Desenvolvendo Aplicativos que Utilizam Áreas de Trabalho, aceita chamadas remotas dos clientes. Para cada chamada remota, o servidor também obtém uma área de trabalho do cliente, caso uma tenha sido criada pelo cliente. A área de trabalho é propagada transparentemente. Nenhum dos métodos remotos inclui a área de trabalho em sua lisa de argumentos.

No aplicativo de exemplo, os objetos de servidor utilizam a interface da área de trabalho apenas para fins de demonstração. Por exemplo, o SimpleSampleBean tenta intencionalmente gravar diretamente em uma área de trabalho importada, que cria a exceção NotOriginator. Do mesmo modo, o bean tenta intencionalmente mascarar o SimpleSampleCompany somente leitura, que aciona a exceção PropertyReadOnly. O SimpleSampleBean também aninha uma área de trabalho e substitui com êxito a propriedade de prioridade antes de chamar o SimpleSampleBackendBean. Um aplicativo de negócios real extrairia as propriedades de área de trabalho e as utilizaria para orientar o trabalho local. O SimpleSampleBean imita isso, gravando uma mensagem que informa que a função é negada quando um pedido procede de um ambiente de vendas.


Ícone que indica o tipo de tópico Tópico de Tarefa



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twa_using
Nome do arquivo: twa_using.html