11.04.2013 Views

gestão de dados partilhados em ambientes de computação móvel

gestão de dados partilhados em ambientes de computação móvel

gestão de dados partilhados em ambientes de computação móvel

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

222 APÊNDICE B. MOBISNAP<br />

Função newid Gera um i<strong>de</strong>ntificador único que po<strong>de</strong> ser usado como i<strong>de</strong>ntificador <strong>de</strong> um registo. A<br />

execução <strong>de</strong> cada invocação <strong>de</strong>sta função numa transacção <strong>móvel</strong> <strong>de</strong>volve o mesmo valor <strong>em</strong> todas<br />

as suas execuções (no cliente e no servidor).<br />

Instruções commit e rollback A instrução commit conclui a execução da transacção <strong>móvel</strong> com sucesso<br />

(e torna persistente as alterações efectuadas à base <strong>de</strong> <strong>dados</strong>). A instrução rollback aborta a execu-<br />

ção da transacção <strong>móvel</strong> (e <strong>de</strong>sfaz as alterações efectuadas à base <strong>de</strong> <strong>dados</strong>). Ao contrário do que<br />

é usual, a execução <strong>de</strong>stas instruções permite especificar uma sequência <strong>de</strong> valores (resultados) a<br />

<strong>de</strong>volver à aplicação.<br />

Blocos on commit e on rollback Defin<strong>em</strong> código a ser executado após a transacção concluir a sua exe-<br />

cução (<strong>de</strong> forma s<strong>em</strong>elhante ao código <strong>de</strong> tratamento <strong>de</strong> excepções). Este código não po<strong>de</strong> incluir<br />

as instruções commit e rollback.<br />

Uma transacção <strong>móvel</strong> é <strong>de</strong>finida como um bloco anónimo com a seguinte estrutura.<br />

[ <strong>de</strong>clare<br />

-- Secção <strong>de</strong> <strong>de</strong>clarações<br />

-- <strong>de</strong>finição <strong>de</strong> tipos, variáveis e constantes ]<br />

begin<br />

-- Secção executável<br />

-- instruções do programa<br />

[ exception<br />

when ... then<br />

-- bloco a executar para tratamento <strong>de</strong> uma excepção ]<br />

[ on commit<br />

-- bloco a executar <strong>em</strong> caso <strong>de</strong> execução com sucesso ]<br />

[ on rollback<br />

-- bloco a executar <strong>em</strong> caso <strong>de</strong> execução falhada ]<br />

end;<br />

Por omissão, a execução <strong>de</strong> uma transacção <strong>móvel</strong> termina com sucesso se o caminho <strong>de</strong> execução<br />

alcançar o fim das instruções do programa (excluindo os blocos on commit/rollback), i.e., se não terminar<br />

numa instrução commit ou rollback. Neste caso, o bloco on commit será executado. Caso o processa-<br />

mento <strong>de</strong> uma transacção termine com a criação <strong>de</strong> uma excepção não tratada, a transacção <strong>móvel</strong> é<br />

abortada e o bloco on rollback é executado (caso exista).<br />

Em relação ao PL/SQL, as instruções disponíveis para <strong>de</strong>finir uma transacção <strong>móvel</strong> apresentam al-<br />

gumas limitações. Entre estas limitações inclu<strong>em</strong>-se a <strong>de</strong>finição <strong>de</strong> tipos compostos (record) e ancorados,<br />

a <strong>de</strong>finição <strong>de</strong> ciclos, o acesso à base <strong>de</strong> <strong>dados</strong> usando cursores, e a <strong>de</strong>finição <strong>de</strong> funções e procedimentos<br />

auxiliares que possam ser usados pelas transacções móveis. Estas limitações foram introduzidas apenas<br />

para simplificar a criação do protótipo do sist<strong>em</strong>a Mobisnap, não representando nenhuma limitação do<br />

mo<strong>de</strong>lo do sist<strong>em</strong>a apresentado nesta dissertação.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!