ANTENOR TURAZI
SÍSTB1A DE EVENTOS E TRIGGERS
APLICADO AO MODELO THM
•
Dissertação a p r e s e n t a d a ' ao Curso de
MESTEAIKJ
'
EM S I S T E L » S E COMPUTAÇÃO
da U n i v e r s i d a d e F e d e r a l da Paraíba,
em cumprimento ãsr exigências p a r a
obtenção do Grau de M e s t r e .
*
*ULRICH SCHIEL
O r i e n t a d o r
\
SISTEMA DE EVENTOS É TRIGGERS APLICADO AO MODELO THM
ANTENOR TURAZI
I
TESE SUBMETIDA AO CORPO DOCENTE DA COORDENAÇÃO DO CURSO DE P Ó S -GRADUAÇÃO EM SISTEMAS E COMPUTAÇÃO DA UNIVERSIDADE FEDERAL DA PARAÍBA COMO PARTE DOS REQUÍSITOS NECESSÁRIOS PARA A OBTENÇÃO DO GRAU DE MESTRE EM CIÊNCIAS ( M . S c . ) .
A p r o v a d o p o r :
ULRICH SCHlEL - Dr . - P r e s i d e n t e - '
MARCUS'COSTA SAMPAIO E x a m i n a d o r
-ROBERT KALLEY C.DE MENEZES E x a m i n a d o r
-CAMPINA GRANDE - Pb MARÇO - 198 7
SISTEMA DE EVENTOS E TRIGGERS APLICADO AO MODELO THM
ANTENOR TURAZI
DISSERTAÇÃO APROVADA EM 25/0 3/87
ULRICH SCHlEL O r i e n t a d o r
MARCOS COSTA SAMPAIO C o m p o n e n t e d a Banca
ROBERT KALLEY C.DE MENEZES C o m p o n e n t e d a Banca
SUMÁRIO
PÁGINA AGRADECIMENTOS I DEDICATÓRIA I I RESUMO V ABSTRACT V ICAPÍTULO I
INTRODUÇÃO ' 1CAPITULO I I
O MODELO DE EVENTOS E TRIGGERS 5
2.1 - O b j e t o s E s p a c i a i s 5 2.2 - O b j e t o s T e m p o r a i s 10
CAPÍTULO I I I
O PROBLEMA 13
CAPITULO IV
SINTAXE DE EVENTOS E TRIGGERS 15
CAPITULO V
METODOLOGIA DA IMPLEMENTAÇÃO 19
CAPÍTULO VI
ESTRUTURA DOS DADOS 2 9
V • j
\
(SUMÁRIO
I PAGINA AGRADECIMENTOS I DEDICATÓRIA I I RESUMO V ABSTRACT V ICAPÍTULO I
INTRODUÇÃO 1CAPITULO II
O MODELO DE EVENTOS E TRIGGERS 5
2.1 - O b j e t o s E s p a c i a i s 5 2.2 - O b j e t o s T e m p o r a i s 10
CAPÍTULO I I I
O PROBLEMA 13
CAPÍTULO IV
SINTAXE DE EVENTOS E TRIGGERS 15
CAPÍTULO V
METODOLOGIA DA IMPLEMENTAÇÃO 19
CAPÍTULO VI
ESTRUTURA DOS DADOS 2 9 6.1 - E s t r u t u r a de E v e n t o s 2 9
PÁGINA 6.2 - E s t r u t u r a de Ações p a r a T r i g g e r s 3 1 6.3 - E s t r u t u r a de T r i g g e r s 33 6.4 - Validação de D a t a e H o r a 35
CAPÍTULO V I I
0 SISTEMA 37 7.1 - Função G e r e n c i a r Tempo 37 7.2 - Módulo P o s i c i o n a r Início L i s t a de E v e n t o s 4 1 7.3 - Função G e r e n c i a r E v e n t o s P o s i c i o n a d o s 4 1 7.4 - Função G e r e n c i a r Ações de T r i g g e r 44 7.5 - Função Definição de E v e n t o s e T r i g g e r s 45 7.6 - Módulo P o s i c i o n a r I n t e r v a l o de Tempo 47 7.7 - Módulo T e s t e de F i n a l de I n t e r v a l o de Tempo .... 48 7.8 - Módulo S a l v a r E v e n t o s 48 7.9 - Módulo S a l v a r T r i g g e r s • 49 7.10 - Módulo C a r r e g a r E v e n t o s 49 7.11 - Módulo C a r r e g a r T r i g g e r s 49 7.12 - Módulo C a r g a C o m p l e t a 49 7.13 - Módulo R e p o s i c i o n a r I n t e r v a l o de Tempo 4 9 7.14 - Módulo V e r i f i c a r ON 50 7.15- Módulo T e s t a r CONDITION 53 7.16- Módulo P o s i c i o n a r E v e n t o 55 7.17- Módulo A t i v a r T r i g g e r C o r r e s p o n d e n t e s 56 7.18- Módulo T e s t a r PRECOND 56 7.19- Módulo T e s t a r T i p o de Ação 59 7.20- Módulo P a s s a r Parâmetros p a r a SGBD 59 7.21- Módulo SGBD 59 7.22- Módulo R e c e b e r R e s p o s t a 60PÁGINA 7.24 - Módulo E x e c u t a r Ação 60 7 . 2 5 - Módulo P o s i c i o n a r POSCOND 60 7.26 - Módulo V e r i f i c a r se Usuário 6 1 7.27 - Módulo D e f i n i r T r i g g e r 6 1 7.28 - Módulo I n c l u i r T r i g g e r 6 1 7.29 - Módulo D e f i n i r E v e n t o 62 7.30 - Módulo I n c l u i r E v e n t o 62 7.31 - Módulo D e l e t a r T r i g g e r ' 62 7.32 - Módulo R e t i r a r T r i g g e r da L i s t a 63 7.33 - Módulo D e l e t a r E v e n t o • 63
CAPÍTULO VIII
CONCLUSÕES • 6 6 BIBLIOGRAFIA 6 8 APÊNDICE i 7 0AGRADECIMENTOS
Ao P r o f e s s o r D r . ULRICH SCHIEL p e l a orientação.
Aos P r o f e s s o r e s do D e p a r t a m e n t o de S i s t e m a s e Computação p e l o s e n s i n a m e n t o s .
O CONHECIMENTO EMPÍRICO, CIENTIFICO,
TECNOLÓGICO, FILOSÓFICO, FORTALECEM
UM MESMO PROPÓSITO, CUJO OBJETIVO, É
CHEGAR A VERDADE SOBRE O SER HUMANO,
RESUMO
E s t e t r a b a l h o , o r i g i n o u - s e n a p r o p o s t a d e disssertação de m e s t r a d o a p r e s e n t a d a n a UFPB como r e q u i s i t o p a r c i a l p a r a a conclusão d o C u r s o d e M e s t r a d o em S i s t e m a s e Computação.
P r o p o m o s a q u i um s i s t e m a d e E v e n t o s e T r i g g e r s ( d i s _ p a r a d o r e s ) como p a r t e d o m o d e l o semântico d e B a n c o s d e Dados THM
[ SC82 ] de a c o r d o com o p r o j e t o PROSEM d e s e n v o l v i d o n a U n i v e r s i d a de d e S t u t t g e i r t n a A l e m a n h a .
0 o b j e t i v o básico d o t r a b a l h o , é f o r n e c e r uma f e r r a m e n t a p a r a automatização d e S i s t e m a s em t e m p o r e a l .
ABSTRACT T h i s w o r k o r i g i n a t e d f r o m t h e p r o p o s a l o f m a s t e r Dis_ s e r t a t i o n a p r e s e n t e d a t Paraíba F e d e r a l U n i v e r s i t y (UFPB) as p a r t r e q u i r e m e n t f o r c o n c l u s i o n o f m a s t e r d e g r e e i n c o m p u t e r s c i e n c e . We p r o p o s e h e r e a s y s t e m . o f E v e n t s a n d T r i g g e r s as p a r t o f t h e s e m a n t i c m o d e l o f D a t a b a s e s , THM, [SC 82 ] a c c o r d i n g t o t h e P r o s e m p r o j e c t t h e U n i v e r s i t y o f S t u t t g a r t i n Germany. The b a s i c o b j e c t o f t h e w o r k i s t o p r o v i d e a t o o l f o r an a u t o m a t e d s y s t e m s i n r e a l t i m e .
CAPITULO I
INTRODUÇÃO
-Em g e r a l , organizações f u n c i o n a m com-informações q u e podem s e r u s a d a s p o r vários s e t o r e s e e s t e s s e t o r e s p o r s u a v e z s e m p r e mantém os s e u s a r q u i v o s . P a r a e v i t a r redundância de i n f o r mação e n t r e a r q u i v o s , o u s e j a , vários a r q u i v o s r e p e t i t i v o s é q u e s u r g i r a m B a n c o s de D a d o s , o b j e t i v a n d o também r a p i d e z n a a t u a l i zação, e v i t a n d o a s s i m a não atualização p o r a l g u m s e t o r , p r o p o r c i o n a n d o a g i l i d a d e e precisão p a r a as t o m a d a s de decisões com as informações i n t e g r a d a s .
A especificação d o c o n j u n t o de informações r e l e v a n t e s p a r a a solução de um c e r t o p r o b l e m a , a s s i m como a especificação d o s i g n i f i c a d o d e s s a s informações e a definição d a s operações q u e devem s e r e x e c u t a d a s p a r a q u e s e j a m o b t i d o s os r e s u l t a d o s e s p e r a d o s , c o n s t i t u e m um dos p r i n c i p a i s p r o b l e m a s q u e m u i t o s p e s q u i s a d o r e s d a área de s i s t e m a de informação e de o u t r a s áreas, como Inteligência A r t i f i c i a l e Linguística C o m p u t a c i o n a l , vem t e n t a n d o r e s o l v e r .
A solução p a r a e s s e p r o b l e m a não é t r i v i a l p o r q u e e l a d e v e s a t i s f a z e r as p e s s o a s q u e p o s s u e m d i f e r e n t e s níveis de c o -n h e c i m e -n t o s o b r e o a s s u -n t o e com d i f e r e -n t e s i -n t e r e s s e s em relação ao s i s t e m a , o u s e j a , os p r o j e t i s t a s e usuários do s i s t e m a .
Sendo q u e n e s s e s Últimos estão incluídos t a n t o os a n a l i s t a s e p r o g r a m a d o r e s de aplicação, q u a n t o os usuários c a s u a i s q u e podem, o u não, s e r p r o g r a m a d o r e s .
Vários m o d e l o s j a f o r a m p r o p o s t o s , porém nenhum d e l e s c o n s e g u i u s a t i s f a z e r t o d a s as exigências d o s s e u s d i f e r e n t e s usuários. D e n t r e as exigências m a i s comuns c i t a m o s :
•••* .*
a) O m o d e l o d e v e t e r c a p a c i d a d e de c a p t a r a semântica das informações de modo q u e s e j a possível a i n t e r prefação dos v a l o r e s q u e são a r m a z e n a d o s n o B a n c o de Dados; b ) As restrições de i n t e g r i d a d e devem s e r r e p r e s e n t a d a s de m a n e i r a explícita; c ) S e r v e como m o d e l o de B a n c o de Dados c o n c e i t u a i n o D e s i g n e n o p r o c e s s o de evolução, m a i s d i r e t a m e n t e n a c a p t u r a de d a d o s ;
d) Pode s e r u s a d o como m o d e l o de B a n c o de Dados p a r a um n o v o t i p o de s i s t e m a g e r e n c i a d o r de B a n c o de D a d o s , com uma g r a n d e c a p a c i d a d e f u n c i o n a l e c a r a c terísticas de i n t e r f a c e s usuárias.
As experiências em inteligência a r t i f i c i a l m o s t r a r a m q u e o u s o de uma g r a n d e q u a n t i d a d e de c o n h e c i m e n t o e s p e c i a l i z a d o p a r a a solução de uma t a r e f a de inteligência é o e n f o q u e m a i s p r o m i s s o r a t u a l m e n t e . A tendência p a r a a solução de p r o b l e m a s n e s s a área é p r o v e r o s i s t e m a com g r a n d e s q u a n t i d a d e s de c o n h e
I ( c i m e n t o s s o b r e o p r o b l e m a , i n c l u s i v e c o n h e c i m e n t o s r e d u n d a n t e s , de modo a l i m i t a r a p e s q u i s a e a dedução. Segundo e s s e e n f o q u e , a c r e d i t a m o s q u e o m o d e l o semãn t i c o o f e r e c e s u p o r t e b a s t a n t e e f i c a z p a r a o esquema c o n c e i t u a i de um B a n c o de D a d o s . 0 m o d e l o semântico p a r a especificação de um s i s t e m a de B a n c o de Dados n o s níveis p r o p o s t o s p e l o ANSI/SPARC c o r r e s p o n d e m ^ a o esquema c o n c e i t u a i .
0 esquema c o n c e i t u a i é a descrição d o mundo r e a l q u e será mapeado p a r a o B a n c o de D a d o s . Ê um repertório de declarações v e r d a d e i r a s s o b r e as e n t i d a d e s de i n t e r e s s e . E l e contém, não só a definição das e n t i d a d e s e d o s r e l a c i o n a m e n t o s e n t r e e l a s , mas também as restrições de i n t e g r i d a d e q u e devem s e r s a t i s f e i t a s p e l a s e n t i d a d e s e p e l o s r e l a c i o n a m e n t o s .
Os vários usuários do B a n c o de Dados o p e r a m em s u b c o n j u n t o s do m o d e l o t o t a l , os q u a i s são r e l e v a n t e s p a r a s u a s n e c e s s i d a d e s p a r t i c u l a r e s . E s s e s s u b c o n j u n t o s do m o d e l o , como v i s t o s p e l o s usuários, são chamados de esquemas e x t e r n o s . Um e s quema e x t e r n o contêm a descrição do B a n c o de Dados d a m a n e i r a como é c o n s i d e r a d a numa c e r t a aplicação. E através d o esquema e x t e r n o a p r o p r i a d o q u e o a n a l i s t a e os usuários de aplicação obtém a descrição d a p a r t e do B a n c o de Dados q u e e l e s n e c e s s i t a m .
A descrição d o B a n c o de Dados a nível de a r m a z e n a m e n t o físico é chamada de esquema i n t e r n o . O esquema i n t e r n o contêm a descrição de como os d a d o s são a r m a z e n a d o s , o u s e j a as técnicas de implementação de r e g i s t r o s e de c a m p o s , a s i n t a x e d o s v a l o r e s dos d a d o s , e t c . . .
Uma m e t o d o l o g i a p a r a descrição de s i s t e m a s de B a n c o de Dados d e n o m i n a d a P r o s e m f o i d e s e n v o l v i d a n a U n i v e r s i d a d e de S t u t t g a r t e n e l a s e i n s e r e o m o d e l o THM p a r a p r o j e t a r o esquema c o n c e i t u a i . 0 THM ( T e m p o r a l - H i e r a r c h i c D a t a M o d e l ) f o i p r o p o s t o p o r U l r i c h S c h i e l em s u a t e s e de d o u t o r a d o n a U n i v e r s i d a d e de S t u t t g a r t . P a r a e s t a b e l e c e r a t e r m i n o l o g i a e o' e s c o p o d a semântica de um Banco de Dados o THM d i v i d i u o u n i v e r s o em três c o n c e i t o s g l o b a i s d i s t i n t o s : a) C o n c e i t o g l o b a l d o físico o u c o n c r e t o , o b j e t o s o u f a t o s como "uma p e s s o a " , meu c a v a l o " , . . .
b ) C o n c e i t o g l o b a l d o metafísico o u a b s t r a t o , q u e são c o i s a s q u e sõ e x i s t e m n a m e n t e humana, como " n u m e r o 6", "a i d a d e " , . . . E s s a s d u a s g l o b a i s f o r m a m o mundo r e a l . c) M o d e l o g l o b a l , são t o d o s os o b j e t o s a r m a z e n a d o s num s i s t e m a de computação.
Nesse t r a b a l h o o THM não serã e v i d e n c i a d o em s u a s f a s e s , jã q u e e x i s t e t r a b a l h o s e n d o e x e c u t a d o n e s s e s e n t i d o como dissertação de m e s t r a d o n a U n i v e r s i d a d e F e d e r a l d a Paraíba, razão p e l a q u a l c o n c e n t r a m o s esforços n a s e n t i d o de i m p l e m e n t a r e i n c r e m e n t a r o m o d e l o de E v e n t o s e T r i g g e r s , q u e f a z p a r t e do THM
't ( No Capítulo I I a b o r d a m o s o m o d e l o de E v e n t o s e T r i g g e r s , c a r a c t e r i z a n d o o s t i p o s de o b j e t o s , com ênfase p a r a o o b j e t o e s p a c i a l e v e n t o e f o r n e c e m o s uma função de t r a t a m e n t o d o t e m p o , d e n o m i n a d a D a t a h o r a . A s e g u i r , n o Capítulo I I I m o s t r a m o s os p r o b l e m a s a i n d a em v i a s de solução p o r p e s q u i s a d o r e s e o propósito d e s t e t r a b a l h o de f o r n e c e r uma f e r r a m e n t a p a r a a u t o m a t i z a r E v e n t o s e a c i o n a r T r i g g e r s . No Capítulo I V , a p r e s e n t a m o s a s i n t a x e de E v e n t o s e T r i g g e r s p r o p o s t a p e l o m o d e l o THM e f a z e m o s considerações d e s s a ' s i n t a x e . A m e t o d o l o g i a de implementação ê a p r e s e n t a d a n o Capítulo V o n d e m o s t r a m o s as e s t r u t u r a s de E v e n t o s e T r i g g e r s , as funções e o s o p e r a d o r e s p o r nós d e f i n i d o s n e s s e t r a b a l h o . No Capítulo V I estão as e s t r u t u r a s de d a d o s p a r a E v e n t o s e p a r a T r i g g e r s , a s s i m como a e s t r u t u r a de ações p a r a T r i g g e r s e a validação de d a t a e H o r a . A s e g u i r , no Capítulo s e g u i n t e a p r e s e n t a m o s o s i s t e m a com s u a s funções e módulos com os r e s p e c t i v o s a l g o r i t m o s u t i l i z a d o s p a r a a implementação. F i n a l m e n t e , n o Capítulo V I I I t e c e m o s c o n s i d e r a ções s o b r e o t r a b a l h o e f a z e m o s as conclusões.
CAPÍTULO I I
O MODELO DE EVENTOS E TRIGGERS
' -Para o u n i v e r s o em discussão nós d i s t i n g u i m o s o b j e t o s n o espaço e o b j e t o s de t e m p o . O b j e t o s e s p a c i a i s , como e n t i d a d e s , r e l a c i o n a m e n t o s e E v e n t o s são m o d e l a d o s p o r m o d e l o s de d a d o s semânticos e o b j e t o s t e m p o r a i s , corno i n s t a n t e s , i n t e r v a l o s o u períodos de t e m p o são d e s c r i t o s p o r m o d e l o s de t e m p o . Asserções de t e m p o podem s e r p r e c i s a s o u v a g a s , únicas o u periódicas. Na e s t r u t u r a de um s i s t e m a d e computação, espaço não é um espaço contínuo m u l t i d i m e n s i o n a l mas um c o n j u n t o d i s c r e t o de p o n t o s ( e n t i d a d e s ) , f a t o s ( r e l a c i o n a m e n t o s ) , e a c o n t e c i m e n t o s ( E v e n t o s ) [ SC 8 5 ] . O b j e t o s de t e m p o podem s e r i n s t a n t e s ( p o n t o s ) . , o u i n t e r v a l o s ( t e m p o ) . Podem s e r e x p r e s s a d o s com v a l o r e s a b s o l u t o s , d a t a s c a l e n dãrio, o u r e l a t i v o s p a r a o u t r o s o b j e t o s de t e m p o o u E v e n t o s . I I . 1 - OBJETOS ESPACIAIS C o i s a s b á s i c a s , como p e s s o a s , i d a d e , c a r g o , . . . são chamadas de e n t i d a d e s . O u t r o t i p o de o b j e t o e s p a c i a l é o r e l a c i o n a m e n t o , q u e é uma conexão e n t r e d u a s e n t i d a d e s . O u t r o t i p o de o b j e t o e s p a c i a l é o E v e n t o . É uma ocorrência n o s i s t e m a de informação q u e e n v o l v e mudanças n o B a n c o de Dados. Operações e transações num B a n c o de Dados são E v e n t o s .
«
Os o b j e t o s e s p a c i a i s t r a t a d o s em m a i o r d e t a l h e n e s s e t r a b a l h o , são os E v e n t o s .
Um E v e n t o é c o m p o s t o p o r um p r e d i c a d o e s p e c i f i c a n d o em q u a l condição o E v e n t o s e t o r n a v e r d a d e i r o chamado "On - C o n d i t i o n " . Nesse c a s o , uma o u m a i s ações são d i s p a r a d a s p o r um T r i g g e r q u e e x e c u t a m as transformações n o s i s t e m a , c o r r e s p o n d e n t e s ao e v e n t o . "ON-CONDITION" podem s e r d o s s e g u i n t e s t i p o s : 1) ON DEMANDA M e i o p e l o q u a l o E v e n t o não t e m nenhuma c o n d i _ ção explícita de a c o n t e c e r e p o d e s e r a c i o n a d o a q u a l q u e r t e m p o p o r um comando d o usuário.
To
PFIG. 1
- Evento on demanda
O T r i g g e r t o p o d e s e r a c i o n a d o a q u a l q u e r t e m p o , sem a n e c e s s i d a d e de condição prévia. "P" é a situação d o s i s t e m a , após a execução d e t o .
8
ON CONDIÇÃO-DE-TEMPO
C o n s i s t e de p r e d i c a d o s s o b r e o b j e t o s t e m p o r a i s e referências a relógio. A ação será d i s p a r a d a a u t o m a t i c a m e n t e p o r um m o n i t o r de c o n t r o l e .
To
Eo(t)
Po
FIG. 2 - Evento on condição de tempo
Pode s e r único o u periódico. 0 T r i g g e r To estará s e n s i b i l i z a d o com o E v e n t o Eo m a r c a d o , d e v i d o a condição d o relógio o u t e m p o P ( T ) . Sendo único, e x e c u t a o T r i g g e r e e l i m i n a o e v e n t o e c a s o s e j a periódico, e x e c u t a o T r i g g e r n o período c o r r e s p o n -d e n t e .
a
3) ON CONDIÇÃO-DE-EVENTO
Um E v e n t o q u e o c o r r e como consequência de um m a i s E v e n t o s .
E-l T-1 Eo^P-1
FIG. 3 - Evento on condição de evento
O E v e n t o EO e s t a n d o m a r c a d o p o d e o c a s i o n a r a e x e cução do T r i g g e r To q u e ocasionará a marcação do E v e n t o PO.
4) ON CONDIÇÃO-DE-DATABASE
Se o B a n c o de Dados r e t o r n a uma condição p r e v i s t a , o E v e n t o r e t o r n a v e r d a d e i r o e um T r i g g e r poderá s e r d i s p a r a d o .
10
7i
Eo
FIG. 4 - Evento on condição de database
A l g u m a mudança no B a n c o de Dados, T l poderá c a u s a r a marcação de um E v e n t o , q u e poderá s e r a p r ê -condição de um T r i g g e r T o . I I . 2 - OBJETOS TEMPORAIS E x i s t e m d u a s f o r m a s de interpretação p a r a t e m p o : a b s o l u t a e r e l a t i v a . Na visão r e l a t i v i s t a , E v e n t o s e e n t i d a d e s e-x i s t e m p r i m e i r o . Tempo s o m e n t e p o d e s e r e e-x p r e s s a d o r e l a t i v o a a l g u m E v e n t o o u p a r a existência de a l g u m a e n t i d a d e . N ã o e x i s t e m o b j e t o s de t e m p o p u r o s , s o m e n t e podem s e r i d e n t i f i c a d o s v i a o b j e t o s e s p a c i a i s .
Na visão a b s o l u t i s t a , t e m p o é uma sequência l i n e a r de p o n t o s , i n d e p e n d e n t e de o b j e t o s e s p a c i a i s , s u b s e q u e n t e m e n t e , o b j e t o s e s p a c i a i s são r e l a t a d o s ao t e m p o . z e r o pode C o n s i d e r a n d o o t e m p o s e r i n t e r p r e t a d o como o como uma l i n h a r e a l , o p o n t o a g o r a , os números n e g a t i v o s , ã
1 1 e s q u e r d a , s a o o p a s s a d o e o s números p o s i t i v o s , â d i r e i t a , são o f u t u r o . 0 p r i m e i r o o b j e t o t e m p o r a l de i n t e r e s s e p a r a um s i s t e ma de informação é o p o n t o de t e m p o , s i g n i f i c a n d o i n s t a n t e o u momento. A p e s a r d o f a t o de um p o n t o s e r c o n c e i t u a l m e n t e i n f i n i t a m e n t e p e q u e n o , como um p o n t o geométrico, p o n t o s em s i s t e m a s de informação t e m d e n s i d a d e chamada de g r a n u l a r i d a d e * . D e p e n d e n d o do u s o e s p e c i f i c o de p o n t o de t e m p o , a g r a n u l a r i d a d e p o d e v a r i a r de frações de s e g u n d o s a vários a n o s . N o s s o s i s t e m a t r a b a l h a com d a t a e h o r a p a r a p r o b l e m a s t e m p o r a i s e g r a n u l a r i d a d e s d i f e r e n t e s não são t r a t a d a s n e s s e t r a b a l h o . V i s a n d o uma solução p a r a o t r a t a m e n t o de t e m p o nós o p t a m o s p e l a s e g u i n t e função: DATAHORA (TO, T l , T2 - T3) Onde TO e T l são p o n t o s de t e m p o . T2 - T3 i n t e r v a l o de p o n t o s de t e m p o . é i n t e r p r e t a d a como: a) P a r a p o n t o s de t e m p o TO e T l : se s o m e n t e se t e m p o - TO o u t e m p o = T l b ) P a r a i n t e r v a l o s de p o n t o s T2 - T3:-q u a l T3:-q u e r t e m p o p e r t e n c e n t e ao i n t e r v a l o T2 - T3.
\
I
Como p o d e s e r v i s t o em "A" a interpretação p o d e s e r : D u r a n t e TO a n d u r a n t e T l E em "B": D u r a n t e TN when TN > = T2 a n d < = T3 E x e m p l o : DATAHORA ( 1 0 : 0 0 : 0 0 , 1 0 : 0 1 : 0 0 , 1 1 : 0 0 : 0 0 , 1 1 : 0 5 : 0 0 ) i n t e r p r e t a d a como: D u r a n t e ( 1 0 : 0 0 : 0 0 ) a n d D u r a n t e ( 1 0 : 0 1 : 0 0 ) a n d D u r a n t e h o r a w h e n h o r a > = 1 1 : 0 0 : 0 0 a n d H o r a < = 11:05:00 Nesse c a s o , com a g r a n u l a r i d a d e s e n d o r e q u i s i t a d a em s e g u n d o s , a c a d a c i c l o de relógio i n t e r n o de m á q u i n a , a função s e t o r n a v e r d a d e i r a s e h o r a = 1 0 : 0 0 : 0 0 , 1 0 : 0 1 : 0 0 , 11:00:00 > = h o r a < = 1 1 : 0 5 : 0 0 , Supondo e s t a situação: DATAHORA (19 85 - 19 86) i n t e r p r e t a d a como: D u r a n t e d a t a w h e n d a t a < = 19 86 a n d a d a t a > = 19 85 i m p l i c a r i a n a v e r a c i d a d e de função d u r a n t e t o d o s os d i a s de 1 9 8 5 .
CAPITULO I I I
O PROBLEMA
"A especificação d o c o n j u n t o de informações p a r a a solução de um p r o b l e m a , a s s i m como a especificação d o s i g n i f i c a d o d e s s a s informações e a definição de ações e operações, c o n s t i t u e m p r o b l e m a s a i n d a em v i a s de solução p o r p e s q u i s a d o r e s , n o i n t u i t o de s a t i s f a z e r p e s s o a s com d i f e r e n t e s níveis de c o n h e c i m e n t o e d i f e r e n t e s i n t e r e s s e s em relação ao s i s t e m a , q u e são os p r o j e t i s t a s e os usuários.
Na n o s s a visão, o esquema c o n c e i t u a i é o q u e deverá p e r m a n e c e r r e l a t i v a m e n t e estável e p o r i s s o , é i m p o r t a n t e q u e s e j a p r o j e t a d o com c u i d a d o , v i s a n d o possíveis mudanças n a e m p r e s a o u no a m b i e n t e c o m p u t a c i o n a l .
P a r a p r o j e t a r um esquema c o n c e i t u a i , o a d m i n i s t r a d o r do B a n c o de Dados n e c e s s i t a de uma e s t r u t u r a de c o n c e i t o s e f e r r a m e n t a s p a r a c o n s t r u i r uma m o d e l a g e m , o b j e t i v a n d o vima aplicação.
t
E s s e s c o n c e i t o s são o b t i d o s p e l a semântica d o s mode l o s de d a d o s . No THM t o d o s os o b j e t o s de a l g u m t i p o , os q u a i s são de i n t e r e s s e p a r a aplicação a s e r m o d e l a d a são a p r e s e n t a d o s como e n t i d a d e s o u membros de uma c l a s s e . No m o d e l o g l o b a l de um s i s t e m a
14
de informação t r a d i c i o n a l , as alterações são e f e t u a d a s através de f i t a s magnéticas, c o n s o l e , t e r m i n a l , . . . S i s t e m a s em t e m p o r e a l são d i r e t o s , i n d e p e n d e n t e s d a manipulação d o homem, p r o j e t a d o s p a r a aplicações e s p e c i a l i z a d a s . P a r a s i s t e m a s de informação, uma c o n e xão de m a i o r i n t e r e s s e com o propósito g e r a l é o relógio e calendário e o THM não t e m f e r r a m e n t a i m p l e m e n t a d a p a r a i s s o . P r a t i c a m e n t e as n e c e s s i d a d e s e operações a s e r e m e f e t u a d a s são d e c o r r e n t e s de transações q u e o c o r r e m em d e t e r m i n a d a s h o r a s o u d i a s de um período. P a r a e v i t a r q u e d e i x e m de s e r e f e t u a d a s m a n u a l m e n t e , o que f a c i l m e n t e p o d e s e r e s q u e c i d o , o u então, d e t e r m i n a d a s o p e r a ções d e i x e m de s e r e f e t u a d a s e b u s c a n d o com i s s o m a i s segurança nas aplicações, e v i t a n d o q u e s e c o r r a m r i s c o s desnecessários ê prático a automatização d e s t a s a t i v i d a d e s .
B u s c a n d o a automatização de s i s t e m a s e s a b e n d o q u e em aplicações de B a n c o s de Dados são e f e t u a d a s transações e operações que p o r s u a v e z e x e c u t a m F i v e n t o s o c o r r i d o s n o s i s t e m a , é n o s s o o b j e t i v o d o t a r o m o d e l o THM de uma f e r r a m e n t a p a r a :
A u t o m a t i z a r E v e n t o s ,
CAPITULO I V
SINTAXE DE EVENTOS E TRIGGERS
EVENT <NOME-DO-EVENTO> ON <OCORRÊNCIA> CONDITION <PREDICADO-E> TRIGGER <NOME-DO-TRIGGER> PRÉ-CONDIÇÕES <PREDICADO-T> CORPO <COMANDOS> PÕS-CONDIÇÕES <EVENT> o n d e
<OCORRÊNCIA>::= <TIME> | <DATE> | < I F > | <WHEN> <ANTES> | <DURANTE> | <DEPOIS>
<PREDICADO-E>::= <EVENT> | <DATE> | <TIME> | <DEMAND> <DATABASE> | <PERIODIC>
<PREDICADO-T>::= <EVENT>
<COMANDOS>::= <AÇÕES> | <NOME>
<AÇÕES>::= <INSERT> | <DELETE> | <FIND> <REQUEST> | <UPDATE> | <CREATE> <POSCOND>::= <EVENT>
E s t a s i n t a x e e o s e u t r a t a m e n t o estão m a i s d e t a l h a d o s na m e t o d o l o g i a de implementação. ^ F o r a m também o b s e r v a d a s s i n t a x e s p r o p o s t a s p o r [AT 8 2 ] e [BRO 8 4 ] d o n d e c o l h e m o s a l g u n s subsídios
16 \ i p a r a a implementação d e s t a s i n t a x e . No INCOD-DTE, ( i n t e r a c t i v e c o n c e p t u a l d e s i g n o f d a t a , t r a n s a c t i o n s a n d e v e n t s ) c u j a e s t r u t u r a g e r a l é d e s c r i t a p o r [ A T 8 2 ] a s i n t a x e é a s e g u i n t e : EVENT < EVENT-NAME > CONDITIONS <CONDS> ACTIONS <ACTS> A C T I V I T Y <ACTIVITY-NAME> Na n o s s a implementação, a ocorrência d e um e v e n t o p o d e s e r l i g a d a a uma operação ( e v e n t o e x ó g e n o ) , o u a uma condição de t e m p o ( e v e n t o e n d ó g e n o ) . A diferença f u n d a m e n t a l e n t r e T r i g g e r e Operação ê q u e T r i g g e r d e v e c o n t e r p e l o menos um e v e n t o de p r é -condição, chamado de p a r t e de e v e n t o , e s e a prê-condição s e t o r n a v e r d a d e i r a , o c o r p o d e v e s e r e x e c u t a d o i m e d i a t a m e n t e . Desde q u e a definição de e v e n t o s e t r i g g e r s são i n d e p e n d e n t e s , p o d e o c o r r e r •um e v e n t o s e j a prê-condição de vários t r i g g e r s e n e s s e c a s o uma
sequência de execução será e s t a b e l e c i d a . 0 nome d o t r i g g e r c o r r e n t e é incluído n a s prê-condições de um t r i g g e r a g u a r d a n d o , q u e p e r manece n o p a p e l de um e v e n t o a d i c i o n a l , o q u a l v o l t a v e r d a d e i r o n o f i n a l d a execução. Exemplos E TESTEI DATE 1 3 / 0 3 / 8 7 DEPOIS 1 2 : 0 0 : 0 0
17
T
ADICIONAL TESTEI
INSERT CCE INTO D I N END TESTEI ' * E TESTE2 DATE 1 3 / 1 3 / 8 7 ANTES 1 5 : 3 0 : 0 0 T AC ION A 2 TESTE2 CREATE DSC END TESTE2 E TESTE3 DATE 13/0 3/87 TESTEI T ACIONA3 TESTE3
DELETE CCE FROM D I N END
TESTE3
• 18
t
t E TESTE4 DURANTE 1 4 : 0 0 : 0 0 1 6 : 0 0 : 0 0 PERIODIC 0 0 : 0 1 : 0 0 T ACIONA4 - TESTE4 PGM00 END TESTE4CAPITULO V METODOILOGIA DA I^EPLEMEKlTACÃO Dados os c o n c e i t o s v i s t o s até a g o r a , um s i s t e m a de e v e n t o s e t r i g g e r s d e n t r o d a M e t o d o l o g i a de d e s e n v o l v i m e n t o d o m o d e l o c o n c e i t u a i , a u t o m a t i z a os e v e n t o s p r e v i s t o s e p o d e d a r s o l u ç õ e s , f o r n e c e n d o subsídios p a r a formação de n o v o s e v e n t o s , e v i t a n do q u e p r o c e d i m e n t o s c o r r a m o r i s c o de não s e r e m e f e t u a d o s . Optamos e a c r e d i t a m o s s e r a e s t r u t u r a de uma l i s t a d u p l a m e n t e e n c a d e a d a e a p o n t a d o r e s , recomendável n a m o n t a g e m d o s i s t e m a , o b j e t i v a n d o v e l o c i d a d e no a c e s s o d e v i d o a redução do t e m p o de p e s q u i s a a e v e n t o s p o r nomes e de t r i g g e r s p o r p o n t e i r o s , já q u e onde q u e r q u e s e e s t e j a p o s i c i o n a d o n a s l i s t a s num d e t e r m i n a d o momento, p o d e r e m o s , através d a v a r r e d u r a de uma d e l a s , ob
t e r p o n t e i r o s c o r r e s p o n d e n t e s n a o u t r a de modo q u a s e i m e d i a t o . V . 1 - A composição de e v e n t o s está e s t r u t u r a d a em um b y t e o q u a l indicará s e o e v e n t o f o i p o s i c i o n a d o o u n ã o . 0 e n c o n t r o d e s s e e v e n t o e s p e c i f i c o é f e i t o através d a v a r r e d u r a d a l i s t a de e v e n t o s , s e n d o q u e , em c a s o de inclusão o e v e n t o será p o s i c i o n a d o ao f i n a l d a l i s t a , o u em a l g u m l u g a r q u e e s t e j a a p o n t a d o como l i -v r e . V.2 - Os t e s t e s de c o n d i t i o n s p a r a o e v e n t o f o r a m o r g a n i z a
20
dos em uma t a b e l a de comandos interpretáveis e de e v e n t o s prê-defi n i d o s , como p o r e x e m p l o , TIME e DATE, o u d e e v e n t o s d e f i n i d o s a q u a l q u e r t e m p o através d a p a l a v r a c h a v e "EVENT". E v e n t o s e s t e s q u e não c o r r e m o r i s c o de s e r e m p e r d i d o s d e v i d o ao esquema de s e g u r a n ça d o m o n i t o r , o q u a l r e c a r r e g a a t a b e l a d e d i s c o , a o início de c a d a c i c l o prê-definido d o relógio i n t e r n o , p a r a a memória, e a s a l v a em d i s c o a o f i n a l de c a d a c i c l o .
••••* ^
Com relação ao c i c l o i n t e r n o de relógio e l e ê fácil, m e n t e alterável através d a modificação d o s o f t w a r e , c a s o não a t e n
d a com r a p i d e z a o s f i n s d e s e j a d o s .
V. 3 - No t r a t a m e n t o de "ON" e "CONDITION" p a r a o e v e n t o op_ t a m o s p e l a criação de uma t a b e l a e s p e c i a l de interpretação b a s e a d a nas" s e g u i n t e s p a l a v r a s - c h a v e :
V . 3 . 1 - TF - R e a l i z a o t e s t e lógico q u e s e g u e e s t a p a l a v r a sem e n v o l v e r t e s t e s com v a l o r e s de t e m p o .
B a s e i a - s e n a s e g u i n t e e s t r u t u r a :
I F ENTIDADE OPERADOR OPERANDO
Onde e n t i d a d e i n d i c a q u e e s t e parâmetro p o d e s e r o p c i o n a l , d e p e n d e n d o d o t e s t e a s e r e f e t u a d o .
O p e r a d o r p a r a o s i s t e m a p o d e s e r " > " ( m a i o r q u e ) , " < " (memor q u e ) , "=" ( i g u a l ) , "NOT" ( n e g a t i v o ) , " I N " (afirmação p a r a condições s i m p l e s . P a r a condições c o m p o s t a s ) , "AND" (operação e lógico s i g n i f i c a n d o q u e os r e s u l t a d o s d a s operações s i m p l e s q u e
2 1 a n t e c e d e m e s u c e d e m o o p e r a d o r devem s e r v e r d a d e i r a s p a r a t o r n a r o t e s t e v e r d a d e i r o ) , "QR" (operação o u lógico, s i g n i f i c a n d o q u e a o menos um d o s r e s u l t a d o s , s u b s e q u e n t e o u a n t e c e d e n t e a o o p e r a d o r d e v e s e r v e r d a d e i r o p a r a q u e t o d a condição s e j a a v a l i a d a como v e r d a d e i r a ) , "OEEX" (operação o u e x c l u s i v o , s i g n i f i c a n d o q u e o u a condição a n t e c e d e n t e ao o p e r a d o r , oú a condição s u b s e q u e n t e ao o p e r a d o r deverá s e r v e r d a d e i r a , porém n ã o ambas, p a r a que a condição s e j e i s a t i s ' f e i t a .
O p e r a n d o p o d e s e r um v a l o r , um e v e n t o já d e f i n i d o p e l o usuário, o u uma expressão lógica a s e r a v a l i a d a a t e m p o d e t e s t e do "ON" o u "CONDITION" . V.3.2 - FUNÇÕES - O b j e t i v a n d o o t r a t a m e n t o d e t e m p o f o r a m d e f i n i d a s as" s e g u i n t e s funções: V.3.2.1 - DATE - F o r n e c e n d o a d a t a n o formato.DD/MM/AA V.3.2.2 - HOUR - F o r n e c e n d o a h o r a n o f o r m a t o HH:MM:SS E s t a s d u a s funções p e r m i t e m • o t r a t a m e n t o d o t e m p o t a n t o d e m a n e i r a a b s o l u t a , p o r e x e m p l o , um e v e n t o q u e t i v e s s e d e s e r p o s i c i o n a d o em uma d a t a e h o r a específicas, como de m a n e i r a r e l a t i v a , p o r e x e m p l o , um e v e n t o p o s i c i o n a d o s e m p r e d e p o i s d e a l g u m a d a t a o u h o r a .
22 a u t o m a t i c a m e n t e p e l o s i s t e m a : C i c l o - C o n t e n d o o b y t e a s s o c i a d o , p o s i c i o n a d o s e iní.cio de c i c l o de relógio. R e s t a r t - C o n t e n d o indicação de reinício d a execução d o s i s t e m a . E x e m p l o : S e j a a condição: •
I F RESTART=TRUE AND RELATÕRIO= TRUE AND NOT IMPRESSORA
E n v o l v e o s s e g u i n t e s t e s t e s e posi-c i o n a m e n t o s :
Caso RESTART=TRUE então E V . I N - TERN01 = 1
Senão EV.INTERN01 = 0.
O I F s e t r a n s f o r m a em:
I F EV.INTERNO1 AND RELATÓRIO = TRUE AND NOT IMPRESSORA
Como f o i e n c o n t r a d o um a n d a e x p r e s são após o mesmo é a v a l i a d a e d e p o i s c h e c a d a com o e v e n t o c u j o nome está a n t e s d o AND. Caso RELATÓRIO = TRUE ENTÃO: EV.INTERN02 = 1
23
i
S u p o n d o RELATÓRIO • TRUE f i c a a s s i m o I F :
I F EV.INTERN01 AND EV.INTERN02 AND NOT IMPRESSORA. Como EV.INTERNOl e EV. INTERN02 são v e r d a d e i r o s o r e s u l -t a d o d o AND e n -t r e d o i s será v e r d a d e i _ r o , p o s i c i o n a n d o então EV.INTERNO3 como v e r d a d e i r o , I . é = 1 .
As operações AND, OR, OREX são fex_ t a s através d a álgebra b o o l e n a , p o d e n d o f o r n e c e r o s s e g u i n t e s r e s u l t a d o s :
EV1 EV2 RESULT
0 0 0 AND 1 0 0 0 1 0 1 1 1 0 0 0 OR 1 0 1 0 1 1 1 1 1 0 0 0 OREX 1 0 1 0 1 1 1 1 0
24
C o n t i n u a n d o , a g o r a t e m o s :
I F EV.INTERN03 AND NOT IMPRESSORA
Será a v a l i a d o o e v e n t o i m p r e s s o r a . Caso IMPRESSORA = FALSE então E V . I N TERN04 = 1 e a expressão s e r e s u m e a I F EV.INTERN03 AND EV.INTERN04 q u e •» são v e r d a d e i r o s , p e r m i t i n d o o p o s i c i o n a m e n t o d o e v e n t o p a r a o q u a l a CONDITION f o i s a t i s f e i t a . V.3.3 KHEK - E f e t u a t e s t e lógico e n v o l v e n d o t e m p o e d a t a . Tem a s e g u i n t e e s t r u t u r a : WHEN DATE/TIME o p e r a d o r o p e r a n d o N e s t e c a s o , o e v e n t o será c o m p a r a d o v i a o p e r a d o r com a h o r a o u d a t a d o s i s t e m a , f o r n e c e n d o um v a l o r f a l s o o u v e r d a d e i r o , q u e s e n d o s a t i s _ f e i t o ocasionará o p o s i c i o n a m e n t o d o e v e n t o .
Como n o I F , o WHEN também p o d e s e r c o m p o s t o , através de AND, OR, OREX e o p r o c e s s o de avaliação é o mesmo. Uma p a r t i c u l a r i d a d e n o WHEN é q u e um campo c o n t e n d o ":" será a s s o c i a d o a h o r a e um campo c o n t e n d o "/" será a s s o c i a d o a d a t a e um campo i n t e i r o p a r a a n o .
WHEN DATE = 31/06/86
25
WHEN HOUR = 10:00:00 p o d e s e r WHEN 1 0 : 0 0 : 0 0 .
A avaliação é d a e s q u e r d a p a r a a d i r e i t a , como n o I F de modo q u e :
WHEN 19 85 AND DATAHORA(10:00:00 - 1 2 : 0 0 : 0 0 ) i m p l i c a n o s p a s s o s :
SE ANO = 19 85 p o s i c i o n a EV.INTERNOl
- - SE HORA ENTRE 1 0 : 0 0 : 0 0 e 12:00:00 p o s i c i o n a EV.INTERN02
Se o r e s u l t a d o d o AND ENTRE EV.INTERNOl E EV.INTERNO2 f o r v e r d a d e i r o , o e v e n t o será p o s i c i o n a d o , p o d e n d o s a t i s f a z e r a condição de um t r i g g e r a g u a r d a n d o . I s t o s i g n i f i c a , q u e d u r a n t e t o d o o a n o de 19 85, s e m p r e q u e a h o r a e s t i v e r n o i n x e r v a l o d e 1 0 : 0 0 : 0 0 a 12:00:00 Hs o e v e n t o será p o s i c i o n a d o , p e r m i t i n d o a ativação d e a l g u m t r i g g e r . I s t o s i g n i f i c a q u e a n t e s de 1 0 : 0 0 : 0 0 e apôs 12:00:00 o s t a t u s d o e v e n t o v o l t a a s e r z e r o i s _ t o é , o e v e n t o v o l t a a s e r d e s p o s i c i o n a d o , V.4 - OPERADORES - Os o p e r a d o r e s r e c o n h e c i d o s p e l o i n t e r p r e t a d o r s ã o o s s e g u i n t e s :
V . 4 . 1 - AND - E f e t u a a operação "E" lógica, e n t r e o s o p e r a d o r e s . I s t o ê , o r e s u l t a d o d a operação será c o n s i d e r a d o v e r d a d e i r o , s e um o p e r a d o r a e s q u e r d a d o "AND" f o r v e r d a d e i r o , a s s i m como o o p e r a d o r d a d i r e i t a também s e j a v e r d a d e i r o .
26
V.4.2 - OR - E f e t u a a operação "OU" lógica e n t r e os o p e r a d o r e s , o u s e j a , o r e s u l t a d o d a operação será c o n s i d e r a d o v e r d a d e i r o s e o o p e r a d o r a e s q u e r d a d o
"OR" f o r v e r d a d e i r o , o u s e o o p e r a d o r a s u a d i r e i t a f o r v e r d a d e i r o , o u ambos f o r e m v e r d a d e i -r o s .
V. 4.3 - ' * OREX - E f e t u a a operação lógica "OU EXCLUSIVA". D e f i n e - s e como a operação a n t e r i o r , e x c e t o p e l o f a t o de q u e ambos o s o p e r a d o r e s não podem s e r v e r d a d e i r o s . A t a b e l a v e r d a d e p a r a e s t a s o p e rações (AND, OR, OREX) f o r a m v i s t a s n o I F .
V.4.4 - < - E f e t u a a comparação lógica e n t r e d o i s o p e r a n dos r e t o r n a n d o a condição v e r d a d e i r a s e o p r i -m e i r o f o r -m e n o r q u e o s e g u n d o . V.4.5 - > - E f e t u a a comparação lógica e n t r e d o i s o p e r a n dos r e t o r n a n d o a condição v e r d a d e i r a s e o s e g u n d o f o r m e n o r q u e o p r i m e i r o . V.4.6 - = - E f e t u a a comparação lógica e n t r e d o i s o p e r a n dos r e t o r n a n d o a condição v e r d a d e i r a s e ambos c o n t i v e r e m o mesmo v a l o r .
o v a l o r d a expressão a v a l i a d a , expressão d i r e i t a , o o p o s t o d o a v a l i a d o , i s t o é V.4.7 - NOT - T o r n a
27 se a avaliação f o r v e r d a d e i r a e l e a tornará f a l s a e c a s o s e j a f a l s a , e l e a tornará v e r d a d e i r a . "NOT" p r i m e i r o v e r i f i c a a v e r a c i d a d e d a e x p r e s são, em s e g u i d a p o s i c i o n a o u d e s p o s i c i o n a o e v e n t o temporário.
Supondo NOT IMPRESSORA
0 p r o c e d i m e n t o será:
a) V e r i f i c a r o s t a t u s d o e v e n t o IMPRESSORA; b ) s e s t a t u s = 0 m o d i f i c a p a r a 1
s e s t a t u s = 1 m o d i f i c a p a r a 0
D e s t e modo, s u p o n d o o e v e n t o i m p r e s s o r a d e s a t i _ v a d a , i s t o é, s t a t u s = 0 "NOT" IMPRESSORA será v e r d a d e i r o p o r q u e s t a t u s mudará p a r a 1 q u e c o r r e s p o n d e a condição v e r d a d e .
V.4.8 - TRUE - V e r i f i c a s e uma expressão p r o p o s t a num I F é v e r d a d e i r a .
"TRUE" a p e s a r de r e d u n d a n t e numa expressão, p o de t o r n a - l a de m a i s fácil compreensão numa l e i t u r a . Na v e r d a d e , TRUE, irá v e r i f i c a r s e o e v e n t o está p o s i c i o n a d o o u n ã o , r e t o r n a n d o v a l o r 1 p a r a um e v e n t o temporário, c a s o o e v e n t o t e s t a d o e s t e j a p o s i c i o n a d o .
28
* \
V. 4.9 - FA1LSE - v e r i f i c a s e uma expressão p r o p o s t a num I F é
f a l s a . Tem a mesma f i n a l i d a d e d e TRUE.
P o r e x e m p l o :
NOT IMPRESSORA
NOT IMPRESSORA = TRUE IMPRESSORA = FALSE - rf São e q u i v a l e n t e s . V.4.10 - EL - I n d i c a q u e o e v e n t o a s u a e s q u e r d a será p o s i c i o n a d o c a s o o d a d i r e i t a também e s t e j a . "EL" p r a t i c a m e n t e s i g n i f i c a correspondência. . No c a s o , não p o d e s e r s u b s t i t u i d o p e l o o p e r a d o r H= " p o r q u e e s t e i m p l i c a em t e s t e , e "EL" i m p l i c a em assinalação, sem t e s t e a l g u m . A s s i m : DEFEITO.EL.NOT.IMPRESSORA S i g n i f i c a : Se n ã o há i m p r e s s o r a p o s i c i o n e d e f e i t o . No t e , q u e s e NOT i m p r e s s o r a f o r f a l s a , de f e i t o não será p o s i c i o n a d o de a c o r d o com a definição.
CAPITULO V I
ESTRDTORA BOS DADOS
V I . 1 - E s t r u t u r a de E v e n t o s
Os e v e n t o s f o r a m e s t r u t u r a d o s numa l i s t a d u p l a m e n t e e n c a d e a d a , v i s a n d o e c o n o m i a de memória, a s s i m como m a i o r v e l o c i d a d e de a c e s s o e segurança. A e s t r u t u r a d a l i s t a de e v e n t o s é a s e g u i n t e :
NOME
PONTEIROS
PONTEIRO
PONTEIRO
DO
ON
CONDITION
PARA
STATUS ELEMENTO
PRÓXIMO
EVENTO
•
TRIGGERS
ANTERIOR
ELEMENTO
FIG. 5 - Estrutura de Eventos
30 NOME DO EVENTO ON CONDITION PONTEIROS P/TRIGGER STATUS DO EVENTO
PONTEIRO ELEM. ANTER.
20 b y t e s - Contém nome d o e v e n t o . 60 b y t e s - Contêm o ON com v a l o r e s d e t e m p o , h o r a e d a t a . Sendo v e r d a d e i r o s l e v a m a o t e s _ t e d a CONDITION. 6 0 b y t e s - Contêm a CONDITION d o e v e n t o p a r a q u e s e j a posx_ c i o n a d o . • P o d e - s e u t i l i z a r nome de e v e n t o , relógio, calendário. 48 b y t e s - Contêm até d o z e p o n t e i r o s . p a r a t r i g g e r com q u a t r o b y t e s c a d a . J u l g a m o s q u e d o z e t r i g g e r s a p o n t a n d o p a r a um e v e n t o uma q u a n t i d a de razoável. C o n t u d o , e s t e número poderá s e r a l t e r a d o f a c i l m e n t e com a r e c o m p i l a ção d o p r o g r a m a . 1 b y t e - I n d i c a s e o e v e n t o f o i o u não p o s i c i o n a d o . 4 b y t e s - A p o n t a d o r p a r a e l e m e n t o a n t e r i o r n a l i s t a o u z e r o s n o c a s o de p r i m e i r o e l e m e n t o .
31
i
t
PONTEIRO PROX. ELEM. 4 bytes
V.I.2 - E s t r u t u r a de Ações para T r i g g e r s
- ^ Os t r i g g e r s podem s e r programas_residentes em d i s c o
sendo a t i v a d o s quando os eventos a e l e s r e l a c i o n a d o s são todos
v e r d a d e i r o s . Também podem ser completamente d e f i n i d o s com o conjun
t o de funções s e g u i n t e s , d e f i n i d a s como ações.
As funções a s e g u i r são t r a t a d a s como ações d e n t r o do
corpo de um t r i g g e r . Para assegurar seu funcionamento, é necessã
r i a a existência de uma área na memória que servirá de i n t e r f a c e
e n t r e o sistema de eventos e t r i g g e r e o database. Esta área terá
o formato genérico:
- apontador para próximo
elemento l i v r e na l i s t a , ou
zeros no caso de último
elemento.
o J9 20 21 25
NOME T ENDEREÇO OP
NOME T ENDEREÇO S
F/G. 6 - Interface en/re o sistema de eventos e o database
32
NOME
TENDEREÇO
OP
\ ipode ser o nome de uma entidade ou
de uma c l a s s e . Como este campo ocor
re duas vezes temos a p o s s i b i l i d a d e
de e n v i a r ao DB o nome de uma e n t i
dade e de uma c l a s s e ,
s i g n i f i c a o t i p o de elemento que
q u a l i f i c a o nome como entidade (E)
ou classe (C)\
é preenchido p e l o DB com o endereço
da l i s t a na memória, ou zeros,
é o t i p o da ação desejada podendo
assumir os v a l o r e s :
I - I n s e r t ;
D - Delete;
U - Update;
C - Create;
F - F i n d ;
R - Request.
é o d e v o l v i d o p e l o DB i n d i c a n d o a
firmação do término de uma operação
(0) ou não ( f O ) .
Cada operação de detabase é qualquer alteração ou
operação de recuperação sobre instâncias simples de classes de
o b j e t o s [ BRO 84 ] . Na nossa implementação a s i n t a x e das operações
33
INSERT e INTO X
onde E = ENTIDADE, X = CLASSE
DELETE - remoção de uma entidade ou de um o b j e t o de
uma e n t i d a d e . Tem os formatos
DELETE e FROM X
onde E = ENTIDADE e X = CLASSE
DELETE E
onde E = ENTIDADE
UPDATE - r e a l i z a alteração de um v a l o r numa c l a s s e .
UPDATE X INC C BY Y
onde X = VALOR, C = CLASSE, Y = NOVO VALOR
CREATE - c r i a uma c l a s s e .
CREATE C
onde C = CLASSE a s e r c r i a d a .
FIM) - v e r i f i c a a existência de uma entidade em uma
CLASSE, possuindo o formato
FUMD E IN C
onde E = ENTIDADE C = CLASSE.
REQUEST - devolve i n t e r a t i v a m e n t e o conteúdo de uma
CLASSE, ou uma ENTIDADE ( o b j e t o ) e s p e c i f i c o .
Tem os formatos:
REQUEST E
Onde E = ENTIDADE
REQUEST E IN C
onde E = ENTIDADE e C = CLASSE.
VI.3 - E s t r u t u r a de T r i g g e r s
34
piamente encadeada, p e l a mesma razão da l i s t a de eventos. A l i s t a
de t r i g g e r s tem o seguinte f o r m a t o :
PONTEIRO PONTEIRO
NOME
PRECOND AÇÕES POSCOND PRÓXIMO ELEMENTO
TRIGGER AÇÕES
ELEMENTO ANTERIOR
FIG. 7 - Estrutura de Triggers
Onde:
NOME-TRIGGER
PRECOND
AÇÕES
PONTEIRO-PRÕXIMO
8 bytes - contendo nome do t r i g g e r .
20 Bytes - contendo os p o n t e i r o s dos
eventos que são prê-condi.
t f o n para o t r i g g e r , que
v i a b i l i z a ou não o d i s p a r o
da ação.
160 bytes - contendo as ações que pode
rão ou não r e s i d i r em dis_
co, e serão chamadas con
forme d e f i n i d o no corpo
de t r i g g e r .
4 bytes - contendo o próximo endere
ço de memória que contém
uma descrição de t r i g g e r .
PONTEIRO-ANTERIOR
\ i
t
4 bytes - contendo o endereço a n t e r i
or na memoria, o q u a l con
tém uma descrição de tri£
ger.
VI.4 - Validação de Data e Hora
Data e Hora serão t r a t a d a s p e l o ON do EVENT. A v e r i f i
cação da v a l i d a d e de relógio e calendário f o r n e c i d o no ON será
efetuada através do a l g o r i t m o ;
SE MÊS < 3
ENTÃO
N=365*ANO+l+31* (MÊS1) +INT((AN01) /4)
-INT(3/4*INT( (ANO-1)/100)+1)
SENÃO
N=365*ANO+l+31*(MÊS-1)-INT(.4*MÊS+2.3)+
INT (ANO/4)-INT(3/4*(INT(ANO/100)+1))
FIMSE •
DIA-DA-SEMANA = N-INT(N/7)*7
SE DIA-DA-SEMANA = 0
ENTÃO DIA-DA-SEMANA = 7
FIMSE
(DIA DA SEMANA ESTÃ ENTRE 1 E 7, SENDO QUE
1 = DOMINGO, 2 = SEGUNDA,..., 7 = SÁBADO)
SE MÊS - 2
ENTÃO Z = ANO/4-INT(ANO/4)
SE Z = 0
36
ENTÃO
NÚMERO-DIAS = 29
SENÃO
NÚMERO-DIAS = 2 8
EIMSE
SENÃO
SE MÊS = 4 OU 6 OU 9 OU 11
ENTÃO
NÚMERO-DIAS = 30
SENÃO
NÚMERO-DIAS = 31
FIMSE
O a l g o r i t m o acima serve t a n t o para c a l c u l a r dias, da
semana, quanto para se d e s c o b r i r a quantidade de d i a s num mês, o
que serve para v a l i d a r a d a t a , assim como o d i a da semana.
A validação da hora é mais s i m p l e s , não n e c e s s i t a n
do de a l g o r i t m o e s p e c i a l . A simples verificação de minuto maior
que 59 e hora maior que 24, i n v a l i d a a hora entrada no ON do EVENT.
CAPITULO V I I
O SISTEMA
Neste Capítulo mostraremos todas as funções e a l
gorítmos que- foram d e f i n i d o s e u t i l i z a d o s para a implementação do
Sistema de Eventos e T r i g g e r s .
V I I . 1 - Função G e r e n c i a r Tempo
P o s i c i o n a r i n t e r v a l o de tempo para c i c l o i n t e r n o de
verificação das l i s t a s de carga/salvamento dos eventos e t r i g g e r s .
Ao ser encontrada a função f i m de i n t e r v a l o ocorrerá o salvamento
das l i s t a s de eventos e de t r i g g e r s para d i s c o e logo em seguida
seu recarregamento. Caso alguma situação anormal o c o r r a durante
o tratamento com l e i t u r a e gravação em d i s c o , a i n t e g r i d a d e dos
dados não será a f e t a d a , devido ao método de acesso que se está
empregando. Apôs a carga e salvamento dos eventos e t r i g g e r s , o
i n t e r v a l o será r e p o s i c i o n a d o para novo c i c l o . Caso o c i c l o não
tenha terminado, ou tenha s i d o r e p o s t o , o sistema passa o c o n t r o l e
para a função g e r e n c i a r eventos.
RELÓGIO • POSICIOHAR INTERVALO DE TEMPO TESTAR FINAL DE TEMPO TEMPO RELÓGIO -POSICIOHAR INTERVALO DE TEMPO TESTAR FINAL DE TEMPO ESGOTADO • • TEMPO NÃO ESGOTADO
TEMPO = 01:00
WHILE TEMPO > 0 REPEAT
CALL SBRTEC;
CALL SBRANA;
END;
IF TEMPO = 0
REPEAT
FIMGRAVA: = SEVENTO ;
GRAVA EVENTO •
9EVENTO:= 3PRÕXIMO EVENTO;
UNTIL FIMGRAVA:= 0 ;
REPEAT
FIMGRAVA:^ 3TRIGGER ;
GRAVA TRIGGER ;
3TRIGGER:= 3PRÕXIMO TRIGGER
UNTIL FIMGRAVA'. = 0 ;
REPEAT
FIMLER:= 3EVENTO ;
LER EVENTO ;
3EVENTO:= 3PRÕXIMO EVENTO ;
UNTIL FIMLER:= 0 ;
REPEAT
FIMLER:= 3TRIGGER ;
LER TRIGGER ;
3TRIGGER:= 3PRÕXIMO
TRIGGER
UNTIL FIMLER:= 0 ;
TEMPO:= 01:00 ;
TEMPO ESGOTADO SALVAR EVENTOS EVENTOS TRIGGERS SALVAR TRIGGERS CARREGAR EVENTOS CARREGAR TRIGGERS CARGA COMPLETA REPOSICIONA INTERVALO DE TEMPO TEMPO. NAO ESGOTADO
V I I . 2 - Módulo P o s i c i o n a r Início L i s t a de Eventos
Efetua a carga do p o n t e i r o do 19 evento na l i s t a .
V I I . 3 - Função Gerenciar Eventos Posicionados
V e r i f i c a na l i s t a de eventos os que estão p o s i c i o n a
dos, ou s e j a , STATUS 1 e a t i v a os t r i g g e r s que. dependem destes
eventos. Ao r e t o r n o desta ativação, a l i s t a é novamente v a r r i d a ,
v e r i f i c a n d o ONS e CONDITIONS as q u a i s , sendo s a t i s f e i t a s , p o s i c i o
nam o evento e tornam a v e r i f i c a r a l i s t a .
Na p r i m e i r a passagem v e r i f i c a eventos posicionados.
Na segunda, v e r i f i c a de acordo com ONS e CONDITIONS.
A l g o r i t m o
3EVENTO = 3IN1CI0 LISTA EVENTO;
WHILE EVENTO f 0
IF STATUS EVENT0=1
CALL SBRPRE;
LOAD TRIGGER EVENTO;
START TRIGGER EVENTO;
ELSE
EVENTO:= PRÓXIMO EVENTO;
ENDIF
END
3EVENT0:= INlCIO-LISTA-EVENTO;
WHILE EVENTO:= 0;
CALL SB RON;
CALL SBRCON;
V
VERIFICAR ATI VAR •
TEMPO NÃO EVENTOS POSICIONADOS TRIGGER C0RRE5PONHNTE EXECUTAR ESGOTADO EVENTOS POSICIONADOS TRIGGER
C0RRE5PONHNTE AÇÃO DO TRIGGER
POSICIONAR LISTA DE EVENTOS VERIFICAR ON TESTAR CONDITIONS SATIS-FEITAS POSICIONAR EVENTOS
F1G. 10 - V i s ã o da função gerenciar eventos.
TRIGGER ACIONADO TESTAR TESTAR T I P O PRECOND DE AÇA 0 DSK CARREGAR 1
. AÇÃO P/ EXECUTAR POSICIONAR INTERFACE MEMORIA A Ç A O POSCOND C/TERMINAL
PRE-DEFINIDA PASSA R PARÂMETROS PARA S G B D S G B D RECEBER RESPOSTA
44
V I I . 4 - Função Gerenciar Ações de T r i g g e r
V e r i f i c a as pré-condições para t r i g g e r e o t i p o de
ação a executar. Caso s e j a uma ação pré-definida, ocorrerá i n t e r
face com o DB, passando-lhe e recebendo os parâmetros i n e r e n t e s a
cada ação. De acordo com a resposta do DB, a pós-condição será ou
naõ posicionada. Caso a ação r e s i d a em d i s c o , i s t o é, não s e j a
pré-definida, a ação será carregada com LOAD e receberá o c o n t r o l e
com CALL. A pós-condição será posicionada e o sistema passará o
c o n t r o l e para a próxima função.
A l g o r i t m o
IF PRECONDITION SATISFEITA
REPEAT
AÇÃO:= AÇÃO TRIGGER;
IF AÇÃO f INSERT, FIND
LOAD AÇÃO;
START AÇÃO;
STATUS POSCOND:= 1;
ELSE
CARREGAR PARMDB COM CLASSE, ENTIDADE
WHILE AÇÃO = DELETE
AÇÃ0DB:= D;
END
WHILE AÇÃO - FIND
AÇÃ0DB:= F;
END
WHILE AÇÃO = INSERT
AÇÃODB:= I ;
45
END
WHILE
•END
CALL DATBASE(PARMDB)
IF RETORNDB = 0
„ STATUS POSCOND:= 1 ;
ENDIF
ENDIF
AÇÃO:= PRÕXIMA AÇÃO TRIGGER;
UNTIL AÇÃO:= 0;
ENDIF
V I I . 5 - Função Definição de Eventos e T r i g g e r s
V e r i f i c a a cada c i c l o se o usuário quer d e f i n i r a l g u
ma c o i s a e não o desejando, r e t o r n a o controle" para o gerenciador
de tempo. Na hipótese de o usuário d e s e j a r d e f i n i r alguma c o i s a ,
terá q u a t r o opções:
D e f i n i r t r i g g e r - i n c l u i t r i g g e r na l i s t a .
D e f i n i r evento - i n c l u i evento na l i s t a .
D e l e t a r t r i g g e r - r e t i r a t r i g g e r da l i s t a ,
D e l e t a r evento - r e t i r a evento da l i s t a .
Ao f i n a l da definição do usuário, o c o n t r o l e passa ao g e r e n c i a d o r
de tempo novamente.
I N T E R F A C E C / T E R M I N A L V E R I F I C A O P Ç Ã O 00 USUA'RIO D E F I N I R E V E N T O D E F I N I R TRIGGER D E L E Ç A O D E E V E N T O G E R E N C I A R N A O T E M P O I N C L U I R E V E N T O I N C L U I R T R I G G E R R E T I R A R E V E N T O
FIG. 1 2 - V i s ã o da interface com o usuário.
D E L E C Ã O D E T R I G G E R G E R E N C I A R D E L E C Ã O D E T R I G G E R T E M P O R E T I R A R T R I G G E R
A l g o r i t m o
IF TEMPO > 0
DISPLAY VAI DEFINIR EVENTO OU TRIGGER
ACCEPT AÇÃO;
WHILE' OPÇÃO = E
ACCEPT EVENTO FROM TERMINAL
IF ENTIDADE f " "
CALL INCLUI EVENTO;
ELSE
CALL EXCLUI-EVENTO;
ENDIF
END
WHILE OPÇÃO = T
ACCEP TRIGGER FROM TERMINAL
IF PRECOND £ " "
CALL INCLUI-TRIGGER;
ELSE
CALL EXCLUI-TRIGGER
<ENDIF
END
ENDIF
V I I . 6 - Módulo P o s i c i o n a r I n t e r v a l o de Tempo
Este módulo adquire data e hora para mensagem de i n
formação ao operador de monitor a t i v o . Esta data não servirá como
referência caso o sistema encontre mais a d i a n t e alguma data no
"ON". E l a simplesmente documenta o momento em que o sistema f o i
48
a t i v a d o .
Em seguida, o i n t e r v a l o de tempo para o c i c l o de exe
cução ê carregado. I n i c i a l m e n t e este i n t e r v a l o e t r a t a d o como sen
do de 1 minuto, podendo ser a l t e r a d o p e l a recompilação do módulo
caso s e j a necessário. Esta operação ê f e i t a p e l a macro do s u p e r v i
sor 0S/VS1 STIMER.
V I I . 7 - Módulo Teste de F i n a l de I n t e r v a l o de Tempo
Através da macro TTIMER, do s u p e r v i s o r 0S/VS1 é f e i t a
a checagem para verificação se f i n a l de i n t e r v a l o . Caso tenha ocor
r i d o , as t a b e l a s de eventos e de t r i g g e r s são gravadas em d i s c o e
recuperadas logo em seguida. Os a r q u i v o s são t r a t a d o s de modo que
se o c o r r e r uma queda no sistema, t a n t o durante o salvamento ou du
r a n t e a carga, não irá a f e t a r a i n t e g r i d a d e dos a r q u i v o s , embora
se parca somente o que e s t i v e r na memória v i r t u a l .
Ao f i n a l da recarga dos a r q u i v o s para a memória, o
i n t e r v a l o é novamente p o s i c i o n a d o , tendo então, i n i c i o de um novo
c i c l o . Caso o c i c l o não tenha terminado, o c o n t r o l e passará a f u n
ção VERIFICAR EVENTOS POSICIONADOS.
V I I . 8 - Módulo S a l v a r Eventos
Efetua a descarga da l i s t a de eventos para d i s c o
' através da macro do DATA MANAGEMENT WRITE, tendo s i d o o a r q u i v o
49
serão perdidos em caso de alguma anormalidade durante a operação.
V I I . 9 - Módulo Salvar T r i g g e r s
Módulo idêntico ao a n t e r i o r , com a diferença de que
a t a b e l a ( l i s t a ) t r a t a d a é a de t r i g g e r s . Os mesmos cuidados com
a i n t e g r i d a d e dos arquivos são tomados a q u i .
VII.10 - Módulo Carregar Eventos
Operação de carga do a r q u i v o de eventos para a memo
r i a através da macro READ, com a r q u i v o a b e r t o com INOUT, o b j e t i
vando i n t e g r i d a d e em caso de situação anormal.
V I I . 1 1 - Módulo Carregar T r i g g e r
Opera a carga da l i s t a de t r i g g e r s para a memória e f e
tuada da mesma maneira já d e s c r i t a para eventos, tomando-se os
mesmos cuidados.
VII.12 - Módulo Carga Completa
Apenas faz a checagem de f i n a l da operação de s a l v a
mento e de recuperação das l i s t a s , para que se possa passar para
o próximo módulo, através do parâmetro EODAD da DCB(0S/VS1).
VII.13 - Módulo Reposicionar I n t e r v a l o de Tempo
50
\
t
os q u a t r o módulos a n t e r i o r e s . Sua função é p o s i c i o n a r o i n t e r v a l o
de tempo, com o o b j e t i v o de p e r m i t i r novo c i c l o no sistema. F e i t o
através da macro STIMER (OS/VS1).
V I I . 1 4 - Módulo V e r i f i c a r ON
Uma vez que toda a l i s t a tenha s i d o v a r r i d a e nenhum
evento tenha s i d o p o s i c i o n a d o , ou todos os t r i g g e r s corresponden
tes tenham s i d o executados, a l i s t a de eventos é v a r r i d a para po
sicionamento de eventos s a t i s f e i t o s , sendo que este módulo v e r i f i _
ca a veracidade do ON para cada evento. Sendo o ON s a t i s f e i t o o
próximo módulo recebe o c o n t r o l e , caso c o n t r a r i o , o próximo elèmen
t o na l i s t a é checado.
A l g o r i t m o
WHILE C(0N) f " "
IF ON f PALAVRAS-CHAVE THEN
E V I N T E R N 0 1 : =
STATUS-EVENTO NO ON
INCREMENTAR ON PARA SALTAR NOME
-EVENTO
ELSE
IF ON = AND OU OREX OU OR OU EL OU NOT
OPCODE:= ON;
INCREMENTA ON PARA SALTAR PALAVRA-CHAVE
E V I N T E R N 0 2 : = ON ;
STATUS-EVENTO:= EVINTERNOl(OPCODE)EVINTERN02
ENDIF
INCREMENTA ON PARA SALTAR PALAVRA-CHAVE E N D I F I F ON = ANTES OU ON = < SALTAR PALAVRA-CHAVE NO ON I F ON+2 = ":" A D Q U I R I R HORA;
MOVER PARA WORKAREA; ::. ELSE
A D Q U I R I R DATA;
MOVER PARA WORKAREA; E N D I F I F ON < WORKAREA POSICIONAR STATUS = 1 E N D I F E N D I F I F ON = DEPOIS OU ON = " > " SALTAR PALAVRA CHAVE NO ON I F ON+2 = ":•
A D Q U I R I R HORA ;
MOVER PARA WORKAREA ; ELSE
A D Q U I R I R DATA ;
MOVER PARA WORKAREA ; E N D I F I F ON > WORKAREA P O S I C I O N A STATUS = 1 E N D I F E N D I F I F ON = DURANTE OU ON = . " = "