ROSE - Remote Operation Service Element


Apesar de não ser universalmente usado como o ACSE, o ROSE é muito usado pelas entidades de serviço de aplicação de propósito geral.

O ROSE é utilizado para suportar tipos interativos de aplicações, as quais são caracterizadas por um request de uma aplicação para outra aplicação para executar alguma operação. No campo programming, um exemplo comum deste mecanismo é a chamada de procedure remota.


PRINCÍPIOS

O serviço básico provido pelo ROSE é a facilidade de invocar uma operação sobre um sistema aberto remoto. A entidade aplicação (AE) invoca a operação emitindo um request para uma igual AE, especificando uma operação particular a ser executada. A outra AE tenta executar a operação e pode reportar o resultado da tentativa. A troca entre as duas entidades é conduzida fora do contexto da associação de aplicação.


CLASSE DE OPERAÇÃO

As operações invocadas por uma entidade de aplicação (o invoker) são executadas por outra entidade de aplicação (o performer). A interação entre duas entidades que resulta numa tentativa de inicio de operações é caracterizada por uma classe de operações, a qual está combinada entre as duas entidades para cada invocação separada. A classe de operação é definida por duas características de troca (permuta): o procedimento reportado da AE tentando a operação e se a troca é síncrona ou assíncrona.

CLASSES DE OPERAÇÃO DO ROSE

Classe de operação 1

Modo reportado: se ocorre sucesso, retorna uma resposta com o resultado. Se ocorre uma falha, retorna uma resposta com o erro.

Modo de operação: síncrono

Classe de operação 2

Modo reportado: se ocorre sucesso, retorna uma resposta com o resultado. Se ocorre uma falha, retorna uma resposta com o erro.

Modo de operação: assíncrono

Classe de operação 3

Modo reportado: se ocorre sucesso, não responde. Se ocorre falha, retorna uma resposta com o erro.

Modo de operação: assíncrono

Classe de operação 4

Modo reportado: se ocorre sucesso, retorna uma resposta com o resultado. Se ocorre falha, não responde.

Modo de operação: assíncrono

Classe de operação 5

Modo reportado: se ocorre sucesso, não responde. Se ocorre falha, não responde.

Modo de operação: assíncrono

A AE que estiver executando a operação pode observar um dos quatro tipos de procedimentos reportados:

  1. Sempre reporta um resultado, se ele é realizado com sucesso ou com falha.
  2. Somente reporta a falha.
  3. Somente reporta o sucesso.
  4. Não reporta o resultado.

Se o resultado, sucesso ou falha, é sempre reportado, então a AE invocada tem a opção de aguardar ou não um report antes de continuar com operações síncronas, o invoker requer uma resposta da execução antes de invocar outra operação. Com operações assíncronas, o invoker pode continuar invocando operações sem esperar uma resposta.


CLASSES DE ASSOCIAÇÕES

O ROSE pode ser usado por duas entidades de aplicação que dividem uma aplicação de associação invocando uma ou mais operações. A AE que inicia uma associação de aplicação é chamada de association initiator, considerando que a AE que responde ao request é chamada de association responder. As duas AEs devem concordar sobre uma das três classes de associações que empregará durante a associação:

  • Classe de associação 1: somente a associação iniciadora pode invocar operações.
  • Classe de associação 2: somente a associação que responde, pode invocar operações.
  • Classe de associação 3: ambas as associações podem invocar operações.
  • A classe de associação é um atributo de um contexto da aplicação e deve ser selecionada quando a associação é estabelecida usando o ACSE.

    Quando a classe de associação 3 é selecionada, é possível agrupar operações dentro de um conjunto de operações de linked, o qual é fornecido por uma operação pai e uma ou mais operações filhas. A seqüência é a seguinte:

    1. Uma AE invoca uma operação sobre outra AE, referida como operação pai.

    2. O executor da operação pai pode invocar nenhuma, uma ou mais operações filhas durante a execução da operação pai. Desta maneira, cada uma dessas operações filhas é executada pela AE que é o invoker da operação pai correspondente.

    3. Cada operação filha pode funcionar como uma operação pai para disparar nenhuma, um ou mais operações filhas de uma forma recursiva.


    DEFINIÇÃO DO SERVIÇO DE OPERAÇÕES REMOTAS

    O serviço de operações remotas é definido no X.219 e na ISO9072-1.

    Primitivas e parâmetros do Serviço de Operações Remotas

  • RO-INVOKE.request (operation value, operation class, argument, invoke ID, linked ID, priority)
  • RO-INVOKE.indication (operation value, argument, invoke ID, linked ID)
  • RO-RESULT.request (operation value, result, invoke ID, priority)
  • RO-RESULT.indication (operation value, result, invoke ID)
  • RO-ERROR.request (error value, error parameter, invoke ID, priority)
  • RO-ERROR.indication (error value, error parameter, invoke ID)
  • RO-REJECT-U.request (reject reason, invoke ID, priority)
  • RO-REJECT-U.indication (reject reason, invoke ID)
  • RO-REJECT-P.indication(invoke ID, returned parameters, reject reason)
  • A primitiva RO-INVOKE é usada para o invocador requisitar uma operação do executador.

    As primitivas RO-RESULT são usadas para prover uma resposta no evento de uma operação bem sucedida. O parâmetro result prove informações relativas a execução bem sucedida de uma operação e é superior ao escopo do ROSE.

    As primitivas RO-ERROR são usadas para prover uma resposta no evento de uma operação mal executada. O parâmetro error-value indica o tipodo erro, e o parâmetro error prove informações adicionais sobre o erro. Ambos os parâmetros são superiores ao escopo do ROSE.

    O serviço RO-REJECT-U é usado por um usuário do ROSE para rejeitar um request (RO-INVOKE) se o usuário detectar um problema. Pode também ser usado para rejeitar uma resposta (RO-RESULT, RO-ERROR).