• Nenhum resultado encontrado

Na Figura 4.15 são ilustradas algumas das interações básicas entre os componentes que fa- zem parte do domínio do usuário (lado do cliente) da plataforma Platin e vários dos com- ponentes que compõem a plataforma, incluindo os serviços por ela mediados: Ho- tel_Service, Tickets_Service e Workflow_Engine_Service (a máquina de workflow).

Por simplicidade, vamos assumir que o usuário já tenha entrado na plataforma, tenha si- dautenticado e autorizado por ela e como conseqüência recebido a lista com os serviços para ele disponíveis. ( esta situação corresponde ao passo ilustrado na Figura 4.8).

Na seqüência são descritas as interações ilustradas na Figura 4.15.

1 O usuário seleciona um dos serviços disponíveis (por exemplo o serviço ‘Work- flow_Engine_Service’).

2 No lado do cliente, um agente de software representante do domínio servidor (PA- Provider Agent, na Figura 4.14) lê a informação associada com o serviço requisitado e instrui o ‘browser’ para que carregue a correspondente URL (uma referência a um CGI script).

3 O ‘browser’ envia uma requisição HTTP GET ao servidor de Web.

4 O servidor invoca o CGI script referenciado e constrói uma página HTML que con- tem a referência a um applet (ssUAP) correspondente à interface gráfica do serviço selecionado (a interface da máquina de workflow).

5 A página HTML é retornada ao ‘browser’.

6 O ‘browser’ encontra o ‘tag’ do ‘applet’ e faz o ‘download’ do seu código 7 O ‘browser’ instancia o ’applet’.

8,9,10,11 O ‘applet’ (ss-UAP) interage com o agente provedor do serviço (PA) para que este último (PA) interaja com o agente representante do cliente (UA- User Agent na plataforma) no domínio da plataforma, para que inicie o serviço.

12 O agente do usuário (UA), no domínio do servidor (a plataforma), interage com o componente da plataforma ‘Subscrição’ (Subscription) o qual contém as referências às fabricas de todos os serviços (SF- Service Factory) mediados pela plataforma.

i_uaSMEvent PA ss-UAP UA SF Workflow_Engi ne_Service i_ sfCreate i_paEvent Web Server Web Browser 2. load http://...#IOR=...

7. instantiate applet and invoke its init() method

1. user selects service to start

3. get http://...#IOR=...

4. build HTML page

5. return HTML page containing ss-UAP applet 6. download applet code

11. startService

createSession

i_uapInit

i_paAccess

13. create and initialize USM / SSM 14 15 i_Session Control 16 A1. service - specific interaction 17 10. start- Service 9. start- Service- Init 8. createSsUAp- Finished Subscription

Domínio do usuário Domínio da Plataforma e os Serviços

12. Authorisation 14.1 14.2 14.3 Hotel_Service Tickets_Service 14.4 13 13

Figura 4.15 Interações entre alguns dos componentes da Plataforma Platin, a máquina de workflow e os serviços Hotel_Service e Tickets_Service.

13 A fábrica de serviços (SF) correspondente instancia a máquina de workflow. 14 A fábrica de serviços (SF) retorna ao agente representante do usuário (UA), no do-

mínio da plataforma, informação (referências a várias interfaces) para que ele possa controlar o serviço recentemente instanciado pela fábrica (SF).

14.1, 14.2 A máquina de workflow, uma vez ativa, ao interpretar a definição do proces- so, fica ciente da necessidade de invocar os serviços “Hotel_Service” e “Tic- ket_Service” e procura conhecer as referências particulares de cada um deles no componente de ‘Subscrição’ (Subscription) da plataforma.

14.3, 14.4 A máquina de workflow, já conhecendo as referências a cada um dos servi- ços a ser combinados, invoca cada um deles de acordo com a seqüência especificada na definição do processo.

15 O agente representante do usuário (UA) no domínio da plataforma retorna a infor- mação sobre a sessão do serviço ao representante do servidor (PA) no lado do clien- te (domínio do usuário).

16 No lado do cliente (domínio do usuário), o agente representante do lado servidor (PA) entrega a informação sobre a sessão do serviço à interface do serviço (ss-UAP) inicialmente invocado pelo cliente. O cliente fica ao comando da interface ao servi- ço.

A seguinte Figura 4.16 ilustra algumas das interações entre a máquina de workflow, os serviços (‘Hotel_Service’ e ‘Ticket_Service’) que ela coordena e a plataforma Platin.

A plataforma provê um ‘framework’ para desenvolver e integrar serviços nela. Esse ‘framework’ é uma interface para o desenvolvedor da aplicação (Application Programmers Interface API) especificada usando CORBA IDL. A comunicação entre os componentes implementados e os componentes que fazem parte da plataforma é oferecida pelo ‘frame- work’. Fazendo uso desse ‘framework’, a máquina de workflow e os serviços ‘Ho- tel_Service’ e ‘Ticket_Service’ implementados em Java foram integrados na plataforma. O ‘framework’ prepara ( fw_setup() ), conecta (fw_connect() ) e registra (fw_registerSessionInterface() ), cada um dos serviços dentro da plataforma (ver Figura 4.16 ).

A máquina de workflow, como um serviço da plataforma iniciado pelo cliente, lê (re- ad_workfow_schema() ) e interpreta a definição de workflow da Tabela 4.1. De conformidade com essa definição de processo e dentro da mesma sessão de serviço a máquina de work- flow inicia sessões de acesso (fw_startServiceWithinAccessSession() ) a cada um dos serviços a serem combinados, para o que busca ( searchInterfaceList() ) e recupera as referências a

PlatinService Interpreta a Definição de workflow Interpreta a Definição de workflow Interpreta a Definição de workflow fw_setup() fw_connect() fw_registerSessionInterface() fw_startServiceWithinAccessSession() start() start() fw_startServiceWithinAccessSession() searchInterfaceList() Plataforma Platin com a maquina de workflow como um serviço :SSM/ Hotel_ Serviced SSM/ Ticket_ Service :Framework searchInterfaceList() read_workfow_schema() set_context(context) set_context(context) result() result()

Figura 4.16 Interações entre a máquina de workflow, o ‘framework’ e os serviços ‘Hotel_Service’ e ‘Tic- ket_Service’.

O seguinte trecho em Java ilustra como o serviço da máquina de workflow inicia, dentro de sua própria sessão de serviço ( fw_startServiceWithinAccessSession() ), uma nova sessão para acessar o serviço ‘Hotel_Service’. Logo depois busca na lista de interfaces ( searchIn- terfaceList()) da plataforma a referência a esse serviço, para o qual a referência ao objeto CORBA obtida é delimitada (‘narrow’) ao tipo ( i_service1 ) correspondente ao tipo do ser- viço Hotel_Service.

fw_startServiceWithinAccessSession("Hotel_Service", ssProps, sessionInfoH);

org.omg.CORBA.Object cmpInterface1 = Util.searchInterfaceList(sessionInfoH.value.itfs, "ser- vice1::i_service1");

A referência ‘service1Itf’ ao serviço ‘Hotel_Service’ (e de maneira análogo para o serviço ‘Ticket_Service’ ) é usada pela máquina de workflow, durante a execução, no momento certo, de acordo com a definição do processo. A máquina verifica no ControladorDeTare- faSimples apropriado, que tem associado com cada serviço, a satisfação de sua correspon- dente ‘Entrada’ e logo depois inicia sua entidade executora (no caso o Serviço de Hotel, que está associado com a referência ‘service1Itf’, fazendo uso de uma Thread (para possibili- tar certo tipo de comportamento assíncrono quando for invocar paralelamente a execução de vários serviços).