Escolar Documentos
Profissional Documentos
Cultura Documentos
So Paulo
2007
2
rea de Concentrao:
Sistemas Digitais
Orientador:
Prof. Dr. Jorge Rady de Almeida Junior
So Paulo
2007
3
Este exemplar foi revisado e alterado em relao verso original, sob responsabilidade nica
Assinatura do autor
Assinatura do orientador
FICHA CATALOGRFICA
DEDICATRIA
AGRADECIMENTOS
Ao meu orientador, Prof. Dr. Jorge Rady Almeida Junior, pela orientao dedicada e
pelos valiosos comentrios, crticas e sugestes.
A prof. Dra. Edit Grassiani Lino de Campos, que me ensinou o caminho a ser
trilhado.
A minha famlia, pelo apoio e incentivo constantes, motivaes essenciais para que
eu chegasse fase final.
SUMRIO
Lista de Figuras
Lista de Tabelas
Lista de Abreviaturas
Resumo
Abstract
1 INTRODUO ............................................................................................ 1
1.1 MOTIVAO ........................................................................................... 1
1.2 OBJETIVO ................................................................................................ 8
1.3 ORGANIZAO DO TRABALHO ............................................................ 9
2 REGRAS EM BANCO DE DADOS ATIVOS............................................... 11
2.1 INTRODUO ....................................................................................... 11
2.2 REVISO DO ESTADO DA ARTE SOBRE REGRAS EM SGBDA .......... 11
2.3 REGRAS EM SISTEMAS DE BANCO DE DADOS ATIVOS ................... 14
2.3.1 R ESTRIES DE INTEGRIDADE ................................................................15
2.3.2 D OMNIOS E A SSERES .........................................................................17
2.3.3 F UNES E P ROCEDIMENTOS ...................................................................17
2.3.4 T RIGGERS ..............................................................................................18
2.4 MODELO DE REGRAS EM SBDAS ........................................................ 22
2.4.1 M ODELO DE D EFINIO DE R EGRAS ........................................................ 23
2.4.2 M ODELO DE E XECUO DE R EGRAS ........................................................ 26
2.5 ESTRUTURAS DE ARMAZENAMENTO DE REGRAS ........................... 29
2.5.1 R EPOSITRIO S UGERIDO PELA L INGUAGEM SQL3 .................................... 30
2.5.2 R EPOSITRIO DE UM SBDA .................................................................... 33
2.6 GERNCIA DE GERNCIA .................................................................... 36
2.6.1 O PERAES DE G ERNCIA P ROPOSTA POR SQL3 ..................................... 36
2.6.2 O PERAES DE G ERNCIA DOS SGBDA S ................................................ 36
2.7 CONCLUSES........................................................................................ 39
3 MODELO DE REGRAS .............................................................................. 40
7
LISTA DE ILUSTRAES
1993)................................................................................................ 24
e R4..........................................................................................46
(PAVON, 2005)............................................................................58
regras........................................................................................76
regras........................................................................................81
de regras.......................................................................................82
regras......................................................................................125
PAVON (2005)).......................................................................126
auxlio- evento..........................................................................131
Auxlio-evento.........................................................................132
-evento....................................................................................144
no repositrio de regras...........................................................154
LISTA DE TABELAS
tabela........................................................................................16
A - Ao
BD - Banco de Dados
CA Condio-Ao
CA 1 A 2 Condio-AoPrimria-aoSecundria
ECA - Evento-Condio-Ao
ECA 1 A 2 Evento-Condio-AoPrimria-aoSecundria
RESUMO
ABSTRACT
This work uses an extended rule model which improves the expressiveness of SQL3
language, proposing the use of new variants for the ECA (Event-Condition-Action) rule
model. Nevertheless, the extended model considers only the rule definition and it lacks other
management operations, such as excluding or modifying rules, among others necessary
mechanisms for these new rule types. In this work, a rule management language made of a set
of operations for creating, eliminating and altering rules and its parts is proposed, in order to
obtain greater reuse and maintainability of rules. For this purpose, the extended rule model is
analyzed to identify its limitations and the properties that it supports to be considered in the
rule management language proposed. The result of this analysis is used to define a rule
repository, necessary for storing the rule types proposed. This repository stores a rules set
which must be consistent, as well as data must be consistent in the database. Hence, a
consistency rule set is defined. Besides, a rule management operations set is defined to help to
handle rules and their elements, stored in the rule repository.
CAPTULO 1. INTRODUO
1.1 MOTIVAO
A relevncia da rea de Banco de Dados tem sido comprovada, por meio do grande
volume de aplicaes que utiliza Sistemas Gerenciadores de Banco de Dados (SGBD), como
um dos componentes principais, no desenvolvimento de sistemas computacionais. Este
sucesso se deve ao fato de que estes SGBD consolidam tarefas de armazenamento e
recuperao de grandes volumes de dados eficientemente, aliados segurana e a ambientes
centralizadores. Este sucesso tambm pode ser constatado, pela prpria indstria de software
(por exemplo, Oracle, Informix, DB2), que propicia ambientes complexos, que garantem, de
forma confivel e eficiente, mecanismos que manipulam, eficazmente, esta grande quantidade
de informaes.
A evoluo dos SGBDs, levou adoo de capacidades ativas, adotando a semntica
destas aplicaes (PATON, 1998). Esta semntica, representada por meio de regras, esta
refletida em comportamentos baseados em eventos. O evento algum acontecimento,
relevante, no tempo. A relevncia pode ser medida pelo fato de que alguma ao deve ser
tomada, em funo da ocorrncia deste acontecimento eventos so elementos essenciais na
elaborao de regras. Regras representam sentenas ou restries associadas aos estados ou
processos de um domnio, por exemplo, compra e venda de produtos via Web.
O comit de padronizao da linguagem SQL3, incluiu, em sua ltima verso
(ISO/IEC 9075-2, 1999), (linguagem SQL3 ou linguagem SQL99), a proposta de incluso de
regras ou triggers nos SGBDs, e que por sua vez foi seguida pela indstria de software. A
linguagem SQL3 um padro de fato, utilizado pelos Sistemas Gerenciadores de Banco de
Dados Ativos (SGBDAs) para a definio e manipulao de dados e regras em banco de
dados. Um SGBDA um SGBD, que alm de suas caractersticas prprias, permite a
definio, gerncia e execuo de regras Evento-Condio-Ao (ECA). As regras ECA
caracterizam-se por terem trs componentes: o evento, a condio, associada a um predicado
a ser avaliado, e a ao, que um conjunto de operaes a serem executadas, toda vez que o
predicado seja avaliado como verdadeiro.
A Incluso de regras dentro de um SGBDA leva a uma srie de vantagens, como por
exemplo:
2
Apesar dos aspectos positivos, ainda muito freqente encontrar sistemas com
implementao de regras em meio a seu cdigo, fora do SGBDA. Esta deciso leva a
situaes nas quais regras se tornam redundantes, devido a vrios fatores, como por
exemplo, a falta de documentao atualizada, sobre a especificao da regra, e quando a
manuteno for realizada por diferentes projetistas pode levar a diferentes interpretaes do
processo de negcio. As regras podem ser quase inacessveis, visto que elas podem participar
de complexos fragmentos de cdigos, portanto ocultas no meio de milhares de linhas de
cdigo, em lgicas complexas, dificultando a sua identificao. As regras podem estar
perdidas, ou seja, sistemas so modificados por diferentes desenvolvedores, e muitas vezes,
ao no reaproveitar o cdigo, por razes de desconhecimento da linguagem ou falta de
conhecimento do processo de negcio, isola o fragmento de cdigo analisado e o refaz
segundo o seu entendimento.
Na literatura existem basicamente duas abordagens, desenvolvidas em paralelo, para a
gerncia de regras (CERI; WIDOM, 1990; CERI; MANTHEY, 1993; BERNDTSSON,
1994; MORIARTY, 1998; DIAZ; JAIME, 2000; CERI; COCHRANE; WIDOM, 2000;
ROSS, 2003). Uma delas sob a tica de anlise de negcios e a outra sob a tica de Banco
de Dados. Estas tcnicas so totalmente independentes e desconexas. A gerncia de regras
trata da criao, eliminao e alterao de regras em SGBDA.
Os trabalhos desenvolvidos sob tica de anlise de negcios tm como objetivo
facilitar a atividade de gerncia de regras para os analistas de negcios (VON HALLE, 2002;
VASILECAS; LEBEDYS, 2006) e, portanto, as ferramentas propostas so totalmente
4
regras uma ferramenta que permite verificar se existe inconsistncia no conjunto de regras,
por exemplo, se no ocorrem ciclos infinitos quando um conjunto de regras disparado.
No entanto, a maioria das organizaes que opta por especificar as regras de negcio
nos bancos de dados, enfrenta grandes dificuldades para o gerenciamento dessas regras em
seus sistemas de informao, pois falta uma infra-estrutura apropriada para realizar as
atividades de gerncia de regras, de maneira gil e eficiente. Esta infra-estrutura representa
um conjunto de tabelas necessrias para armazenar as regras e um conjunto de mecanismos
para garantir que as regras armazenadas nestas tabelas mantenham a devida consistncia. Este
mecanismo representado por um conjunto de regras de consistncia e estruturas que atuam
de forma a garantir o emprego destas regras quando solicitadas. A atividade de gerncia tem
como objetivo fornecer recursos para definir, eliminar, alterar e consultar regras ou partes
destas.
Assim como os dados, as regras tambm necessitam contar com um mecanismo de
gerncia eficiente, pois na medida em que se apresentam mudanas no negcio, surge a
necessidade de mudanas tambm nas regras. Tais mudanas se refletem por meio da criao
de novas instncias de regras, eliminao de algumas regras j existentes ou a eliminao e
adio de determinadas partes delas. Atualmente, no possvel alterar partes das regras,
pois nos SGBDs atuais elas so tratadas como um elemento nico. Esta incapacidade ocorre
devido a dois fatores: o primeiro em decorrncia de que os repositrios de regras no esto
preparados para tratar alteraes de partes de regras, e o segundo fator est em que no
existem operaes de gerncia definidas para a alterao de partes de uma regra.
Devido evoluo dos processos de negcio, existe a necessidade de armazenar as
regras em estruturas apropriadas para facilitar o seu gerenciamento, assim como, existem
estruturas prprias para o armazenamento dos dados no banco de dados. Tecnicamente,
fazendo um comparativo com os dados, isso significa que os dados so definidos de forma
independente aos outros objetos de banco de dados, por meio de uma linguagem de definio
de dados, e podem ser consultados ou atualizados por meio de uma linguagem de
manipulao de dados. No entanto, uma regra, somente, pode ser criada ou eliminada, no
existindo a possibilidade de realizar operaes de alterao sobre ela. Alm disso, no
dicionrio de dados, so armazenados os relacionamentos das regras com os dados, deixando
de lado as informaes referentes aos relacionamentos entre as regras. Esta informao
sobre o relacionamento, entre regras, importante porque reflete a prpria lgica do negcio e
tambm, representa o prprio encadeamento entre elas. Portanto, uma lgica de negcio pode
6
ser representada por um encadeamento de regras, porm, nem todo encadeamento representa
uma lgica de negcio, como por exemplo, podem ser encadeamentos ad hoc que levam a
comportamentos indesejados.
Com estruturas apropriadas, atuando como repositrio de regras possvel armazenar
partes das regras, o relacionamento entre regras e delas com os demais objetos do banco de
dados. As regras de um sistema se relacionam entre si, da mesma forma em que os dados
esto inter-relacionados. Elas tambm se relacionam com os dados, visto que muitas regras
expressam restries sobre eles, gerando assim uma complexa rede de associaes, composta
de associaes entre regras e restries destas sobre os dados. Estes aspectos semnticos,
informaes sobre a estrutura de uma regra e seus relacionamentos so a base para elaborar
um ambiente que suporte operaes de gerncia de regras, e como conseqncia, dispor de
um sistema de regras mais flexvel em comparao com os sistemas atualmente oferecidos.
A linguagem SQL3 sugere um conjunto de operaes de gerncia, tanto para dados
quanto para regras. No caso dos dados, existe um conjunto de operaes para a definio e
manipulao deles. A linguagem de definio de dados (LDD) especifica como criar as
estruturas que vo comportar os dados da aplicao (por exemplo, as tabelas) em conjunto
com mecanismos que auxiliam sua organizao interna (por exemplo, a criao de ndices). A
linguagem de manipulao de dados (LMD) especifica a maneira como manipul-los por
meio de operaes de gerncia, tais como insero, excluso, consulta e atualizao de dados
(FORTIER, 1999). Na linguagem SQL3, as operaes para definio e excluso de uma regra
esto embutidas com as operaes de definio dos dados e, alm disso, estas regras so
includas junto ao dicionrio de dados do banco de dados (ISO/IEC 9075-2, 1999). As
regras no tm um tratamento independente dos dados, pois, ao criar uma regra, necessrio
recorrer LDD para encontrar a sintaxe de criao de uma regra. Neste sentido, o SGBDA
no tem sido muito aproveitado para a implementao e gerncia de regras.
Para que as regras alcancem o mesmo grau de importncia que os dados em um
SGBDA, necessrio que elas tenham um tratamento independente dos dados, apoiado por
uma linguagem de gerncia de regras e um repositrio de regras. Entretanto, existem poucos
trabalhos que tratam sobre a gerncia de regras em SGBDAs (DIAZ; PATON; GRAY, 1991;
CERI; MANTHEY, 1993; BERNDTSSON, 1994; MORIARTY, 1998; CERI; COCHRANE;
WIDOM, 2000; ROSS, 2003) apesar da relevncia desta tarefa.
Apesar das vantagens em implementar regras em um SGBDAs, ainda existe a
necessidade de estender o modelo de regras da SQL3, pois este modelo de regras no
7
suficiente para representar a grande maioria dos tipos de regras utilizada para especificar
regras de negcio (PAVON; VIANA; CAMPOS, 2006). Um modelo de regras compreende
um modelo de definio e um modelo de execuo de regras. O modelo de definio
apresentado pela SQL3 a prpria sintaxe da regra ECA, e o modelo de execuo definido
pelo modo como este tipo de regra executado. Para se estender um modelo de regras, por
exemplo, o modelo apresentado pela linguagem SQL3, necessrio identificar e especificar
as caractersticas das regras que se pretende estender. Isto pode ser feito por meio de um
meta-modelo de regras. Existem vrios trabalhos que propem meta-modelos de regras como
extenso da linguagem SQL3 (AMGHAR; MEZIANE; FLORY, 2000; TORRICO;
TANAKA; MOURA, 2000), porm nem todos apresentam uma soluo mais abrangente, que
envolve tanto o meta-modelo quanto o modelo de regras (PAVON, 2005).
O modelo proposto em Pavn estende o modelo de regras apresentado pela SQL3.
Este modelo composto por um conjunto, mais amplo, de tipos de regras que os tipos
apresentados pela linguagem SQL3. Nesta linguagem SQL3, pode-se representar regras do
tipo ECA (evento condio - ao) e, na omisso da condio, do tipo EA (evento - ao).
No modelo proposto, o conjunto de tipos de regras envolve, alm de ECA e EA, os tipos
ECAA (evento - condio - ao primria - ao secundaria), CAA (condio - ao primria
- ao secundria), CA (condio - ao 1) e A (ao). Cada tipo de regra representa uma
semntica diferente. Esta melhora na expressividade da regra implica que possvel expressar
um conjunto de informaes, mais amplo.
Alm de ampliar o conjunto de tipos de regras, a linguagem proposta define um
conjunto mais significativo de informaes que podem ser especificados para cada elemento
da regra. Por exemplo, o evento na linguagem SQL3 pode ser definido em funo de trs
operaes de manipulao de dados, a saber: uma insero, uma atualizao e uma excluso
de dados. Na linguagem proposta, este conjunto ampliado, e considera alm das operaes
descritas, outros tipos de operaes que envolvem a seleo de dados, acesso ao banco de
dados, entre outras. No modelo de regras proposto, portanto, semanticamente mais rico que
o modelo de regra da linguagem SQL3 e, portanto considerado como ponto de partida para a
proposta de um conjunto de operaes de gerncia de regras.
Considerando as desvantagens da linguagem SQL3, e os esforos em melhorar a
expressividade desta linguagem, especificamente no que se refere s operaes de gerncia de
1
O termo ao e ao primria tm o mesmo significado. Usa-se ao primria somente em presena
de uma ao secundria.
8
regras, possvel concluir que ainda existe a necessidade de contar com uma infra-estrutura
propcia para armazenar e gerenciar os principais tipos de regras encontrados nos sistemas de
informao. Portanto, esta infra-estrutura tem como premissa a extenso proposta de tal forma
que nela seja possvel armazenar os relacionamentos existentes entre os diferentes tipos de
regras e delas com os demais objetos do banco de dados. Esta infra-estrutura deve contar com
um repositrio de regras, para armazenar estes novos tipos de regras, com operaes de
gerncia para atuar sobre as regras armazenadas neste repositrio e um conjunto de regras de
consistncia para garantir a consistncia do repositrio de regras. Este trabalho de tese tem
como finalidade de estender a linguagem de gerncia de regras sugerida pelo modelo adotado,
ou seja, oferecer um conjunto de operaes de gerncia, alm das operaes que so sugeridas
neste modelo.
1.2 OBJETIVO
2.1 INTRODUO
eventos gerados dentro ou fora do SGBDA, o que possvel por meio da especificao de
regras ativas. Nesta segunda abordagem, o cdigo fonte do SGBD deve estar disponvel para
que modificaes possam ser realizadas, como por exemplo, SENTINEL
(CHAKRAVARTHY et al., 1994), POSTGRES (STONEBRAKER; HEARST;
POTAMIANOS, 1989; STONEBRAKER, 1992;), STARBURST (WIDON, 1996). A terceira
abordagem implementar, externamente, as funcionalidades ativas sobre um SGBD passivo.
Estas funcionalidades fazem parte de um framework que utiliza as funcionalidades
disponveis do SGBD passivo. Esta estratgia utilizada pelos Sistemas ACOOD 2, SAMOS 3
e TriGS (KAPPEL; RETSCHITZEGGER, 1998).
As duas ltimas abordagens, aproveitam o dicionrio de dados como um meio para o
armazenamento de regras e o fazem, estendendo-o, ou seja, especificando e incorporando
novas estruturas para o armazenamento de regras, junto ao dicionrio de dados. Este mesmo
conceito apresentado pela norma que define a linguagem SQL3 (ISO/IEC 9075-2, 1999),
pela qual o dicionrio de dados contm as estruturas utilizadas para o armazenamento de
triggers. A linguagem SQL3 no define claramente uma infra-estrutura voltada para regras,
tendo como base um repositrio de regras, da mesma forma que existe tal infra-estrutura para
os dados, em um dicionrio de dados. Com uma infra-estrutura para regras, seria possvel
promover as regras ao mesmo nvel dos dados, assim como os dados o so em um SGBDA.
Existem propostas de repositrio de regras voltadas para o modelo relacional (HERBST;
MYRACH, 1995; BUTLERIS; KAPOCIUS, 2002), e para o modelo orientado a objetos
(GEPPERT et al., 1995a; DITTRICH et al., 2000). As propostas para o modelo relacional
sugerem um repositrio de regras externo ao SGBDA. Este trabalho segue a abordagem
relacional porque um modelo consolidado e amplamente utilizado na indstria.
Os repositrios de regras so a base para a especificao das operaes de gerncia de
regras, pois sobre estas estruturas so realizadas inseres, modificaes, excluses e
consultas s regras. Existem poucos estudos, apesar de sua importncia, especificamente
sobre a gerncia de regras em SGBDA (CERI; MANTHEY, 1993; BERNDTSSON, 1994;
WIDOM, 1996; CERI; COCHRANE; WIDOM, 2000; BONATTI et al., 2004), apesar de que,
h preocupaes sobre o comportamento das regras e como prover assistncia a elas. Neste
sentido, existem propostas de ferramentas para a assistncia s bases de regras, como
analisadores de regras (GUISHENG et al., 1996; BARALIS; CERI; PARABOSCHI, 1998;
2
Active Object-Oriented Database System
2
Swiss Active Mechanism-Based Object-Oriented Database System
14
das regras ECA, existem outros mecanismos para especificao de regras que tambm so
armazenadas no dicionrio de dados. Estes mecanismos so restries de integridade, tambm
conhecidas como constraints, definidas sobre tabelas especificadas no banco de dados. Estes
constraints so verificados toda vez que um objeto do tipo tabela definido ou um registro
inserido no banco de dados, e fazem parte da infra-estrutura definida para manipulao e
definio de dados no banco de dados.
- NOT NULL: no permite que uma coluna de uma tabela deixe de conter
valores.
- CHECK: define uma restrio sobre os possveis valores que podem ocorrer em
uma coluna especfica.
Uma restrio identificada por um nome e uma expresso condicional, utilizada para
especificar a restrio de integridade a ser verificada. A violao a esta restrio representa
uma rejeio atualizao do banco de dados que ativou a restrio.
Estas restries so freqentemente utilizadas na especificao de um esquema de
banco de dados, e possuem uma infra-estrutura consolidada para o seu armazenamento e
gerncia.
Basicamente, as operaes de gerncia para a especificao de uma tabela so: criao
(create), alterao (alter) e excluso (drop). Com relao aos elementos da tabela, possvel
alterar, adicionar e excluir uma coluna e seus respectivos tipos de dados, atribuir (set) e
excluir o seu valor default. As restries de valor nico e de integridade referencial podem ser
adicionadas ou excludas da estrutura de uma tabela. Estas operaes de gerncia so
16
Existem tambm rotinas na linguagem SQL3, que podem ser utilizadas para a
especificao de regras, estas rotinas so procedimentos ou funes armazenadas. Uma rotina
um bloco SQL nomeado e, uma vez criado, armazenado no banco de dados. A diferena
na especificao de uma funo com relao a um procedimento est na adio da clusula
Return diante do nome da Funo. A sintaxe utilizada para a especificao de um
procedimento na linguagem SQL3 (ISO/IEC 9075-2, 1999; TRQUER; GERTZ, 2001):
18
2.3.4 Triggers
Cada trigger tem um nome que o identifica, um evento, uma condio e uma ao.
Alm destes trs elementos, fazem parte do trigger informaes sobre seu tempo de ativao e
variveis de transio. O tempo de ativao representa uma relao entre o momento de
ocorrncia do evento e o momento de execuo da regra. A execuo de uma regra representa
a avaliao de sua condio e execuo de sua ao. Existem dois tipos de ativao, antes
(before) ou depois (after). Assim, uma regra pode ser executada antes da execuo da
operao definida como evento ou aps a execuo desta operao. A sintaxe da clusula
evento a seguinte:
AFTER. Portanto, este trigger disparado toda vez que houver a insero de um registro
nesta tabela.
Na condio do trigger avaliado o valor do atributo categoria, se o valor do
atributo em questo A, ento, a ao executada. A ao compreende o cdigo definido
entre os delimitadores BEGIN e END. A ao composta de um bloco SQL, contendo duas
operaes de banco de dados. A primeira operao consiste em uma consulta sobre a tabela
PEDIDO_EMPR, com a finalidade de identificar o cdigo do pedido associado ao cliente que
foi inserido na referida tabela, por meio do evento que disparou esta regra. A segunda
operao composta por uma atualizao de dados sobre a tabela PEDIDO_EMPR. Esta
operao reajusta o valor do emprstimo do cliente em funo de seu salrio anual. As
operaes do tipo insero, excluso e atualizao podem ser o marco inicial para o disparo
de outras regras. No trigger apresentado, existe uma operao de atualizao que ao ser
executada, pode disparar qualquer outro trigger que possua um evento definido com esta
mesma operao de banco de dados sobre a mesma tabela a qual incide o evento. A este
evento define-se como evento de ativao. A este disparo de regras implcito, d-se o nome de
encadeamento de regras ou encadeamento de triggers. Um aspecto no permitido a
existncia de um auto-trigger, ou seja, um trigger que possui, em sua ao, o seu evento de
ativao. Todas as informaes sobre os triggers so armazenadas no dicionrio de dados dos
SGBDAs.
As operaes de gerncia sobre a definio de um trigger, segundo a linguagem
SQL3, so CREATE TRIGGER e DROP TRIGGER. A primeira operao tem a funo de
criar um trigger e armazen-lo no dicionrio de dados, enquanto que a segunda operao
exclui o trigger do dicionrio de dados (TRQUER, 2001). Os triggers so armazenados em
tabelas que formam parte do dicionrio de dados junto com os meta-dados e as tabelas
utilizadas para armazenar dados da aplicao. Na linguagem SQL3 no existe o conceito de
repositrio de regras, ou seja, um conjunto de tabelas utilizadas para armazenar os triggers,
sob o domnio de uma infra-estrutura dedicada ao gerenciamento destas regras.
modelo de execuo determina como ser o processamento das regras. O modelo de regras
varia de um SGBDA comercial para outro, no entanto os conceitos bsicos adotados por eles
esto presentes no modelo de regras da linguagem SQL3. A finalidade de descrever o modelo
de regras da linguagem SQL3 reside no fato de que este modelo guarda uma relao direta
com o repositrio de regras, pois o repositrio armazena as caractersticas ou propriedades das
regras. O repositrio de regras conseqncia do modelo de regras adotado. A seguir, so
detalhados os modelos de definio e execuo utilizados pela linguagem SQL3.
Este padro de regra tem sido seguido por vrios SGBDAs comerciais, com a
denominao de triggers, e cada sintaxe definida em um SGBDA comercial pode sofrer
pequenas modificaes, e isto depende diretamente das caractersticas que foram adotadas
pelo SGBDA para a especificao de uma regra. (PATON; DIAZ, 1999; VADUVA, 1999;
ELMASRI; NAVATHE, 2005).
Cada regra deve ser definida com um nome nico. O evento da regra especifica um
acontecimento que dispara a regra. A condio da regra representa um predicado que deve ser
avaliado. Quando o resultado desta avaliao verdadeiro, ento a ao executada. Quando
este resultado falso, a regra no executada.
- Evento
Um evento definido como uma ocorrncia atmica sobre o banco de dados (DIAZ,
1991). O evento produzido por uma fonte, a saber, um sistema informtico externo ao
SGBDA, o prprio SGBDA, um hardware ou interao do prprio usurio com o banco de
24
Eventos
Eventos Eventos
Primitivos Compostos
Eventos
Explcitos Temporais
de BD
Esta classificao tem sido adotada por vrios outros trabalhos (ACT-NET
CONSORTIUM, 1996; GUERRINI, 1998; KANGSABANIK, 1998; VADUVA, 1999;
BERNDTSSON; MELLIN; HOGBERG, 1999; TORRICO; TANAKA; MOURA, 2000;
BONATTI et al., 2004; PAVON, 2005;), e apresenta os eventos primitivos como eventos de
banco de dados, explcitos e temporais. Os eventos de banco de dados so operaes de
manipulao de dados (CHAKRAVARTHY; MISHRA, 1993) como insert, update e delete,
considerando o modelo relacional. Quando o modelo orientado a objetos, ento as operaes
de eventos so mensagens ou chamadas a mtodos (GEPPERT et al., 1995; GATZIU, 1997).
Os eventos explcitos fazem parte da lgica do negcio que so especificadas na aplicao.
Eventos temporais podem ser definidos dentro de dois domnios, absolutos ou relativos. O
primeiro, evento temporal absoluto, diz respeito definio de um momento especfico no
tempo, como por exemplo, 21 de Maro de 2006 s 16 horas. O segundo, evento temporal
relativo, define uma ocorrncia em relao outra. Uma hora aps a ocorrncia do primeiro
25
- Condio
A condio o componente que expressa o que deve ser avaliado para que a ao da
regra seja executada. semelhana do evento, a condio pode ser simples ou composta
(HERBST; MYRACH, 1995). Uma condio simples representa um predicado atmico,
definida por meio de uma expresso simples (por exemplo: maior que 18 anos) ou uma
consulta SQL. Tambm permitido o uso de variveis de transio, old e new, nas consultas
SQL, para referir-se aos valores antigos ou novos de um atributo. Quando a condio se
compe de vrios predicados simples unidos por operadores booleanos do tipo AND ou OR,
dita composta.
As regras Evento-Ao (EA) so uma variao das regras ECA, tendo como
caracterstica a omisso da condio da regra (PATON; DIAZ, 1999). Desta forma, quando
um evento detectado, sua ao imediatamente executada.
26
- Ao
deteco
do evento
Evento
Detectado
disparo
Regras
Disparadas
encadeamento
de regras. escalonamento
Regras While conj. regras selecionadas. 0
Selecionadas Do
{ selecionar a regra
execuo avaliar a condio
executar a ao
Regras }
Executadas
Figura 2 - Passos envolvidos no processamento de regras (PATON; DIAZ, 1999; VADUVA, 1999).
avaliada e sua ao pode ser executada (PATON; DIAZ, 1999; PAVON, 2005). O
processamento de consulta adotado considera a execuo serial de regras, ou seja, uma regra
por vez disparada e executada. Porm existe outra viso, no qual regras so disparadas
simultaneamente. Neste caso, a condio e a ao das regras so avaliadas e executadas
concorrentemente, o que demanda um controle de concorrncia de regras para que a execuo
de uma regra no interfira na execuo da outra (KANGSABANIK, 1998; CERI; WIDOM,
1992).
Quando ocorre um conjunto de conflito de regras, est-se diante de um conflito quanto
ordem de execuo das regras. Antes de aplicar um critrio de seleo para a execuo das
regras, o SGBDA classifica as regras em dois grupos. As regras com tempo de ativao before
e as regras com tempo de ativao after. O passo seguinte executar as regras do primeiro
grupo, e depois do segundo grupo. Considerando que existem vrias regras, tanto do primeiro
quanto do segundo grupo, ento a fase de escalonamento, no processamento de regras, utiliza
estratgias para solucionar este impasse por meio de critrios de prioridade ou precedncia,
com a finalidade de determinar a ordem de execuo de tais regras.
Para alguns SGBDAs, o critrio de prioridade definido pela datahora de criao da
regra, como o caso do SAMOS (PATON, 1998) e ORACLE (ORACLE CORPORATION,
2003). Existem outros SGBDAs que adotam pesos, definidos pelo usurio, e quando o peso
o mesmo para duas ou mais regras, ento, o critrio passa a ser aleatrio. O processamento de
regras pode se repetir quando uma regra possui, em sua ao, algum evento de ativao, que
leve ao disparo de outras regras, reiniciando este processo. Um modelo para a resoluo de
conflitos uma caracterstica marcante dos SGBDAs, visto que, esta propriedade varia entre
cada um deles. Portanto, um sistema de regras, ao ser especificado em um SGBDA, deve
considerar esta propriedade.
No manifesto, ou documento de intenes, sobre regras em SGBDA (ACT-NET
CONSORTIUM, 1996) apresentado um conjunto de propriedades desejveis que um
modelo de execuo de regras deve possuir, dentre estas, as principais so:
a) o SGBDA deveria implementar um modelo de resoluo de conflito, por exemplo os
que foram apresentados anteriormente;
b) Um SGBDA deveria atender ao conceito de granularidade de processamento de
regras. Esta granularidade refere-se ao grau de relacionamento entre a ocorrncia do
evento e o disparo da regra. Existem basicamente duas dimenses para este
relacionamento, a primeira a granularidade de tupla, na qual a regra disparada para
29
O modelo de regras contm informaes que devem ser atendidas pelo repositrio de
regras. Por exemplo, no repositrio so armazenadas a data e hora de criao do trigger, os
eventos definidos na sua sintaxe, o tempo de ativao deste evento, entre outros. Todo
SGBDA possui um repositrio de regras, para armazenar informaes advindas do modelo de
regras. Nesta seo, so analisados diferentes repositrios de dados: o recomendado pela
linguagem SQL3 e um repositrio comercial.
30
TRIGGERED TRIGGER
(0, N) (1, 1) TRIGGERS (1, 1) (1, N)
UPDATE TABLE
COLUMNS USAGE
(1, 1)
(0, N) (1, N)
(1, N)
(1, 1) (1, 1)
(1, 1) (0, N) TRIGGER (0, N) (1, 1)
COLUMNS COLUMN TABLES
USAGE
(1, N) (1, 1)
utilizadas em um trigger para efeito de anlise neste trabalho. Por exemplo, as demais
informaes que constam da tabela TRIGGER TABLE USAGE e que no esto presentes nesta
tabela so o nome do esquema do banco de dados ao qual pertence a tabela referenciada na
condio e ao e o respectivo trigger. Nesta tabela, inserido um registro para cada tabela
referenciada na condio ou na ao do trigger.
VIEWS TABLES
(1, N)
COLUMNS (1, N)
formado pelo tempo de ativao e sua granularidade de processamento. O evento pode ser
definido por meio das operaes de manipulao de dados (insert, update, delete), operaes
de definio de dados (create, alter, drop) ou operaes de banco de dados (logon, logoff,
startup, shutdown, servererror). O SGBDA Oracle permite especificar eventos compostos, os
quais representam uma combinao de eventos simples, por meio do operador booleano OR.
No permitido conjugar eventos de natureza distinta. Por exemplo, eventos que
correspondem a operaes de manipulao de dados podem ser combinados entre si com o
operador OR, o mesmo ocorre com operaes de definio de dados ou operaes de banco de
dados.
As informaes armazenadas no atributo trigger_type esto associadas s informaes
do atributo triggering_event, por exemplo, um trigger pode ser disparado mais de uma vez
(for each row) quando as operaes definidas no evento so operaes de manipulao de
dados. O atributo status armazena informaes sobre o estado do trigger, e por meio de
operaes de gerncia, um usurio pode habilitar ou desabilit-lo. A condio e a ao so
armazenadas integralmente nos atributos, when_clause e trigger_body, respectivamente,
limitado apenas pela capacidade do tipo de dado especificado para o atributo; a condio pode
ter no mximo 4kbytes e a ao um tamanho mximo de 32kbytes. A tabela 2.7 apresenta as
informaes sobre as colunas das tabelas utilizadas no trigger.
Nesta tabela inserido um registro para cada atributo especificado no trigger. Quando
se trata de um evento definido com update, as colunas deste evento so identificadas por meio
do atributo column_list. A complexidade do repositrio funo do modelo de linguagem
definido para a especificao do trigger. Um exemplo de informao, que no contempla o
dicionrio de dados do Oracle, relacionamento entre regras. Ela importante para identificar
quais regras podem ser disparadas por outras regras, sem a necessidade de realizar uma
anlise aprofundada sobre as tabelas do dicionrio de dados.
36
O comando create rule usado para definir uma nova regra. Cada regra definida
sobre uma tabela. Os colchetes indicam clusulas que so opcionais. A clusula when
especifica um ou mais eventos, que podem ser operaes de manipulaes de dados (insert,
update e delete). As clusulas precedes e follows so usadas para especificar ordem de
prioridade entre regras. O comando alter rule segue a mesma sintaxe para a criao de regra,
na qual a clusula nopriority usada para remover a prioridade da regra. Quando a clusula
4
Prottipo extensvel relacional SGBDA desenvolvido pela IBM
38
when necessita ser alterada, na sintaxe de criao da regra, ento necessrio exclu-la e cri-
la novamente. Para excluir uma regra, usado o seguinte comando:
Drop rule <nome da regra> on <nome da tabela>
Cada regra pode estar em qualquer grupo de regras e cada conjunto de regras pode
conter qualquer nmero de regras. Para excluir um conjunto de regras, necessrio utilizar o
seguinte comando:
Drop ruleset <nome do conjunto de regras>
Apesar de que a linguagem de regras proposta pelo Starburst apresenta mais opes
para o gerenciamento de regras, este SGBDA no implementa o conceito de granularidade de
regras por linha e nem por conjunto (WIDOM, 1996; PATON, 1998), conceito implementado
tanto na linguagem SQL3, quanto nos SGBDAs comerciais.
39
2.7 CONCLUSES
3.1 INTRODUO
Disparo (1,N)
implcito Regras Tipo 1
(1,1) (1,1) (1,1)
(1,N)
Evento
(0,N) (0,N)
(0,1)
Condio
(1,1)
Evento Evento (0,N)
Temporal de BD contm Ao_Primria (A1)
(0,1)
(0,N)
contm Ao_Secundria (A2)
Uma caracterstica deste tipo 1 de regra que o diferencia das regras do tipo 2 o fato
de que um evento pode disparar uma ou mais regras e que uma regra pode conter mais de um
evento de manipulao de dados. Uma regra do tipo 1 no pode disparar a si mesma, ou seja,
considerando que uma regra deste tipo tenha em sua definio um evento de banco de dados e
da mesma forma, em sua ao contenha uma operao idntica operao de banco de dados,
43
Disparo (1,1)
explcito Regras Tipo 2
(1,1) (1,1) (1,1)
(1,1)
Evento definido pelo
usurio
(0,N) (0,N)
(0,1)
Condio
(1,1)
contm
(0,N)
Ao Primria (A1)
(0,1)
(0,N)
contm Ao Secundria (A2)
idRegra
formada_por
Entidade (0,N) referencia
ordem
(0,N) (0,N)
(0,N)
Disparo
(1,N)
Regras
(1,1) (1,1) (1,1)
(1,N)
Evento
(0,N) (0,N)
(0,1)
Evento Condio
(1,1)
de BD (0,N)
Evento contm Ao_Primria (A1)
Temporal (0,1)
(0,N)
contm Ao_Secundria (A2)
Evento definido
pelo usurio
Regras podem conter, em sua ao, operaes de banco de dados que podem
desencadear o disparo de outras regras, promovendo um encadeamento de regras. Um
encadeamento de regras implica que uma regra pode disparar outras regras automaticamente,
sem a interveno do usurio. Para isto, basta que um evento, sob a forma de uma operao de
banco de dados ou a operao Fire seja detectado pelo SGBDA. O relacionamento contm
indica a possibilidade de existncia destas operaes de banco de dados ou Fire, na ao,
primria ou secundria, da regra. Quando um destes eventos dispara um conjunto de regras,
simultaneamente, necessria uma poltica para identificar qual destas regras deve ser
disparada em primeiro lugar. Doravante, este conjunto de regras ser chamado de conjunto de
regras simultneas. No final desta seo apresentado um exemplo sobre este conjunto de
regras simultneas.
45
Uma regra pode ser formada por outras regras e este relacionamento representado
pela associao formada_por, cujos atributos so: idRegra e ordem. Estes atributos so
utilizados para armazenar informaes sobre a ordem de precedncia das regras, conforme
exemplificado na regra R1 da Figura 8, na qual a regra R1 do tipo estmulo-resposta e as
demais regras, R2, R3 e R4 so do tipo operacional ou derivao..
Regra R1
Fire R2
Fire R3
Fire R4
que as regras R7, R8, e R9 sejam disparadas em funo desta operao de banco de dados,
ento, as regras sero disparadas simultaneamente. Portanto, a regra que contiver a data mais
antiga ser dispara em primeiro lugar, e assim sucessivamente. Levando em conta que a regra
R8 seja modificada, isto , criada novamente, e novamente compilada, como parte do
requisito de negcio, ento, esta regra, recebe um novo valor de tempo de criao, fazendo
com que a ordem de execuo das regras varie (R8, R7 e R9), levando a uma seqncia de
execuo diferente em comparao com a seqncia anterior (R7, R8 e R9). A ordem de
execuo assume que a datahora mais antiga executada em primeiro lugar.
Esta nova seqncia deixa de corresponder ao contexto do negcio, para o qual foi
especificado. Quando o conjunto de regras tende a ser grande, a manuteno da lgica do
negcio torna-se uma tarefa mais complexa de ser mantida. Uma forma de minimizar esta
complexidade empregar a operao Fire. O uso desta operao facilita a gerncia destas
regras, porque elas so executadas, explicitamente, pela operao de disparo, desvinculando o
timestamp de sua execuo e, como conseqncia, facilitando a manuteno destas regras. Ao
mesmo tempo possvel especificar contextos de negcios diferentes, para um mesmo
conjunto de regras. Por exemplo, seja o contexto da regra R5 a seguir:
E Regra R7
Regra R6
C Regra R5
E
A Fire R3
C
Fire R2
A E Regra R8
Fire R4
A
E Regra R9
b)
A
a)
diferena da regra R5 para a regra R6 est em que a regra R5 contm um conjunto de regras
(R3, R2 e R4) e a R6 contm um evento que dispara um conjunto de regras (regras
simultneas) nos quais seus eventos so iguais ao evento definido na ao de R6.
a) Criao de Regras
Toda regra armazenada no dicionrio de dados nica. Seu nome definido por meio
da expresso:
b) Eventos
A regra, uma vez que definida e armazenada no banco de dados, disparada em
funo da ocorrncia de seu evento. Este evento tem associado um tempo de ativao que por
sua vez atribudo apenas s regras do tipo 1, visto que, elas exigem a especificao deste
evento em sua definio.
Na linguagem SQL3, este tempo de ativao definido pelas palavras-chave BEFORE
e AFTER, e so utilizadas conforme o tipo de evento definido em sua sintaxe. O uso de
BEFORE ocorre quando desejado que a regra seja disparada antes da execuo da operao
definida como evento. O uso de AFTER significa que a regra foi disparada depois da
execuo da operao definida como evento. Na linguagem proposta, foi adicionada uma
outra palavra-chave ON, em funo da adio de eventos de sistemas (evento-sistema). Estes
eventos fazem parte dos eventos de banco de dados (evento-BD) e so:
c) Variveis de Transio
A especificao de um evento pode incluir tambm o conceito de variveis de
transio e granularidade da regra. As variveis de transio so utilizadas para se ter acesso
aos valores de cada tupla que so afetados pelas operaes de manipulao de dados. As
variveis de transio utilizadas pela linguagem SQL3 so old e new. A varivel old
utilizada para ter acesso ao valor prvio do atributo antes de sua atualizao no registro. A
varivel new utilizada para o acesso ao valor futuro do atributo antes de sua atualizao no
registro. A extenso proposta sugere uma nova varivel de transio, definida como current.
Esta varivel de transio utilizada para se ter acesso ao valor atual do atributo. A varivel
current utilizada em conjunto com a operao de seleo, e as demais variveis de transio
(new, old) so utilizadas com as operaes de atualizao, excluso e insero. O exemplo a
seguir utiliza a varivel de transio current.
Neste exemplo, a regra "Acesso_Sal_Chefe" tem acesso aos salrios dos empregados,
e na condio desta regra verificado se este salrio pertence aos empregados que tenham o
cargo de chefe.
A granularidade da regra especificada para as operaes de manipulao de dados.
Esta granularidade indica o grau de relacionamento entre a ocorrncia do evento e o disparo
da regra. Na linguagem de regras proposta, assume-se a mesma granularidade sugerida pela
linguagem SQL3.
d) Condies
A condio da regra especificada pela clusula WHEN, dentro da sintaxe geral de
definio de regra. A condio um componente opcional para os dois padres de regras. A
avaliao da condio, pelo SGBDA, expressa por um valor booleano (verdadeiro ou falso),
55
e) Aes
Na linguagem de regras proposta, existem dois tipos de aes, a saber: uma ao
primria, obrigatria e uma ao secundria, condicionada existncia da clusula WHEN da
regra, ou seja, uma regra que no possui condio, ento possui somente uma ao, definida
como primria. Isto vlido para os dois padres de regras. A ao primria definida pela
clusula DO e a ao secundria pela clusula ELSEDO.
A ao primria executada toda vez que a condio avaliada como verdadeira, caso
contrrio, executa-se a ao secundria. Para os tipos de regras constitudos de uma nica
ao, ou ao primria, o resultado da avaliao da condio, quando falso, no muda o
estado do banco de dados.
Os elementos permitidos na especificao de uma ao so: uma sentena
procedimental SQL, uma chamada a procedimentos, um bloco SQL ou uma operao de
gerencia de regra.
56
A regra acima, do tipo EA (evento-ao) disparada toda vez que uma operao de
banco de dados update sobre a tabela PRODUTO ocorrer. Aps a atualizao do produto no
estoque, disparada a sua ao, cuja finalidade chamar o procedimento
Verificar_Quant_min. Este procedimento recebe como parmetro o cdigo do produto e sua
quantidade. Quando o estoque menor ou igual ao estoque mnimo, alguma ao deve ser
tomada.
No exemplo a seguir, apresenta-se a regra R33 (PAVON, 2005), do tipo CAA2.
Evento temporal
Execuo das regras
Disparo da regra Disparo das regras com tempo de
indicada no que contm a ativao
evento.definido pelo especificao desse
usurio (Tipo 2) evento.
(Tipo 1)
Execuo da operao
de BD, definida como
evento
Execuo das regras.
(Tipo 2) Execuo da regra.
(Tipo 1)
Execuo das regras
com tempo de
ativao AFTER.
(FORTIER, 1999; ISO/IEC 9075-2, 1999; TURKER; GERTZ, 2001);. Logo a seguir, so
executadas as regras do primeiro grupo, seguindo o critrio de antiguidade destas regras, dado
pelo seu tempo de criao, ou seja, data e hora em que foram criadas. Logo a seguir,
executam-se as regras do segundo grupo, seguindo o mesmo critrio apresentado
anteriormente. Esta caracterstica de resoluo de conflito implementada nos SGBDA
comerciais, como Oracle e PostgreSQL.
Na Figura 11 ilustrado uma regra definida como R6, do tipo EA, que possui em sua
ao uma operao de insero sobre uma tabela do banco de dados. Esta operao a mesma
operao definida no evento das regras R7, R8 e R9.
b) END;
EMP (alnea a). Quando este evento ocorre, todas estas regras so disparadas ao mesmo
tempo. A execuo destas regras, dentro do conjunto de regras disparadas simultaneamente,
depende do critrio de execuo adotado. Para a linguagem SQL3 a referncia o timestamp.
Para solucionar este problema, estas trs regras so transformadas em uma nica regra
R6, na qual a ao desta regra o conjunto formado pelas trs regras. Desta forma, mantm-se
a mesma caracterstica do evento e tempo de ativao para todo o conjunto, e define-se uma
ordem de execuo para elas, de forma explcita, independente do tempo de criao das
mesmas. Esta mesma soluo pode ser aplicada para eventos temporais.
Alm do conflito de regras, existem outros conceitos sobre o processamento de regras,
a saber: o acoplamento de regras e a granularidade de regras. Quando uma regra disparada, e
o seu evento instanciado, ento, imediatamente a sua condio avaliada e logo que esta
atividade terminada, inicia-se a execuo da ao da regra. A este comportamento, em que
as atividades de instanciao do evento e avaliao da condio (quando existir) ocorre de
forma imediata, ou at mesmo, entre a avaliao da condio e execuo da regra tambm
ocorre de forma imediata, d-se o nome de acoplamento imediato. O acoplamento de regras
pode ocorrer para os pares de componentes da regra (evento-condio e condio-ao). Na
linguagem SQL3, tambm sugerido este tipo de modo de acoplamento.
A granularidade de processamento das regras pode ocorrer em nvel de instncia ou
em nvel de conjunto. Quando em nvel de instncia, a condio verificada para cada
registro da tabela afetada e a ao disparada para cada registro. Quando em nvel de
conjunto, a condio verificada uma nica vez e a ao disparada uma nica vez, tambm.
A linguagem SQL3 assume as duas propostas anteriores.
3.5 CONCLUSES
4.1 INTRODUO
As caractersticas das regras relevantes para este trabalho e que so consideradas para
elaborao do repositrio de regras so identificadas por meio de uma anlise realizada sobre
o modelo de regras adotado, e que foi descrito no captulo anterior. Estas caractersticas so
agrupadas em funo de cada elemento da regra. Portanto, so apresentadas as caractersticas
relativas ao evento, depois as caractersticas associadas condio e finalmente as
caractersticas relacionadas ao da regra. Alm das caractersticas associadas a cada
elemento da regra, possvel identificar caractersticas que dizem respeito regra, tais como
o tempo de ativao e as variveis de transio.
Alm de apresentar tais caractersticas, tambm so identificadas as caractersticas
pertencentes ao modelo de regras da linguagem SQL3, com a finalidade de ilustrar a evoluo
destas caractersticas no modelo de regras adotado. Esta evoluo importante porque a
proposta deste trabalho dar seguimento a esta evoluo, propondo uma extenso da
linguagem de gerncia de regras. O ponto de partida o modelo de definio de regras
adotado. Para evidenciar as diferenas apresentadas pela linguagem SQL3 e a proposta
adotada, realiza-se uma anlise pontual de cada elemento da regra e, para cada um deles, so
tomadas como base as caractersticas da linguagem SQL3 e, em negrito, so adicionadas as
caractersticas da linguagem proposta. Portanto, o que est em negrito so extenses propostas
sobre a linguagem SQL3. Por exemplo, o tempo de ativao (BEFORE e AFTER) est
presente em ambas as linguagens e no deve aparece em negrito, porm o tempo de ativao
(ON), que foi sugerido na linguagem proposta, apresentado em negrito.
Regra
A regra constituda das seguintes informaes:
Evento
O metamodelo de regras, especificado para as regras do tipo 1, apresentado na Figura
6, considera que um evento, obrigatoriamente, deve estar associado a uma ou mais regras, e
que uma regra deve, obrigatoriamente, estar associada a um ou mais eventos. Esta
obrigatoriedade justificada pelo fato de que, na linguagem SQL3, o evento definido em
conjunto com a definio da regra. Este evento representa uma operao de banco de dados,
seja ela uma operao de update ou delete, insert ou select. Da mesma forma, incluem-se
66
tambm as operaes logon, logoff, e eventos de tempo, caracterizados por uma ocorrncia
absoluta em um determinado momento no tempo, definido pela data/hora do sistema.
Um evento pode ser definido em funo de outros eventos, de tal forma que, em uma
mesma sentena possvel descrever mais de uma operao, seja ela de banco de dados e
meta-dados. A este evento, composto por dois ou mais eventos, definido como evento
composto. Este conceito foi apresentado e discutido amplamente em Chakravarthy e Mishra
(1993), Chakravarthy et al. (1994), Geppert, Gatziu e Dittrich (1995), Paton (1998) e Vaduva
(1999).
As regras do tipo 2, cuja base constituda pelos elementos condio e ao, conforme
apresentado na Figura 6, so disparadas em funo da operao Fire. Esta operao tem a
responsabilidade de disparar a regra, a ela associada, sempre que for solicitada. A diferena
entre esta operao, Fire, e as demais operaes, utilizadas no evento de banco de dados,
que, para o primeiro caso, a regra disparada por meio de uma declarao explcita, e para o
segundo caso, o disparo ocorre de forma implcita, ou seja, existe disparo toda vez que duas
situaes acontecerem, a primeira situao a ocorrncia do evento, em uma regra hospedeira
(regra que possui a definio da operao de banco de dados em uma de suas aes), e a
segunda situao a existncia de uma regra que possua um evento especificado por meio da
mesma operao. Neste sentido, o SGBDA deve contar com um mecanismo que detecte a
presena do evento e dispare as regras que possuam o evento ocorrido.
Eventos Temporais
67
Condio
A condio composta de sentenas SQL conectadas por operadores {AND e OR}.
Alm dos operadores apresentados, considerado tambm o operador unrio {NOT}. Este
operador utilizado como forma de negao da sentena que definida na condio.
Ao
A ao pode conter sentenas procedimentais SQL que incluem operaes de banco de
dados, operaes para chamadas a procedimentos (CALL (nome_procedimentos) e funes,
operaes para chamadas a outras regras (Fire (nome_regra)) e blocos SQL).
Composio de Regras
A composio de regras ocorre quando uma regra contm, explicitamente, outras regras.
A composio de regras tem a finalidade de solucionar o problema gerado pelo disparo de
mltiplas regras, disparadas pelo mesmo evento. Quando regras so disparadas pelo
mesmo evento, gera-se um conjunto de regras que deve ser executado em funo de algum
critrio. A linguagem SQL3 sugere, como critrio para a ordem de execuo destas regras,
o uso da funo data/hora de criao delas. O conceito de composio de regras sugere o
uso de uma operao de gerncia, Fire, para disparar as regras definidas sob o mesmo
evento. Desta forma o resultado uma execuo controlada de regras.
O <cdigo da regra> ou <Id_regra> utilizado para identificar uma nica regra dentre
todas as regras armazenadas na tabela Regras. O <nome da regra> contm uma descrio que
representa a regra no contexto do negcio, do ponto de vista do usurio. Este nome,
geralmente, o mesmo utilizado quando de sua especificao no negcio. O <autor> uma
informao adicional que pode ser utilizada para armazenar informaes sobre a pessoa
responsvel pela regra, seja este, quem a especificou no sistema ou o idealizador da mesma. A
<data de criao> o momento, no tempo, em que esta regra criada, ou seja, seu
dia/ms/ano::hora/min/seg. O <status> representa um estado, habilitada ou desabilitada. O
status habilitado representa um estado em que a regra pode se encontrar no repositrio de
regras, ou seja, este status habilita a regra ser disparada, uma vez que ocorra um evento. O
status Desabilitado representa um estado em que a regra pode assumir em um dado
momento, no repositrio de regras, sendo que este status implica que a regra no pode ser
disparada, a no ser que ela mude de status.
O <tipo de regra> identifica o tipo de regra que foi armazenada no repositrio. Este
atributo recebe somente valores que pertencem ao seu domnio, definido pelos valores
(ECAA, ECA; EA; CAA; CA; A). O <tempo de ativao> representa o momento em que a
regra ser executada, em funo da ocorrncia do evento. O atributo <tempo_ativ> recebe
somente valores definidos em seu domnio. Neste caso, os valores so (ON, BEFORE,
AFTER). Quando no for especificado na definio da regra, o tempo de ativao atribudo
70
de forma automtica. O termo automtico implica que o sistema gerenciador assume um valor
previamente definido como valor padro. A granularidade da regra representa o nmero de
vezes que a regra disparada em funo do evento. Os valores pertencentes ao domnio do
atributo <granularidade> so (ROW, STATEMENT).
evento.
Estes dois atributos, em conjunto, definem uma ocorrncia de uma regra com seu
respectivo evento. Na Figura 12 apresentado o diagrama entidade-relacionamento referente
ao relacionamento entre a entidade REGRA e a entidade EVENTO.
(1,N)
regra_ev
EVENTO
(1,N)
REGRA
(1,N) REGRA
(1,N)
inclui inclui
(0,1) (1,2)
CONDIO AO
atribuio de uma condio a uma regra. A primeira situao ocorre quando a regra apresenta
variveis de transio, e estas variveis devem ser especificadas na condio, sejam elas,
variveis locais ou globais. A segunda situao ocorre quando da atribuio de uma condio,
que possui variveis locais ou globais, a uma regra. Em ambos os casos, fica a cargo do
analista efetuar os devidos ajustes. A Data_ltima_modificao um atributo utilizado para
armazenar informaes sobre o momento em que a condio foi modificada por alguma
operao de gerncia associada modificao da condio da regra.
4.3.5 Tabela Ao
Uma regra possui obrigatoriamente uma ao, porm existe a possibilidade de que
uma outra ao seja definida em funo do tipo de regra especificado. A ao primria
obrigatria, a outra ao, definida como ao secundria opcional. Ambas as aes so
armazenadas na tabela AO. Os atributos desta tabela, AO, so:
Regras que apresentam operaes de banco de dados podem disparar outras regras,
sempre que exista alguma regra cuja operao definida no evento a mesma operao
definida na ao da regra. Identificar a existncia destas operaes na ao, por meio de
operaes de gerncia, um meio eficaz de identificar encadeamentos de regras.
Existem dois tipos de encadeamentos: encadeamentos controlados e encadeamentos
no controlados. Os primeiros ocorrem em funo da especificao do negcio, na qual o
analista define um conjunto de regras de negcio por meio de um encadeamento. O resultado
final da execuo deste conjunto de regras encadeadas um resultado significativo e
observvel.
O segundo tipo de encadeamento ocorre em funo de regras que so armazenadas no
repositrio de regras e que so disparadas em funo da execuo de outras regras, este
encadeamento no est associado aos processos de negcio, mas sim a execues que
ocorrem, em funo de outros processos. Este tipo de encadeamento de regras pode levar
execuo infinita de um conjunto de regras. Para identificar o encadeamento de regras,
criada uma tabela AO_EV que armazena as operaes de banco de dados existentes na
ao de uma regra e tambm armazena a identificao dos eventos que possuem estas mesmas
operaes.
Na Figura 14 ilustrada a tabela AO_EV
(0,N) (0,N)
AO Ao_Ev EVENTO
Cdigo da ao ou Id_ ao
Id_evento
O elemento ao de uma regra pode conter operaes do tipo Fire. Esta operao
tem a funo de executar, explicitamente, regras do tipo condio-ao. Isto implica que
uma ao pode ser composta por uma ou mais definies explcitas de disparo de regras. O
fato de que, uma operao de disparo definida explicitamente sobre uma regra, na ao de
uma regra, considera-se, ento, que existe uma composio de regras. Assim, uma regra pode
ser composta por mais de uma regra e cada uma destas regras pode fazer parte de mais de uma
ao de uma regra. Alm disso, cada composio, por sua vez, pode conter outras regras do
tipo 1.
Este encadeamento de regras materializado por meio de uma tabela que contm
atributos que identificam as regras e suas respectivas prioridades de execuo. Esta tabela
definida como REGRA_COMP ou REGRA-COMPOSIO. Os atributos desta tabela so:
Cdigo da regra ou Id_regra
76
Cdigo da ao ou Id_ ao
Composta_de
Prioridade
Regra_composio
REGRA
Coluna_Sistema
(0,N) (1,N)
ev_col
tem
(0,N)
(1,N)
regra_ev (0,N)
EVENTO referncia
(0,N)
(0,1) (1,1)
Tabela_Sistema
REGRA
referncia
(0,1)
Usuario_Sistema
Tabela_Sistema
(0, N) (0, N)
(0,N)
ao_tab
AO
(0,N)
CONDIO condio_tab
deste repositrio e logo a seguir, um conjunto de meta-regras, utilizadas para manter sua
consistncia. As tabelas do repositrio de regras so apresentadas a seguir. So descritas
apenas as tabelas relevantes para o estudo de validao do repositrio, no esquema lgico a
seguir, visto que as demais tabelas que fazem parte do dicionrio de dados, do banco de
dados, no fazem parte da anlise deste trabalho. A chave primria est sublinhada e chaves
estrangeiras esto em itlico
REGRA (Id_regra, nome, autor, dataHora_criao, status, tipo_regra,
tempo_ativao, granularidade)
EVENTO (Id_evento, operao, tipo_evento, Id_usuario, datahora, Id_tabela)
REGRA_EVENTO (Id_Regra, Id_evento)
EV_COL (Id_Regra, Id_evento, Id_coluna)
CONDIO (Id_regra, Id_condio, definio_condio, data_ultima_modif)
CONDIO_TAB (Id_regra, Id_condio, Id_tabela)
AO (Id_regra, Id_ao, categoria, data_ultima_modif, definio_ao)
AO_TAB (Id_regra, Id_ao, Id_tabela)
AO_EV (Id_regra, Id_ao, Id_evento)
REGRA_COMP (Id_regra, Id_ao, composta_de, prioridade)
Coluna_Sistema
(0,N) (1,N)
ev_col
tem
(0,N)
(1,N)
regra_ev (0,N)
EVENTO referncia
(0,N) (0,N)
inclui inclui
(0,1)
Usuario_Sistema
(0,1) (1,2)
(0,N)
CONDIO AO
(0,N) (0,N)
ao_tab
condio_tab
Inserir dados na
tabela REGRA
No Inserir dados na
Existe evento
cadastrado? tabela EVENTO
Sim
Inserir dados em
REGRA_EV
No
No
No
CONDIO Sim Inserir dados na
Inserir dados na possui tabelas? tabela
tabela AO CONDIO TAB
Sim
AO possui Inserir dados na Inserir dados em
operao BD? tabela AO_TAB AO_EV
No
Sim
AO possui Inserir dados na
FIRE? tabela
REGRA COMP
No
Meta-Regra 5 Somente as regras que possuem o elemento condio podem ter uma
ao secundria.
Meta-Regra 6 Somente as regras que tem por evento a operao SELECT podem
utilizar a varivel de transio CURRENT
Meta-Regra 7 Toda vez que uma regra for disparada por mais de um evento, estes
eventos devem ser do mesmo tipo.
Uma vez que o professor realizou a atualizao da reserva, uma mensagem enviada a
este, sinalizando que est tudo ok. Caso contrrio, o professor notificado de que a reserva
no foi possvel e um histrico gravado deixando constncia de que o professor foi
notificado da inviabilidade de atualizao da atualizao de reserva.
Na Figura 21 ilustrada a regra R8. Esta regra apresenta um conjunto de variveis
globais definidas pelos comandos DECLARE. Estas variveis so utilizadas pela regra R12,
contida na ao primria de R8.
86
/*variveis globais*/
DECLARE v_codprof numeric;
DECLARE v_codReserva numeric;
DECLARE v_codEquip varchar2(10); /* Estas variveis so utilizadas tambm
DECLARE v_quant numeric; dentro da regra R12 */
DECLARE v_dataRes date;
DECLARE v_horaIni date;
DECLARE v_horaFim date;
CREATE RULE R8
AFTER INSERT OR UPDATE OF cod_reserva ON RESERVA
FOR EACH ROW
WHEN ((SELECT statusRes
FROM RESERVA
WHERE codReserva = :v_codReserva) = 'ATIVA')
DO
BEGIN
END;
ELSEDO
BEGIN
UPDATE CLIENTE
SET notificao = 'Sim'
WHERE codprof = v_codProf;
END;
inseridos no primeiro registro, da tabela REGRA, ilustrada na Tabela 4.2. Alm destes dados,
o SGBDA identifica o autor da regra, assume o tempo de criao da regra e atribui o status de
habilitada. O mesmo ocorrendo com a regra R12, por meio da qual inserido o segundo
registro. Como a regra R12 to tipo ao, ela no possui granularidade e tempo de ativao.
A prxima etapa a insero dos eventos, das regras R8 e R12. Na Tabela 4.3 so
especificados os atributos da Tabela EVENTO. O atributo <Id_usuario> utilizado para
armazenar a identificao do usurio, definido em um evento do tipo evento sistema. O
atributo <Data_hora> utilizado para armazenar a data e/ou hora para os eventos do tipo
evento temporal. A regra R8 possui dois eventos do tipo evento dados, a saber: update reserva
e insert reserva. Cada evento armazenado em um registro. Alm destes eventos, na ao
primria desta regra, definido um evento do tipo Fire. Este evento armazenado em outro
registro da tabela EVENTO.
Tabela 4.3 - Tabela EVENTO
ID_EVENTO OPERACAO TIPO_EVENTO ID_USUARIO DATA_HORA ID_TABELA
EV_8 UPDATE BANCO DADOS RESERVA
EV_8a INSERT BANCO DADOS RESERVA
EV_12 FIRE DEF_USUARIO
Quando o evento possui uma operao do tipo update ou select, que envolva atributos,
ento armazena-se estes atributos, associados a esse evento, na tabela EV_COL, conforme
ilustrado na Tabela 4.5.
Um evento pode estar associado a mais de um atributo e um atributo pode fazer parte
em mais de um evento.
Considere que exista uma outra regra, R99, do tipo EA, cujo evento insert reserva.
Esta regra ao ser armazenada no repositrio de regra, constituiria mais um registro na tabela
REGRA, conforme ilustrado na Tabela 4.6.
Este evento igual a um dos eventos, definidos na tabela EVENTO. Neste caso, por
um lado, no necessrio inserir outro registro na tabela EVENTO, visto que esta informao
j existe, por outro lado, um evento pode fazer referncia a mais de uma regra da mesma
forma que uma regra pode estar associada a mais de um evento. O relacionamento da regra
R99 com o evento inserir reserva, ilustrado na tabela 4.7, por meio da adio de outro
registro.
89
ID_REGRA ID_EVENTO
R8 EV_8
R8 EV_8a
R12 EV_12
R99 EV_8a
Existem situaes nas quais a ao de uma regra contm operaes de banco de dados
que so as mesmas utilizadas em eventos de outras tabelas. Para identificar a ocorrncia
destes casos, estas informaes so armazenadas na tabela AO_EV. A finalidade desta
tabela identificar as regras que podem disparar outras regras, por meio de operaes de
banco de dados. Considere que a regra R99, do tipo EA, possui em sua ao uma operao de
banco de dados do tipo:
UPDATE RESERVA
SET cod_reserva = :v_cod_reserva;
Esta operao a mesma operao definida na ao da regra R8. Portanto a regra R99,
a ser executada, dispara a regra R8. Este rastreamento apresentado na Tabela 4.12.
As regras, R1, R2, R3 e R5, deveriam ser armazenadas da mesma forma que as regras
R8, R12 e R99 nas tabelas do repositrio de regras. Elas no foram armazenadas porque o
objetivo utiliz-las, apenas, como referncia, dentro da regra R12. Portanto, quando o
repositrio estiver em operao, a tabela REGRA deveria conter sete regras, a saber: R1, R2,
R3, R5, R8, R12 e R99.
4.6 CONCLUSES
Neste captulo foram identificadas as caractersticas dos tipos de regras que sero
adotados na linguagem de gerncia de regras. Estas caractersticas formam a base do modelo
de definio de regras adotado. Alm desta base, so reutilizados os conceitos sugeridos na
prpria linguagem SQL3 de regras. Este conjunto de caractersticas resultante, o ponto
inicial para a elaborao de um repositrio de regras. Este repositrio composto de um
conjunto de estruturas inter-relacionadas que so utilizadas para armazenar as regras, o
relacionamento entre elas e o relacionamento delas com os demais objetos do banco de dados,
com tabelas e atributos.
Neste trabalho so apresentadas e discutidas associaes implcitas e explicitas entre
regras. As associaes explcitas ocorrem em funo da composio de regras. Esta
composio representada por meio da declarao da operao Fire na ao da regra. A
associao implcita, representada por meio da definio de operaes de banco de dados,
na ao da regra. Quando estas operaes so executadas pelo SGBDA, elas podem inicializar
um encadeamento de regras. A implementao de regras em um SGBDA, pode levar a
estados no controlveis, como por exemplo, conjunto de regras que se disparam entre si,
gerando um ciclo infinito de execuo de regras. Tambm pode levar a estados inconsistentes
do banco de dados. Esta inconsistncia fruto de execues de conjuntos de regras, no
92
5.1 INTRODUO
regras que esto armazenadas no repositrio de regras. Sendo assim, fortemente encorajador
oferecer ao usurio um conjunto de mecanismos que no altere a complexidade ou adicione
maior grau de complexidade do que ele est acostumado a lidar. Esta complexidade inerente
ao modelo de regras adotado pelos SGBDAs. Esta uma das razes para estender a
Linguagem SQL3, visto que amplamente utilizada, tanto na indstria quanto no meio
acadmico, em detrimento a sugerir novas formas de operaes de gerncia de regras. O
conjunto de operaes de gerncia sugerido leva em considerao esta necessidade, a saber:
um conjunto de operaes para a manipulao de regras e suas partes, que esteja em
conformidade com a proposta da Linguagem SQL3 e que tenha aderncia s sintaxes
atualmente apresentadas pelo modelo de regras desta Linguagem.
Sintaxe:
ALTER RULE <nome-regra>
MODIFY EVENT TO <identificao da operao> [{<OR identificao da
operao> <objeto que sofre a ao>}] |
<identificao da data_hora>;
< evento dados > ::= <INSERT> [{OR <UPDATE> | <DELETE> | <SELECT>}]
Objeto que sofre a ao ::= [OF {<lista de colunas> <virgula>} OR ON <nome
tabela>]
< evento sistema > ::= <LOGON> [{OR <LOGOFF >}]
Objeto que sofre a ao ::= [OF <nome do usurio>]
< evento meta-dados > ::= <ALTER> [{OR <DROP> | <RENAME >}]
Objeto que sofre a ao ::= [TABLE <nome da tabela>]
< evento temporal > ::= <data_hora>
ON. A granularidade da regra perde seu sentido, uma vez que o evento sistema no atua em
nvel de registros.
a) b)
< evento dados > ::= <INSERT> [{OR <UPDATE> | <DELETE> | <SELECT>}]
Objeto que sofre a ao ::= [OF {<lista de colunas> <virgula>} OR ON <nome
tabela>]
< evento sistema > ::= <LOGON> [{OR <LOGOFF >}]
Objeto que sofre a ao ::= [OF <nome do usurio>]
< evento meta-dados > ::= <ALTER> [{OR <DROP> | <RENAME >}]
Objeto que sofre a ao ::= [TABLE <nome da tabela>]
< evento temporal > ::= <data_hora>;
ano de 1990.
Sintaxe:
ALTER RULE <nome-regra>
ADD EVENT <<identificao da operao> [{<OR identificao da
operao> <objeto que sofre a ao>}] |
<identificao da data_hora>;
[ACTIVATION TIME <identificao do tempo de ativao>]
[GRANULARITY <identificao da granularidade>];
< evento dados > ::= <INSERT> [{OR <UPDATE> | <DELETE> | <SELECT>}]
Objeto que sofre a ao ::= [OF {<lista de colunas> <virgula>} OR ON <nome
tabela>]
< evento sistema > ::= <LOGON> [{OR <LOGOFF >}]
Objeto que sofre a ao ::= [OF <nome do usurio>]
< evento meta-dados > ::= <ALTER> [{OR <DROP> | <RENAME >}]
Objeto que sofre a ao ::= [TABLE <nome da tabela>]
< evento temporal > ::= <data_hora>;
identificao do tempo de ativao ::= BEFORE [{OR <AFTER> | <ON>}]
identificao da granularidade ::= <FOR EACH ROW> [{OR <FOR STATEMENT>]
VARIAVEIS GLOBAIS
(V_CodCli Cliente.Cod_Cli%TYPE)
V_TipVelho Cliente.Tip_Cli%TYPE;
V_TipNovo Cliente.Tip_Cli%TYPE;
V_SalCli Cliente.Sal_Cli%TYPE;
CREATE RULE CATEGORIA_CLIENTE
DO
BEGIN
SELECT Sal_Cli, Tip_Cli INTO V_SalCli, V_TipVelho
FROM Cliente
WHERE Cod_Cli = V_CodCli;
IF V_SalCli >= 5000 THEN
V_TipNovo:= 'A';
ELSIF V_SalCli < 5000 AND V_SalCli >= 3000 THEN
V_TipNovo:= 'B';
ELSE
V_TipNovo:= 'C';
END IF;
IF V_TipNovo <> V_TipVelho THEN
UPDATE Cliente
SET Tip_Cli = V_TipNovo
WHERE Cod_Cli = V_CodCli;
END IF;
END;
Sintaxe:
ALTER RULE <nome-regra>
ADD CONDITION [<operador unrio>] <elemento - condio>
[<conector> <elemento - condio>] ...
Esta condio retorna verdadeiro se existem registros cujo salrio do cliente maior
que mil reais. Considerando a condio verdadeira, ento o cliente pode assumir uma
categoria (A, B ou C). Clientes sem categoria no podem solicitar emprstimos ao banco. Esta
regra de negcio valida para todos os clientes. A regra CATEGORIA_CLIENTE
apresentada a seguir:
Uma regra pode ser alterada em funo da eliminao de sua condio. A eliminao
de uma condio possvel para os tipos de regras estmulo-resposta que sejam definidas com
uma nica ao e para os tipos de regras derivao que possuam tambm uma nica ao.
Quando estes tipos de regras possuem aes primria e secundria, ento a eliminao da
condio no permitida pelo SGBDA, visto que no existe uma regra somente com duas
aes, sem o elemento condio. Para controlar a aplicao desta operao de gerncia sobre
uma regra, necessrio atribuir uma meta-regra, conforme apresentado na Tabela 5.2.
Sintaxe:
ALTER RULE <nome-regra>
DROP CONDITION;
Exemplo:
CREATE RULE SALARIO_FUNC
AFTER UPDATE OF salario ON FUNCIONARIO
WHEN ((Select AVG(salario)
FROM FUNCIONARIO) > 10.000)
DO
BEGIN
INSERT INTO HISTORICO_SALARIO_FUNCIONARIO
( SELECT * FROM OLD_TABLE);
SIGNAL (- 500, A media salarial dos funcionrios no pode ser maior que
R$ 10.000,00).
END;
As regras que podem ter sua condio alterada so regras do tipo estmulo-resposta e
derivao. Alterar uma condio implica em modificar um registro na tabela CONDIO do
repositrio de regras: Isto implica em modificar o atributo definio_condio e atualizar o
atributo data_ltima_modificao. Para aplicar esta operao de gerncia, necessrio que
a regra seja do tipo estmulo-resposta e derivao. Uma meta-regra deve ser utilizada para
garantir a correta aplicao da operao sobre um tipo de regra previamente definido,
110
Esta regra tem a finalidade de identificar os funcionrios que foram admitidos antes de
dezembro de 1990 e que recebem um salrio menor que R$ 1500,00.
Considerando que na empresa no trabalham mais os funcionrios que foram
admitidos antes da data de dezembro de 1990, esta regra perdeu o sentido para a empresa. O
111
usurio voltou-se para uma lei que prev que os funcionrios que trabalham pelo menos 6
horas dirias no podem receber menos de um salrio mnimo. Assim, aplica-se a operao de
gerncia para modificao da condio conforme especificado abaixo:
Uma regra deve apresentar pelo menos uma ao. A adio de uma ao a uma regra
representa a adio de uma ao secundria. Para que seja possvel atribuir mais uma ao, a
regra deve possuir uma condio associada a ela. O reflexo no repositrio de regras, em
funo desta adio, um registro associado a uma regra. O SGBDA atribui um cdigo para
esta ao, adicionando um valor ao atributo <id_ao> e atribui o valor secundrio ao atributo
<categoria>. A sintaxe para a adio de uma ao a uma regra a seguinte:
Sintaxe:
ALTER RULE <nome_regra>
ADD SECONDARY ACTION <ao secundria>
(somente artigos) para o ano corrente. Esta regra pode ser disparada toda vez que ele, o
professor, entra em frias. A regra pode ser alterada para que o usurio possa verificar se o
professor possui tambm publicaes em livros.
Portanto, aps a aplicao desta operao de modificao do elemento ao, a regra fica da
seguinte maneira:
CREATE RULE Publicacao_Prof
ON SELECT OF titulacao ON PROFESSOR
FOR EACH ROW
WHEN (current.status = Ferias)
DO
BEGIN
SELECT COUNT (publicacao) INTO V_quantidade
FROM PROFESSOR
WHERE codProf = CURRENT.codProf
AND ano = current_year;
SELECT COUNT (livros) INTO V_livros
FROM LIVROS
WHERE codProf = CURRENT.codProf
AND ano = current_year;
CALL PROCEDURE nro_publicacao (codProf, V_quantidade)
CALL PROCEDURE livro_publicacao (codProf, V_livros)
END;
O usurio deve garantir que a nova ao deve se adaptar ao novo contexto
apresentado, em funo do evento da regra. Para a nova ao, foi adicionada uma nova
consulta SQL com a mesma varivel de transio e uma chamada a procedimentos.
ao resultante. Por exemplo, ao eliminar uma ao primria, a regra fica com uma ao
secundria. Uma regra no pode ter uma ao secundria sem a presena de uma ao
primria. Assim, ao eliminar uma ao primria, a ao secundria assume, automaticamente,
o papel de ao primria. O atributo <categoria>, na tabela AO, muda o valor armazenado
de secundrio para primrio. A seguir apresenta-se na Tabela 5.5, a regra de consistncia
relacionada com a eliminao de uma ao de uma regra.
Uma regra pode ser habilitada ou desabilitada por uma operao de gerncia ou,
automaticamente, por meio de outra regra. Toda regra quando especificada no repositrio de
regras assume o valor padro Habilitada. Para habilitar ou desabilitar uma regra usa-se a
seguinte operao de gerncia.
120
Uma vez que a operao sucedeu de forma satisfatria, a regra passa a ser desabilitada.
A primeira parte desta sintaxe identifica o nome do grupo que constitui o conjunto de
regras. A segunda parte tem a finalidade de adicionar regras a este grupo e a terceira parte a
finalidade de eliminar regras do grupo de regras. A seguir apresentado um agrupamento de
regras.
CREATE RULESET < universidade >
ADD RULE Publicacao_Prof; Salrio_Func
a) b) c) d) e) f) g) h)
1
2
(PATON, 1998).
Este trabalho prope uma linguagem de Gerncia de Regras, como extenso da
linguagem de regras adotada neste trabalho e descrita no captulo 3. Para adequar a arquitetura
do SGBDA a esta proposta, necessrio estender alguns de seus componentes.
Compilador de
Detector de Eventos
Linguagem de
Gerncia de
Regras
Gerenciador
de Regras
Componentes de
Execuo de Regras Plano de Execuo
de Regras
Repositrio de
Dicionrio de Regras
Dados
as regras, uma vez que as regras sejam compiladas pelo Compilador de Linguagem de
Gerncia de Regras. Este Compilador tem a finalidade de compilar os tipos de regras que
foram sugeridos na linguagem adotada. Considerando que a sintaxe adotada similar
sintaxe da linguagem SQL3, ento, este componente precisa ser adaptado para incorporar
estas inovaes. Alm disso, precisa compilar as sintaxes das operaes de gerncia de regras
sugeridas neste trabalho, uma vez que, estas operaes mantm a mesma concepo adotada
na sintaxe da linguagem SQL3..
O Componente de Execuo de Regras tem a finalidade de implementar o modelo de
execuo de regras adotado pela linguagem usada como referncia neste trabalho. Este
componente interage com o componente responsvel pelo Plano de Execuo de Regras,
quando um conjunto de regras disparado pelo mesmo evento.
O Dicionrio de Dados de um SBDA possui estruturas para armazenar regras do tipo
ECA e EA e seus respectivos relacionamentos, porm necessita ser adaptado para os novos
tipos de regras sugeridos pela linguagem adotada neste trabalho. Este trabalho, por sua vez,
sugere uma adaptao do dicionrio de dados redefinindo-o em dois conjuntos de estruturas, a
saber: um conjunto para armazenar dados e outro conjunto para armazenar regras. O primeiro
conjunto mantm o mesmo conceito de dicionrio de dados, e o segundo conjunto, definido
como repositrio de regras, com estruturas propcias para o armazenamento dos tipos de
regras que so sugeridas na linguagem de gerncia de regras. Alm disso, estas estruturas
contemplam informaes sobre o relacionamento entre regras. Estes dois conjuntos coexistem
dentro do banco de dados de um SBDA. Portanto, o banco de dados necessita ser adaptado
para tratar as estruturas oferecidas neste trabalho, sugeridas como extenso do dicionrio de
dados. Na Figura 26, so apresentados dois repositrios separados logicamente, porm
fisicamente fazem parte da mesma estrutura, que refere-se ao banco de dados do SGBDA.
Na Figura 26, os retngulos em negrito so extenses que fazem parte da proposta
desta tese.
128
5.5 CONCLUSES
6.1 INTRODUO
O estudo de caso apresentado est dividido em trs partes. A primeira parte descreve o
contexto do negcio, a segunda parte especifica as regras de negcio na linguagem de regras
adotada neste trabalho e a terceira parte a avaliao e melhorias adotadas sobre o conjunto de
regras especificado, por meio de operaes de gerncia.
chamado de auxlio-evento. Uma vez que este auxlio foi solicitado, so verificados os pr-
requisitos para esta solicitao, os quais so: o tempo que este funcionrio pertence
empresa, grau de compatibilidade da rea de atuao do funcionrio com o foco do evento e
verificar se a data de solicitao para a participao no evento ocorre antes dos trinta dias da
data de incio do evento. Alm disso, o funcionrio pode pedir um auxlio-evento para um
evento, por ano, desde que o departamento ao qual ele pertence no tenha acumulado
qualquer tipo de penalidade, no mesmo ano de solicitao da solicitao do auxlio. Estas
penalidades ocorrem em funo da desistncia de funcionrios, que obtiveram o auxlio, no
solicitaram cancelamento dele e, tambm no compareceram ao evento.
Uma vez que o funcionrio preencha os requisitos necessrios para a solicitao do
auxlio-evento, necessrio calcular o valor deste auxlio a ser atribudo a ele. O valor do
auxlio calculado em funo do valor da inscrio no evento, translado at o evento e o valor
do recurso outorgado pela empresa (quinze por cento do seu salrio) para custeio de hotel e
alimentao. Estes valores fazem parte de uma cota destinada ao departamento, e ao
ultrapassar o valor desta cota, previamente estabelecida, pela empresa, para o departamento, o
pedido negado.
O funcionrio, aps ter solicitado o auxlio evento, deve esperar para a receber a
notificao de aceitao ou rejeio deste pedido, visto que, existem cotaes de preos a
serem realizadas, em funo dos dados da viagem.
O resultado desta solicitao de auxlio financeiro uma mensagem do tipo O Pedido
de auxlio evento de cdigo P na data dd/mm/aaaa foi APROVADO ou a negao da frase.
Os funcionrios que acumulam participaes em eventos internacionais e eventos nacionais,
recebem gratificaes, como incentivo.
No diagrama de atividades da Figura 26 so apresentados todos os passos do processo
de negcio, relativo a solicitao de auxlio-evento.
131
Solicitar auxlio
financeiro para evento
Verificar pr-requisitos
no satisfaz
satisfaz
Verificar se o valor do
auxlio ultrapassa cota
permitida
Solicitar cancelamento do
auxlio financeiro para
evento
Verificar pr-requisitos
no satisfaz
satisfaz
gastos com alimentao hotel, empresa. Alm da multa, aplicada uma penalidade ao
funcionrio, e ao departamento, que no podero participar de outro evento internacional no
ano corrente..
O resultado da solicitao de cancelamento-auxilio-evento uma mensagem do tipo
O Pedido de cancelamento do auxlio evento de cdigo C na data dd/mm/aaaa foi
APROVADO e o valor da multa M reais ou a negao do pedido de cancelamento-
auxilio-evento
END;
135
R10
R5 C
E
A
A
A
AND
(NOT EXISTS (SELECT *
FROM PEDIDO_AUXILIO
WHERE codFunc = :V_codFunc
AND status = 'Aprovado') )
AND
(EXITS (SELECT *
FROM DEPARTAMENTO D, FUNCIONARIO F
WHERE F.codFunc = V_codFunc
AND D.codDepto = F.codDepto
AND D.penalidade = 'N') )
DO
BEGIN
UPDATE PEDIDO_AUXILIO
SET status = 'PENDENTE', tipoPedido = 'S'
WHERE numPed = :V_numPed;
END;
ELSEDO
BEGIN
UPDATE PEDIDO_AUXILIO
137
END;
R15 A
R10 C
R20 A
A
A R25 C
A
A
DO
BEGIN
138
UPDATE PEDIDO_AUXILIO
SET dataLimCancelamento = V_dataLimite
WHERE numPed = :V_numPed;
END;
Descrio da regra R20
CALCULAR o valor auxlio evento atribudo a um funcionrio. O clculo realizado da
seguinte maneira:
- Soma-se o valor da inscrio no evento com o valor do auxilio financeiro que
corresponde a 15 por cento de seu salrio, para custeio de hotel e alimentao.
CREATE RULE R20 /* (operacional - A) */
DECLARE
V_valorInscricao EVENTO.valorInscricao%type;
V_viatico FUNCIONARIO.salario%type;
V_valorAuxilioEvento PEDIDO_AUXILIO.valorAuxilio%type;
DO
BEGIN
UPDATE PEDIDO_AUXILIO
SET valorAuxilio = V_valorAuxilioEvento
WHERE numPed = :V_numPed;
END;
139
Obs: SELECT TRUNC (SYSDATE, 'YEAR') FROM DUAL esta sentena considera a data a
partir de primeiro de janeiro do ano corrente.
140
R10
R5 C
E
A
A
A
R15 A
R20 A
R25 C
A
A
BEGIN
:V_codFunc = :new.codFunc;
:V_codEvento = :new.codEvento;
:V_numPed = :new.numPed;
FIRE R35; /* verifica requisitos para cancelamento-auxilio-evento */
END;
ELSEDO
BEGIN
CallProcedure ComunicaCliente ('No pode ser solicitado');
END;
Na Figura 31 ilustrado o encadeamento de regras entre R30 e a regra R35. A ao primria
de R30 dispara, por meio de uma operao Fire a regra R35.
R30 R35
E C
C A
A A
A
R40 A
R35
C
A R45 A
A
CallProcedure penalidadeDepartamento( );
UPDATE DEPARTAMENTO
SET penalidade = 'S'
WHERE codFunc = :V.codFunc;
END;
Na Figura 33 apresentado o encadeamento de regras relacionado com o processo de
negcio para cancelar um auxilio evento.
R40 A
R35
R30 C
E
A R45 A
C
A
A
A
DECLARE
V_quantidade numeric;
CREATE RULE R50 /* Gratificaes regra tipo EA */
AFTER INSERT ON PARTICIPA-EVENTO
FOR EACH ROW
DO
BEGIN
R10
R5 C
E
A
A
A
R15 A
R20 A
R25 C
A
R40 A
A
R35
R30 C
E
A R45 A
C
A
A
R50 E
A
A
refatorao de regras.
Uma situao possvel de acontecer, referente s modificaes no negcio, ocorre quando
a empresa no tem mais interesse em automatizar o processo de cancelamento de auxilio-
evento. Este controle ser feito manualmente, com a funcionria da empresa, visto que a
empresa passa a valorizar a entrevista, do funcionrio que solicitou o auxilio-evento, com
a funcionria responsvel pelo processo de cancelamento deste auxilio. Para evitar que
sejam eliminadas as regras que representam o cancelamento, optou-se por desabilit-las. A
vantagem de desabilitar estas regras que no futuro, a empresa pode solicitar a reativao
do processo de cancelamento, e desta forma, estas regras j esto disponveis para a
funo desejada.
Para evitar que se desabilite uma regra por vez, optou-se por agrup-las e depois
desabilit-las. Portanto, primeiro as regras so agrupadas e depois desabilitadas.
Esta operao agrupa as regras R30, R35, R40 e R45. O seguinte passo desabilitar
este grupo de regras.
Seja a seguinte operao:
cancelamento-auxilio-evento ser utilizado novamente. Esta soluo foi possvel com o auxilio
das operaes de gerncia.
Considerando uma soluo com as operaes disponveis na linguagem SQL3,
somente possvel eliminar as regras relacionadas ao cancelamento-auxilio-evento. Da
mesma forma, estas regras no podem ser reaproveitadas. Para voltar a usar o processo de
cancelamento-auxilio-evento, necessrio criar novamente essas regras. Como a linguagem
SQL3 no possui outros tipos de regras, alm de ECA e EA, todas as regras a serem definidas
so do tipo estmulo-resposta, como conseqncia, estas regras ao serem criadas, novamente,
so associadas a um valor de tempo de criao, utilizado como critrio para executar as
regras que so disparadas pelo mesmo evento. Portanto a ordem de criao das regras deve ser
considerada pelo usurio. Quanto maior o nmero de regras a serem criadas, maior a
complexidade inerente a este processo de criao.
Uma outra situao que deve ser tratada neste repositrio a refatorao das regras, que
foram definidas no repositrio de regras, e que possuem parte do cdigo, repetido. As
regras R10 e R25 possuem parte do cdigo repetido e que por sua vez, podem ser
refatoradas em uma nica regra, que contenha estes cdigos, sem perder a semntica
relativa ao processo de negcio auxilio-evento. A regra R10 possui em sua ao
secundria uma chamada a uma funo, cuja finalidade alertar o usurio que o processo
de solicitao-evento foi cancelado. Este mesmo procedimento existe na regra R25, em
sua ao secundria. Na ao primria desta regra, existe uma chamada a procedimento
que alerta o usurio de que o processo de solicitao auxilio-evento, foi aceito.
Considerando as duas regras, R10 e R25, possvel converter esta lgica em uma
nica regra, definida como regra R27, conforme apresentado a seguir:
processo do tipo cancelamento-evento, a regra R27 dispara a regra R29, que avalia o pedido
de cancelamento foi aprovado.
Esta regra R27 do tipo ECAA e compe-se de duas regras R28 e R29. O evento
acontece quando o usurio solicita auxilio-evento, ou cancelamento do auxilio-evento.
A condio da regra verifica se o tipo de pedido Auxilio-evento. Caso afirmativos,
a regra R28 disparada, caso contrrio, a regra R29 disparada.
Na Figura 35 apresentado o encadeamento de regras, incluindo a regra R27, R28 e
R29.
150
R10
R5 C R28 C
E R29 C
A A
A A
A A
R15 A
R20 A
R27 E
R25 C
A C
A A
A
END;
ELSEDO
BEGIN
callProcedure ComunicaCliente ('Auxilio Nao Aprovado');
END;
END;
>;
As alteraes na regra R25 so as seguintes:
ALTER RULE R25
MODIFY PRIMARY ACTION TO
BEGIN
UPDATE PEDIDO_AUXILIO
SET status = 'APROVADO', tipoPedido = 'S'
WHERE numPed = :V_numPed;
END;
R10
R40 A
R5 C R35
E R30 C
A E
A A R45 A
A C
R15 A A
A
R20 A A
R50 E
R25 C
A
A R27 E R28 C
A
C A
A A
A
Solicitar auxlio evento
R29 C
Cancelar auxlio evento A
UPDATE PEDIDO_AUXILIO
SET status = 'Cancelado', tipoPedido = 'C'
WHERE codEvento = :current.codEvento
AND codFunc = :current.codFunc;
DO
BEGIN
:V_codFunc = :new.codFunc;
157
:V_codEvento = :new.codEvento;
:V_numPed = :new.numPed;
UPDATE PEDIDO_AUXILIO
SET status = 'Cancelado', tipoPedido = 'C'
WHERE codEvento = :current.codEvento
AND codFunc = :current.codFunc;
R10 R40 A
R5 C R35
E E
A
A C R45 A
A
R15 A A
A
R20 A
R50 E
R25 C
A
A R27 E R28 C
A
C A
A A
A
R29 C
Solicitar auxlio evento A
Figura 37 - Encadeamento de regras, aps as alterao na regra R35 e eliminao da regra R30.
159
6.3 CONCLUSES
A finalidade deste captulo foi apresentar um estudo de caso por meio do qual foi
possvel aplicar as operaes de gerncia sugeridas neste trabalho. Considerando que as regras
definidas no repositrio de regras necessitavam adaptar-se a um requisito de negcio, foram
utilizadas operaes que suprissem estas mudanas, sem a necessidade de elimin-las do
repositrio. Da mesma forma, houve a necessidade de realizar manuteno nas regras,
refatorando-as. Nesta refatorao foi reutilizado cdigo de outras regras, e estenderam-se
algumas regras que faziam parte do repositrio.
Este processo de modificao do repositrio de regras para adaptar-se a dinmica de
processos de negcio, por meio da adio de regras, excluso de regras, alterao de regras, e
de suas partes constitui-se na evoluo do repositrio de regras. Esta evoluo, de forma gil,
foi possvel de ser realizada com a linguagem de gerncia de regras proposta.
No captulo seguinte so apresentadas a concluso do trabalho e futuras pesquisas que
podem ser realizadas em funo da linguagem apresentada.
160
o armazenamento dos dados, tendo um conjunto de estruturas para garantir a consistncia dos
dados, por meio das restries. As regras tambm passam a contar com uma infra-estrutura,
denominada repositrio de regras, cuja finalidade armazenar as regras, e dispe de um
conjunto de regras de consistncia para manter a corretude do repositrio de regras.
Os dicionrios de dados que compunham tanto dados quanto regras foram analisados
com a finalidade de identificar seus aspectos positivos e suas respectivas deficincias. At
esta etapa do trabalho, dados e regras coexistem em um mesmo ambiente, sob o domnio de
uma linguagem de definio de dados. Esta linguagem utilizada para definir tabelas, regras
entre outros objetos do banco de dados.
Na busca por oferecer uma linguagem de gerncia de regras com maior expressividade
que a linguagem SQL3, e que pudesse oferecer recursos para as necessidades das atuais
aplicaes, foi analisado o modelo de definio de regras da linguagem proposta por Pavn
(2005). Esta linguagem teve como premissa estender o modelo de regras da linguagem SQL3,
definindo um conjunto de tipos de regras, com maior expressividade, que os tipos sugeridos
pela linguagem SQL3.
Uma outra contribuio deste trabalho a realizao de uma avaliao crtica do
modelo de definio de regras, com a finalidade de identificar questes que no foram
tratadas pelo modelo adotado, tais como: operaes para a alterao de regras, operaes para
alterar partes de uma regra e anlise de um repositrio de regras para armazenar os diferentes
tipos de regras propostos.
A partir desta anlise, identificaram-se as caractersticas dos tipos de regras oriundos
do modelo adotado. Estas caractersticas serviram de base para a elaborao do repositrio de
regras, alm disso, as informaes sobre as operaes de gerenciamento de regras
completaram a anlise necessria para identificar as estruturas iniciais, que servem para
armazenar as regras.
Alm destas estruturas, foi identificado um conjunto de meta-regras que deveriam
existir para garantir a consistncia das informaes que eram manipuladas no repositrio de
regras. Estas situaes inconsistentes poderiam ocorrer em funo do uso das operaes de
gerncia, como por exemplo, adicionar uma ao secundria a uma regra que no possui
condio (EA). As estruturas so tabelas que armazenam informaes sobre as regras, suas
partes e o relacionamento entre elas. Este relacionamento representa o mapeamento
correspondente ao encadeamento de regras, que surge em funo de um conjunto de regras
162
REFERNCIAS BIBLIOGRFICAS
ABITEBUL, S.; BENJELLOUN, O.; MILO,T. Positive active XML. In: ACM
SIGMOD-SIGACT-SIGART SYMPOSIUM ON PRINCIPLES OF DATABASE
SYSTEMS (PODS), 23, Paris, 2004. Proceedings. ACM Press, New York, 2004,
p.14-16.
AMGHAR, Y.; MEZIANE, M.; FLORY, A. Using business rules within a design
process of active databases. Journal of Database Management, v.11, n.3, p.3-15,
2000.
BARALIS, E.; CERI, S.; PARABOSCHI, S.; Compile-time and runtime analysis of
active behaviors. IEEE Transactions on Knowledge and Data Engineering, v.10,
n.3, p.353-370, May, 1998.
165
BONIFATI, A.; CERI, S.; PARABOSCHI, S. Active rules for XML: a new paradigm
for E-services The VLDB Journal v.10, p.3947, Aug. 2001.
BUSINESS RULES GROUP. GUIDE Business rules project. Final Report, Revision
1.3. Business Rules Community. 2000. Disponvel em
<http:www.dbpd.comvault9809darc.html> Acesso em: 12 fev. 2005.
BRY, F.; ECKERT, M.; Twelve theses on reactive rules for the web. In.
PROCEEDINGS OF THE WORKSHOP ON REACTIVITY ON THE WEB (EDBT
Workshop 2006). Munich, Germany, Proceedings. Springer, Munich 2006. p-842-
854
CERI, S.; WIDOM, S.; Deriving production rules for constraint maintenance In:
INTERNATIONAL CONFERENCE ON VERY LARGE DATA BASES, 16,
Brisbane. Australia Proceedings Morgan Kaufmann Publishers, San Francisco. 1990.
p.566-577.
CERI, S.; WIDOM, S.; Production rules in parallel and distributed database
environments. In: INTERNATIONAL CONFERENCE ON VERY LARGE DATA
BASE (VLDB), 18, Vancouver, Canada Proceedings, Morgan Kaufman pubs. (Los
Altos CA), Vancouver, 1992, p.339-351.
COLLET, C.; COUPAYE, T.; SVENSEN T.; NAOS: efficient and modular reactive
capabilities in an object-oriented database system. In: INTERNATIONAL
CONFERENCE ON VERY LARGE DATA BASE(VLDB), 20, Santiago, Chile
Proceedings, Morgan Kaufmann Publishers, San Francisco, 1994. p.132-143.
167
COUCHOT, A.; Improving active rules termination analysis by graphs splitting, In:
EAST - EUROPEAN CONFERENCE ON ADVANCES IN DATABASE AND
INFORMATION SYSTEMS (ADBIS), 5., Vilnius, Lithuania, 2001. Proceedings.
London: Spring- Verlag. 2001. p.64-77.
DIAZ, O.; JAIME, A.; Depuracin de disparadores en bases de datos activas. In:
JORNADAS DE INGENIERA DEL SOFTWARE Y BASES DE DATOS (JISBD), 4.
Cceres Proceedings Escuela Politecnica, Universidad de Extremadura. 2000. p.151-
162
DIAZ, O.; PATON, N.; GRAY, P.; Rule management in object oriented database: a
uniform approach. In: INTERNATIONAL CONFERENCE ON VERY LARGE
DATA BASE (VLDB), 17, Barcelona. Proceedings. Morgan Kaufmann, 1991. p.317-
326.
GEPPERT, A.; GATZIU, S.; DITTRICH, K.R.; FRITSCHI, H.; VADUVA, A.;
Architecture and Implementation of the active object-oriented database
management system SAMOS. Zrich, Institut fr Informatik, 39p. 1995a.
[Technical Report 95.29 a].1995a
GUISHENG, Y.;QUN, L.; JIANPEI, Z.; JIE, L.; DAXIN, L.; Petri based analysis
method for active database rules. IEEE International Conference on Systems,
Man, and Cybernetics, v.2, p.858-863, Oct. 1996
HANSON, E.N. The design and implementation of the ARIEL active database rule
system. IEEE Transaction on Knowledge and Data Engineering, v.8, n.1, p.167-
172, Fev. 1996.
HERBST, H.; MYRACH. T. A repository system for business rules. In: IFIP TC-2
WORKING CONFERENCE ON DATA SEMANTICS: DATABASE
APPLICATIONS SEMANTICS, 6, London. Procedings, Chapman & Hall London,
1995. p.119-139.
JAIME, A.E. Regras activas: soporte y manejo en las bases de datos orientadas a
objetos. 1998. 193p. Tese (Doutorado) Departamento de Lenguajes y Sistemas
Informticos. Universidad del Pas Vasco. 1998
169
KAPPEL, G.; KRAMLER, G.; RETSCHITZEGGER, W.; TriGS debugger a toll for
debugging active database behavior. In: INTERNATIONAL CONFERENCE ON
DATABASE AND EXPERT SYSTEMS APPLICATIONS. Proceedings LNCS,
Springer, Munich, Germany, 2001. p-410-421.
LANG, P. A. et al. Graphical editor for the conceptual design of business rules. In:
INTERNATIONAL CONFERENCE ON DATA ENGINEERING, 14, Orlando,
Proceedings IEEE Computer Society, Washington. 1998. p.599.
LEMKE, T.; MANTHEY, R.; The passive rule design tool: tool documentation.
26p. 1997. University of Bonn, Department of Computer Science III. [Technical
Report. IDEA.DE.22.O.010]. Mar. 1997.
MENS, K et al. Tools and environments for business rules In: EUROPEAN
CONFERENCE ON OBJECT-ORIENTED PROGRAMMING (ECOOP - Workshop
Report), 12. Belgium. Proceedings. Programming Technology Lab, Belgium, 1998.
p.189-196.
PATON, N. W. Active rules in database systems, Ed. Springer Verlag, New York,
USA. 1998, p.439.
PAVON, J.; VIANA, S.; CAMPOS, E.G.L.; Anlise da linguagem SQL3 com
relao especificao de regras de negcio, In: CONFERNCIA LATINO
AMERICANA DE INFORMTICA, 2006, Santiago do Chile. CLEI06, Santiago do
Chile, 2006. p.1-10. 1 CD-ROM.
PAVON, J.; Um modelo de regras para sistemas de banco de dados ativos. 2005.
126p. Tese (Doutorado) Departamento de Engenharia de Computao e Sistemas
Digitais. Escola Politcnica da Universidade de So Paulo. So Paulo. 2005.
ROSS, R. G.; Principles of the rules business approach. 1ed. New York. Ed.
Addison Wesley, 2003. 400p.
TRKER, C.; GERTZ, M., Semantic integrity support in SQL:1999 and Commercial
(Object-) Relational Database Management System. VLDB Journal, v.10, p.241-
269, Jun. 2001.
VADUVA, A. Rule Development for active database ystem. 1999. 163p. Tese
(Doutorado) - Department of Informatics at the University of Zurich, University of
Zurich. Zurich, 1999
VIANA, S.; PAVON, J.;ALMEIDA JR., J.R. Rule management in database systems.
In: INTERNATIONAL CONFERENCE ON COMPUTING (CIC06), 15, Mxico,
2006. Proceedings. Cidade do Mxico, IEEE Computer Society Press, 2006. p.315-
322.
VON HALLE, B.; Business rules applied. New York. Ed. John Wiley & Sons, 2002.
546p.
172