Serviço de Colaboração
OpenBus
Tecgraf PUC-Rio
Novembro de 2013
versão 1 - julho/2013
O que é?
• Serviço extra do OpenBus que facilita a colaboração
entre sistemas integrados através do barramento
– Simula uma integração “privada” entre aplicações que não
queiram publicar suas referências no barramento para
clientes aleatórios
– Permite colaborações fortemente ou fracamente
acopladas
• Colaboração utilizando tipagem forte, através de facetas
específicas dos serviços
• Ou fraca, utilizando ferramentas do serviço para colaborar de
forma mais genérica, através de eventos
versão 1 - julho/2013
Funcionalidades
• Sessão de colaboração
– Implementa o conceito de uma integração “privada”
– Dá acesso aos outros membros da sessão
• Canal para troca de eventos do tipo push
– Automaticamente fornecido pela sessão
– Permite a troca de eventos genéricos (CORBA::Any)
• Notificação da entrada e saída de membros
– Permite que os membros da sessão realizem ações específicas
quando um outro membro entrar ou sair da sessão
versão 1 - julho/2013
Interfaces
•
•
•
•
•
CollaborationRegistry
CollaborationSession
EventChannel
EventConsumer
CollaborationObserver
versão 1 - julho/2013
CollaborationRegistry
interface CollaborationRegistry {
CollaborationSession createCollaborationSession()
raises (ServiceFailure);
};
versão 1 - julho/2013
CollaborationMember
struct CollaborationMember {
Identifier name;
scs::core::IComponent member;
};
typedef sequence<CollaborationMember> CollaborationMemberSeq;
versão 1 - julho/2013
CollaborationObserver
interface CollaborationObserver {
void memberAdded(in Identifier name,
in scs::core::IComponent member) raises (ServiceFailure);
void memberRemoved(in Identifier name) raises (ServiceFailure);
void destroyed() raises (ServiceFailure);
};
versão 1 - julho/2013
CollaborationSession
interface CollaborationSession{
readonly attribute EventChannel channel;
void addMember(in Identifier name,
in scs::core::IComponent member)
raises (NameInUse, ServiceFailure);
boolean removeMember(in Identifier name) raises(ServiceFailure);
scs::core::IComponent getMember(in Identifier name) raises (ServiceFailure);
CollaborationMemberSeq getMembers() raises (ServiceFailure);
void destroy() raises (ServiceFailure);
Cookie subscribeObserver(in CollaborationObserver o) raises(ServiceFailure);
boolean unsubscribeObserver(in Cookie ck) raises (ServiceFailure);
};
• Compartilhamento da sessão através da referência CORBA
• Ciclo de vida
– Persistência da sessão enquanto existir pelo menos um membro ou o
criador da sessão
– destroy()
versão 1 - julho/2013
EventChannel
interface EventConsumer {
void push(in any event) raises (ServiceFailure);
};
interface EventChannel {
Cookie subscribe(in EventConsumer consumer) raises (ServiceFailure);
boolean unsubscribe(in Cookie ck) raises (ServiceFailure);
void push(in any event) raises (ServiceFailure);
};
versão 1 - julho/2013
Download

CollaborationService - Tecgraf JIRA / Confluence - PUC-Rio