Post on 15-Nov-2018
Departamento de Engenharia
Informática e de Sistemas
Instituto Superior de Engenharia de
Coimbra
Associação de Informática da
Região Centro
Ambiente Aplicacional Integrado
Bárbara Maria Simões Correia
Relatório de Estágio/Projecto Industrial do Mestrado em Informática e Sistemas
Coimbra, Dezembro, 2009
Departamento de Engenharia
Informática e de Sistemas
Instituto Superior de Engenharia de
Coimbra
Associação de Informática da
Região Centro
Mestrado em Informática e Sistemas
Relatório de Estágio/Projecto Industrial
Ambiente Aplicacional Integrado
Bárbara Maria Simões Correia
Orientador DEIS/ISEC: Doutora Ana Rosa Borges
Orientador AIRC: Eng.º Luís Silva
Empresa: Associação de Informática da Região Centro
Coimbra, Dezembro, 2009
Ambiente Aplicacional Integrado
2
Agradecimentos
Gostaria antes de mais de agradecer aos orientadores do estágio: Eng.º Luís Silva e Eng.ª
Cláudia Ribeiro, orientadores da AIRC, pelo apoio, incentivo e disponibilidade demonstrada em
todas as fases que levaram à concretização deste trabalho; Doutora Ana Rosa Borges, orientador
do DEIS/ISEC que se disponibilizou a seguir o percurso do estágio.
Gostaria também, agradecer a disponibilidade de vários elementos da equipa de
desenvolvimento da AIRC, que sempre se dispuseram para contribuir no esclarecimento de
dúvidas, sendo eles: Eng.º José Cura, Eng.º Anselmo Craveiro, Eng.ª Marta Cunha e Eng.ª
Luciana Ferreira.
Gostaria ainda de agradecer aos meus colegas Enoque Carvalho, André Simões, Ivo Santos,
Eduardo Pratas e Ricardo Machado a excelente convivência e colaboração em diversos aspectos
ao longo do estágio.
Expresso ainda, o meu agradecimento à minha família que sempre me apoiou e incentivou
para a melhor prestação ao longo do estágio.
Ambiente Aplicacional Integrado
3
Resumo
O presente documento foi realizado no âmbito da disciplina de Estágio/Projecto Industrial, do
Mestrado em Informática e Sistemas, leccionada no Departamento de Engenharia Informática e de
Sistemas, do Instituto Superior de Engenharia de Coimbra. O estágio foi realizado na Associação
de Informática da Região Centro (AIRC), sedeada em Coimbra, consistindo no desenvolvimento de
um Ambiente Aplicacional Integrado, para integrar com outras aplicações do ERP AIRC.
Resumidamente, a aplicação deve facilitar o acesso a outras aplicações instaladas no
computador e a que o utilizador tenha permissões, sem ter que efectuar login cada vez que abre
uma aplicação. Esta deve também facilitar aos utilizadores, o acesso a determinadas
funcionalidades que são necessárias diariamente.
Neste documento pretende-se descrever as actividades desenvolvidas ao longo do estágio,
salientando-se as metodologias adoptadas, a arquitectura da aplicação, as ferramentas utilizadas,
os problemas encontrados e as soluções propostas.
Ambiente Aplicacional Integrado
4
Abstract
This document was prepared under the discipline of Traineeship / Industrial Project, of
Information Technology and Knowledge branch of the Masters in Computer Science and Systems,
taught in the Department of Computer Science and Systems, Instituto Superior de Engenharia de
Coimbra. The traineeship was performed at Associação Informática da Região Centro (AIRC),
headquartered in Coimbra, consisting of the development of an Integrated Application Environment
to integrate with other existing ERP applications of AIRC.
Briefly, the application will facilitate access to other AIRC applications installed on the
computer where the user has permissions, without having to login every time he opens a different
application. This should also make it easier for users to access certain features that are needed
daily.
This document has as main objectives the description of the activities undertaken during this
traineeship, emphasizing the approaches adopted, the application architecture, the tools used,
problems encountered and proposed solutions.
Ambiente Aplicacional Integrado
5
Definições, Acrónimos e Abreviaturas
Abreviatura Definição
ADM Aplicação de Administração da AIRC
AIRC Associação de Informática da Região Centro
AFC AIRC Foundation Classes
CNA Comissão de Normalização da AIRC
DEIS Departamento de Engenharia Informática e de Sistemas
DDDW DropDownDataWindow
DW DataWindow
EDAFC Equipa de Desenvolvimento das AFC
ERP
AIRC2000
Pacote de software autárquico, constituído por um conjunto de módulos
aplicacionais que cobrem quase a totalidade do sistema de informação das
autarquias
GFM Gestão de Fiscalização Municipal
IGA Identidade Gráfica da AIRC
ISEC Instituto Superior de Engenharia de Coimbra
ODBC Open Database connectivity
PB PowerBuilder
PBL PowerBuilder Library
PFC PowerBuilder Foundation Classes
PFE PowerBuilder Foundation Extension
PowerBuilder
Ferramenta de desenvolvimento, com programação orientada objectos, de
aplicações Windows, onde existe uma forte interacção com Sistemas de Gestão de
Bases de Dados Relacionais
SCC Source Code Control
SGA Sistema de Gestão de Água
SGD Sistema de Gestão Documental
SGP Sistema de Gestão de Pessoal
SQL Structured Query Language
STA Sistema de Tratamento de Actas
Ambiente Aplicacional Integrado
6
Índice Geral
1. Introdução ............................................................................................................................ 11
1.1 Contexto do estágio ...................................................................................................... 11
1.2 Descrição da entidade de acolhimento .......................................................................... 11
1.3 Âmbito do Trabalho ...................................................................................................... 13
1.4 Objectivos .................................................................................................................... 13
1.5 Estrutura do relatório .................................................................................................... 14
2. Planeamento e gestão do projecto ....................................................................................... 15
2.1 Coordenação e Reuniões ................................................................................................... 15
2.2 Equipa de Projecto ............................................................................................................. 15
2.3 Plano de desenvolvimento .................................................................................................. 16
2.4 Metodologia seguida .......................................................................................................... 17
3. Actividades desenvolvidas .................................................................................................... 19
3.1 Tecnologias e Ferramentas utilizadas ................................................................................. 19
3.1.1 PowerBuilder 11.2 ....................................................................................................... 19
3.1.2 Informix 11.5 ................................................................................................................ 19
3.1.3 Microsoft Word ............................................................................................................ 19
3.1.4 Microsoft Excel ............................................................................................................ 19
3.1.5 TortoiseCVS 1.8 .......................................................................................................... 19
3.2 Análise ............................................................................................................................... 20
3.3 Implementação ................................................................................................................... 20
3.3.1 Ambiente de desenvolvimento ..................................................................................... 20
3.3.2 Ferramenta de desenvolvimento .................................................................................. 21
3.3.3 Arquitectura do Sistema ............................................................................................... 23
3.3.4 Framework Comum das Aplicações da AIRC ............................................................... 25
3.3.5 Base de Dados ............................................................................................................ 26
Ambiente Aplicacional Integrado
7
3.3.6 Mecanismo de autenticação ........................................................................................ 29
3.3.7 Interfaces do projecto .................................................................................................. 32
3.3.7.1 Área de boas vindas ao utilizador .......................................................................... 33
3.3.7.2 Favoritos ............................................................................................................... 34
3.3.7.3 Menu de aplicações .............................................................................................. 35
3.3.7.4 Documentos recebidos ......................................................................................... 37
3.3.7.5 Área de Pesquisas ................................................................................................ 39
3.3.7.6 Calendário ............................................................................................................ 47
3.3.7.7 Menu de atalhos ................................................................................................... 54
3.3.7.8 Área central .......................................................................................................... 55
3.5 Testes ................................................................................................................................ 56
4. Conclusões .......................................................................................................................... 57
5. Bibliografia ........................................................................................................................... 58
6. Anexos ................................................................................................................................. 59
Anexo A – Proposta de Estágio ................................................................................................ 60
Anexo B – Sprint Backlog ......................................................................................................... 64
Anexo C – Product Backlog ...................................................................................................... 70
Ambiente Aplicacional Integrado
8
Índice de figuras
Figura 1 - Produtos da AIRC ........................................................................................................ 12
Figura 2 -Mapa de Gantt .............................................................................................................. 16
Figura 3 - Ambiente de desenvolvimento ...................................................................................... 20
Figura 4 - Esquema de heranças do framework da AIRC ............................................................. 23
Figura 5 – Mecanismo de autenticação ........................................................................................ 29
Figura 6 - Área de trabalho geral .................................................................................................. 32
Figura 7 - Janela de Utilizadores .................................................................................................. 33
Figura 8 - Pesquisar documentos recebidos ................................................................................. 37
Figura 9 - Selecção de áreas ....................................................................................................... 39
Figura 10 - Enquadramento da área de pesquisa ......................................................................... 40
Figura 11 - Pesquisa avançada da área de trabalho ..................................................................... 41
Figura 12 - Janela de pesquisa avançada .................................................................................... 44
Figura 13 - Pesquisa simples ....................................................................................................... 45
Figura 14 - Adicionar novo evento ................................................................................................ 47
Figura 15 – Janela para criar um novo evento .............................................................................. 48
Figura 16 - Janela Tipos de Eventos ............................................................................................ 49
Figura 17 - Atribuição de uma cor ao tipo de evento ..................................................................... 50
Figura 18 - Janela de moradas codificadas .................................................................................. 51
Figura 19 - Janela de códigos postais .......................................................................................... 52
Figura 20 - Janela de manutenção de entidades .......................................................................... 53
Figura 21 - Menu de eventos ........................................................................................................ 53
Figura 22 - Menu de atalhos......................................................................................................... 54
Ambiente Aplicacional Integrado
9
Índice de tabelas
Tabela 1 – Equipa de projecto ..................................................................................................................... 15
Tabela 2 – Termos do Scrum ...................................................................................................................... 18
Tabela 3 - Tabelas utilizadas no ambiente aplicacional integrado ......................................................... 26
Tabela 4 - Tabelas criadas ........................................................................................................................... 26
Tabela 5 - Tabela de eventos ...................................................................................................................... 27
Tabela 6 - Tabela de tipos de eventos ....................................................................................................... 28
Tabela 7 - Tabela de participantes de eventos ......................................................................................... 28
Tabela 8 - Função of_getToken() ................................................................................................................ 30
Tabela 9 - Função of_encrypt3() ................................................................................................................. 30
Tabela 10 - Função of_decrypt3() ............................................................................................................... 30
Tabela 11 - Função of_parseToken() ......................................................................................................... 31
Tabela 12 - Função of_alterainit() ............................................................................................................... 31
Tabela 13 - Função of_getdadosutilizador() .............................................................................................. 33
Tabela 14 - Função of_setfavoritos() .......................................................................................................... 34
Tabela 15 - Evento afc_mostraaplicacoes() .............................................................................................. 35
Tabela 16 - Função of_getuserpermission_aplic() ................................................................................... 35
Tabela 17 - Função of_getversao() ............................................................................................................. 36
Tabela 18 - Função of_getdesigaplic() ....................................................................................................... 36
Tabela 19 - Evento afc_pesquisadocumentos() ....................................................................................... 38
Tabela 20 - Função of_getsqlentredatas() ................................................................................................. 38
Tabela 21 - Função of_setarea() ................................................................................................................. 39
Tabela 22 - Evento afc_popupmenu_pesquisa() ...................................................................................... 40
Tabela 23 - Evento afc_pesquisaavancada() ............................................................................................ 41
Tabela 24 - Função of_getdwpropriedades() ............................................................................................ 42
Tabela 25 - Função of_gettabelasdddw() .................................................................................................. 42
Tabela 26 - Função of_getdadospesquisa() .............................................................................................. 42
Tabela 27 - Função of_constroiinstrucaosqlavanc() ................................................................................ 42
Tabela 28 - Função of_getsqlavanc() ......................................................................................................... 43
Tabela 29 - Função of_pesquisaavanc() .................................................................................................... 43
Tabela 30 - Evento afc_jpesquisaavancada() ........................................................................................... 45
Tabela 31 - Evento afc_pesquisa() ............................................................................................................. 46
Tabela 32 - Função of_getsql().................................................................................................................... 46
Ambiente Aplicacional Integrado
10
Tabela 33 - Função of_pesquisa() .............................................................................................................. 46
Tabela 34 - Função of_setopcoes() ............................................................................................................ 54
Tabela 35 - Função of_setinicio() ................................................................................................................ 55
Ambiente Aplicacional Integrado
11
1. Introdução
1.1 Contexto do estágio
O estágio tem início em Maio e termina em Dezembro do presente ano. A orientação
pedagógica do estágio está a cargo da Doutora Ana Rosa Borges, docente do Departamento de
Engenharia Informática e de Sistemas do ISEC. A entidade de acolhimento do estágio é a
Associação de Informática da Região Centro (AIRC) localizada em Coimbra. O local de trabalho
consiste nas instalações da AIRC sendo os contactos apresentados nesta página em nota de
rodapé1.
1.2 Descrição da entidade de acolhimento
A AIRC é uma Associação de Municípios de direito público, fundada por 30 municípios da
região centro e cuja principal actividade é a produção de software e fornecimento de produtos e
serviços preferencialmente dirigidos à administração pública local.
A AIRC iniciou a sua actividade em 1982 para um número muito restrito de clientes, tendo
registado um crescimento constante e atingindo, nesta data, cerca de 300 clientes pertencentes à
administração pública, entre os quais cerca de 60% das Câmaras Municipais, 50% dos Serviços
Municipalizados, mais de meia centena de Juntas de Freguesia e ainda outros organismos da
administração pública, tais como Associações de Municípios e Regiões de Turismo.
A AIRC possui uma forte estrutura, composta por cerca de 80 profissionais altamente qualificados,
tanto ao nível da investigação e desenvolvimento de projectos, como da assistência técnica ao
utilizador.
Ao longo dos seus 25 anos de existência, a AIRC tem procurado acompanhar a evolução
natural das exigências dos seus clientes, apoiando a inovação e os novos modelos de trabalho,
1 AIRC – Associação de Informática da Região Centro
Morada: Avenida Fernão de Magalhães, N.º 227 – 2.º e 3.º Andar, Apartado 118 3001 – 902 Coimbra
Telefone: 239 850 500
Fax: 239 850 599
Email: geral@airc.pt
Site: www.airc.pt
Ambiente Aplicacional Integrado
12
suportados por soluções tecnologicamente avançadas e que permitam uma clara optimização da
gestão da administração pública.
O estímulo à adopção de mecanismos electrónicos assentes em plataformas
tecnologicamente evoluídas, que permitam a automatização de todos os processos, tem assumido
fundamental importância para a AIRC, que procura, através das suas soluções, colocar a inovação
ao serviço da modernização e dinamização da administração pública.
Nesse sentido, a AIRC disponibiliza uma ampla oferta de soluções (Figura 1 ) para os
organismos da Administração Pública Local, que permitem colocar a inovação ao serviço da
capacidade e eficácia de resposta, num forte contributo para a optimização da gestão pública.
Figura 1 - Produtos da AIRC
Aliando um serviço de suporte devidamente capacitado e especializado na quase totalidade
das áreas e atribuições da administração pública, e abrangendo toda a cadeia de valor, as
soluções AIRC permitem a cada organismo adoptar as melhores práticas de gestão e
administração, assentes em mecanismos organizacionais altamente produtivos e dinâmicos.
Esta completa oferta permitiu à AIRC consolidar a liderança de mercado da Administração
Pública Local, estando presente com as suas soluções na maioria dos Municípios do País.
Ambiente Aplicacional Integrado
13
1.3 Âmbito do Trabalho
O presente estágio enquadra-se no desenvolvimento de uma plataforma integradora de
funcionalidades de várias aplicações do universo ERP AIRC2000, utilizando uma linguagem de
programação orientada a objectos, trabalhando sobre um motor de base de dados Informix.
A base de dados usada na aplicação assenta na base de dados global, comum a todas as
aplicações da AIRC, e projectada para servir todas essas aplicações quando instaladas nos
clientes AIRC. Deste modo, o estágio consiste no desenvolvimento de um ambiente de trabalho
geral para todas as aplicações da AIRC, utilizando a linguagem de programação orientada a
objectos PowerBuilder (PB).
1.4 Objectivos
Os objectivos principais do estágio consistem em desenvolver um conjunto de determinadas
tarefas, consideradas necessárias para uma boa integração na equipa de desenvolvimento de
software da AIRC. Estabeleceram-se os seguintes objectivos:
• Conhecimento do funcionamento das aplicações e das suas ligações externas
• Análise, especificação e configuração do ambiente gráfico;
• Desenvolvimento do módulo de configuração e personalização gráfica;
• Implementação da comunicação e sincronização entre módulos aplicacionais;
• Integração com sistemas externos.
Ambiente Aplicacional Integrado
14
1.5 Estrutura do relatório
O presente relatório de estágio encontra-se organizado em quatro capítulos, sendo eles:
Introdução, Planeamento e Gestão do Projecto, Actividades Desenvolvidas e Conclusões. Esta
estrutura pretende abordar de uma forma concreta o trabalho desenvolvido ao longo do estágio,
dando o seguimento desde a ideia (proposta de estágio), passando pelo planeamento do projecto,
o trabalho desenvolvido, e finalizando com um conjunto de conclusões retiradas.
No Capítulo 1, Introdução , é realizada a introdução ao presente relatório de estágio, onde é
mencionado o contexto académico, assim como uma descrição alargada da entidade de
acolhimento, o âmbito e objectivos do estágio.
O Capítulo 2, Planeamento e Gestão do Projecto , visa apresentar as formas de
coordenação realizadas, a equipa de projecto e quais as metodologias de desenvolvimento
utilizadas.
No Capítulo 3, Actividades Desenvolvidas , encontram-se descritas as diversas actividades
desenvolvidas ao longo do estágio, desde a análise à implementação e testes.
O Capítulo 4, Conclusões é dedicado a analisar e mostrar de uma forma concreta e
organizada as conclusões tiradas ao longo do estágio.
Segue-se a Bibliografia , a qual contém uma listagem das referências bibliográficas utilizadas
como fundamento de pesquisa para a realização deste estágio.
Por fim, aparecem os Anexos , onde se incluem os documentos que se consideram de apoio
para uma análise mais detalhada do trabalho realizado. Assim sendo, considerou-se como
documentos anexos a este relatório, a proposta de estágio e os documentos de Sprint Backlog e
Product Backlog.
Ambiente Aplicacional Integrado
15
2. Planeamento e gestão do projecto
2.1 Coordenação e Reuniões
Ao longo do estágio foram realizadas algumas reuniões de análise e definição do trabalho a
realizar (âmbito interno da AIRC). Essas reuniões foram realizadas com elementos da equipa de
desenvolvimento da AIRC. Entre elas incluem-se reuniões informais com o orientador da AIRC,
Eng.º Luís Silva e a tutora Eng.ª Cláudia Ribeiro, de forma a definir como algumas funcionalidades
deveriam ser implementadas. Foram, também, realizadas algumas reuniões informais com a Eng.ª
Luciana Ferreira, coordenadora da Identidade Gráfica da AIRC, para definir o aspecto gráfico do
ambiente de trabalho geral.
2.2 Equipa de Projecto
A tabela 1 apresenta os elementos constituintes da equipa de projecto. Para além da
estagiária, a equipa de projecto é composta pelo orientador do DEIS/ISEC e pelos orientadores da
AIRC.
Nome Função
Doutora Ana Rosa Borges Orientadora DEIS/ISEC
Eng.º Luís Silva Orientador AIRC
Eng.ª Cláudia Ribeiro Co-orientadora AIRC
Eng.º Jorge Coimbra Coordenador do Desenvolvimento da AIRC
Bárbara Correia Estagiária
Tabela 1 – Equipa de projecto
Ambiente Aplicacional Integrado
16
2.3 Plano de desenvolvimento
Neste tópico é apresentado o plano de desenvolvimento definido para este projecto, tendo
este sido baseado no programa de trabalhos e calendarização das tarefas definidos na proposta de
estágio, incluída em anexo (Anexo A – Proposta de Estágio).
A figura 2 apresenta o Mapa de Gantt com a descrição das fases do projecto e datas de início
e fim das tarefas de cada fase.
Figura 2 -Mapa de Gantt
Ambiente Aplicacional Integrado
17
2.4 Metodologia seguida
Como metodologia de gestão e planeamento de projectos, a AIRC utiliza o Scrum. No Scrum
os projectos são divididos em Sprints (normalmente mensais) que são períodos de tempo em que
são desenvolvidos um conjunto de actividades. As funcionalidades a serem implementadas no
projecto são descritas numa lista chamada Product Backlog que pode ser actualizada ao longo do
desenvolvimento do projecto conforme as necessidades verificadas para o projecto.
No inicio de cada Sprint faz-se uma reunião, Sprint Planning Meeting, na qual estão presentes
o Product Owner, o Scrum Master e a equipa (Scrum Team) para planear o Sprint que se inicia.
Nessa reunião o Product Owner determina prioridades para as funcionalidades do Product Backlog
e descreve-as e a equipa selecciona as que será capaz de implementar. As tarefas que são para
desenvolver ao longo de um Sprint passam-se do Product Backlog para o Sprint Backlog. O Sprint
Backlog ajuda a dividir o trabalho pelos membros da equipa. Durante esta reunião a Scrum Team e
o Product Owner definem aquilo que se tentará alcançar no Sprint com um objectivo. O Product
Owner deve garantir que não vão aparecer novos requisitos ao longo do Sprint e quando este
começar a equipa deve-se manter concentrada apenas no objectivo traçado.
No final de um Sprint é feito um Sprint Review Meeting para a equipa apresentar as
funcionalidades que foram implementadas e avaliar o sucesso do Sprint com base no que foi
definido como objectivo. Seguidamente é feito um Sprint Retrospective para identificar o que
funcionou bem, o que pode ser melhorado e que acções se podem tomar para melhorar. Assim a
equipa parte para o planeamento do próximo Sprint reiniciando-se o ciclo.
Todos os elementos da equipa reúnem diariamente para fazer um Daily Scrum, que
normalmente é feito de manhã. O objectivo desta reunião diária é partilhar o que foi feito no dia
anterior, identificar constrangimentos e dar prioridade ao trabalho que se vai realizar nesse dia.
Não se deve fazer do Daily Scrum uma reunião para resolução de problemas. Como tal as pessoas
devem ficar em pé para não haver tendência a que demore muito tempo e seja uma reunião rápida
com cerca de 15 minutos. Cada elemento da equipa deve dizer o que fez no dia anterior, o que vai
fazer no dia actual e se há algum constrangimento ou problema que impeça o desenvolvimento do
trabalho. Com estas reuniões diárias as pessoas conseguem ficar com uma boa noção do trabalho
que foi feito e que ainda falta fazer. Caso existam constrangimentos o Scrum Master deve-os tentar
tratar o mais rapidamente possível.
Ambiente Aplicacional Integrado
18
Na tabela 2 são descritos alguns termos para melhor compreender esta metodologia.
Termo Descrição
Daily Scrum Reunião diária com os elementos da equipa
Product Backlog Lista de funcionalidades a serem implementadas
Product Owner Pessoa que define as funcionalidades do produto e que lhes
atribui prioridades
Sprint Período de tempo no qual é desenvolvido uma série de
actividades com um objectivo específico
Sprint Backlog Lista de tarefas, extraídas do product backlog, a realizar num
sprint
Sprint Planning Meeting Reunião realizada no início de um sprint para planeá-lo
Sprint Retrospective Reunião realizada no final de um sprint, para identificar o que
funcionou no sprint e o que pode ser melhorado
Sprint Review Meeting Reunião, realizada no final de um sprint, para se apresentar o
resultado do sprint e avaliar o seu sucesso
Scrum Master Pessoa responsável por coordenar a equipa, garantir que não
há impedimentos e que se verificam as melhores condições
possíveis para o desenvolvimento do projecto
Scrum Team Equipa de desenvolvimento do produto
Tabela 2 – Termos do Scrum
Para além da metodologia de Scrum, a AIRC tem um repositório onde ficam guardados o
modelo de base de dados e os documentos product backlog e sprint backlog entre outros. No PB é
usado o Source Code Control (SCC) para permitir que vários programadores estejam a trabalhar
no mesmo projecto ao mesmo tempo, sem que com isso ocorra a perda de código.
Ambiente Aplicacional Integrado
19
3. Actividades desenvolvidas
3.1 Tecnologias e Ferramentas utilizadas
Durante o período de estágio, são utilizadas diversas tecnologias e ferramentas, necessárias
para proceder à elaboração do ambiente pretendido, e as outras tarefas do projecto. De seguida
são apresentadas, essas mesmas tecnologias e ferramentas, incluindo uma breve descrição sobre
estas.
3.1.1 PowerBuilder 11.2 O PB consiste numa ferramenta de desenvolvimento de software, desenvolvida pela Sybase,
que pela sua versatilidade é usada normalmente na construção de aplicações na arquitectura
cliente/servidor, onde existe uma forte interacção com base de dados. Esta aplicação será
explicada com mais detalhe mais à frente.
3.1.2 Informix 11.5 O Informix constitui o motor de base de dados utilizado no desenvolvimento da aplicação, que
aparenta uma estabilidade e fiabilidade, características essenciais para suportar enormes bases de
dados.
3.1.3 Microsoft Word Esta ferramenta foi utilizada para a elaboração dos documentos desenvolvidos ao longo do
estágio, sendo proprietária da Microsoft Corporation.
3.1.4 Microsoft Excel Esta ferramenta foi utilizada para o desenvolvimento do documento de Sprint Backlog, ao
longo do estágio, sendo proprietária da Microsoft Corporation.
3.1.5 TortoiseCVS 1.8 Através desta ferramenta foi possível fazer o controlo de versões de ficheiros utilizados no
projecto para permitir a sua partilha e resolver conflitos de edição.
Ambiente Aplicacional Integrado
20
3.2 Análise
Para o desenvolvimento do ambiente aplicacional integrado achou-se pertinente fazer uma
análise a alguns ambientes de trabalho já existentes em aplicações da AIRC, nomeadamente as
aplicações Sistema de Gestão de Pessoal (SGP), Gestão de Fiscalização Municipal (GFM),
Sistema de Gestão Documental (SGD) e Sistema de Gestão de Água (SGA). Essa análise
consistiu em verificar quais as funcionalidades que cada um tinha, para se poder adaptar o
ambiente de trabalho geral a todas as aplicações.
3.3 Implementação
Neste tópico são apresentadas as actividades desenvolvidas durante a fase de construção do
projecto, ou seja, os métodos e técnicas utilizados para a implementação do projecto, consoante
as funcionalidades pretendidas e definidas.
3.3.1 Ambiente de desenvolvimento
O ambiente de desenvolvimento que está a ser utilizado neste projecto é constituído por (Figura 3 ):
• Máquina de desenvolvimento, com o driver de ligação ODBC ao motor de Base de Dados
Informix (Informix ODBC Driver), com a ferramenta de desenvolvimento (PB) e com outras
ferramentas necessárias ao desenvolvimento do projecto;
• Servidor remoto com o motor Informix que contêm a Base de Dados global da AIRC;
• Servidor do repositório dos resultados produzidos ao longo do projecto, como sendo
documentação ou código.
Figura 3 - Ambiente de desenvolvimento
Ambiente Aplicacional Integrado
21
3.3.2 Ferramenta de desenvolvimento
Neste ponto são apresentadas as noções essenciais relativas à descrição da ferramenta de
desenvolvimento utilizada para a implementação do ambiente aplicacional integrado.
O PB consiste numa ferramenta de desenvolvimento de aplicações cliente-servidor para
Windows, possibilitando ao programador a construção de aplicações poderosas com a capacidade
de funcionar sobre diversas plataformas e interagir com diferentes Sistemas de Gestão de Bases
de Dados.
As PowerBuilder Foundation Classes (PFC´s) constituem num conjunto de objectos disponíveis
pelo PB, objectos esses que podem ser personalizados e utilizados nas bibliotecas de
desenvolvimento (PBL´s). Por outro lado, as PFC´s são interpretadas pelo PB e disponibilizadas
aos objectos com recurso à linguagem de programação PowerScript, usando técnicas de
programação orientada a objectos e as vantagens de utilização de serviços – simplificação da
programação realizada pelo programador e o uso mínimo de recursos do computador, por parte da
aplicação.
Como ferramenta de programação orientada a objectos, o PB optimiza o desenvolvimento de
software, o qual se baseia em conceitos de objectos, classes, herança, encapsulamento,
polimorfismo, etc.
• Herança (Inheritance) – mecanismo que permite a herança de objectos (janelas,
datawindows, etc.) criando objectos personalizados, mas com métodos e atributos base;
• Encapsulamento (Encapsulation) – técnica que permite impedir o acesso directo a
determinados atributos dos objectos, utilizando assim métodos de acesso externo a esses atributos
de uma forma segura;
• Polimorfismo (Polymorphism) – permite a criação de métodos declarados, mas não
implementados ao nível do objecto base, onde esta operação possa ser realizada somente nos
objectos herdados.
O desenvolvimento de aplicações em PB exige o conhecimento de alguns conceitos, tais
como:
• Programação orientada a eventos - consiste em apresentar ao utilizador uma interface
gráfica e esperar que este tenha interacção com a mesma, de modo a desencadear os eventos
que estão definidos.
• PowerScript – linguagem de programação utilizada pelo PB;
• Janelas - As janelas são objectos de PB que se usam como contentores de objectos, com
a finalidade de implementar interfaces gráficas e que suportam a programação orientada a eventos
Ambiente Aplicacional Integrado
22
e programação orientada a objectos. As janelas podem ser de 6 tipos (Response, Child, Main, MDI,
Sheet e Popup), utilizadas de acordo com as necessidades pretendidas.
• Datawindow - Uma Datawindow é uma query em linguagem SQL que está ligada a uma
representação gráfica, sendo esta associada a uma determinada janela. Os elementos pretendidos
na query SQL estão representados numa distribuição gráfica e podem ser alterados no código da
aplicação. A query pode referenciar várias tabelas da Base de Dados, mas pode apenas alterar os
campos de uma. Existem vários tipos de DataWindows, as mais utilizadas são:
o datawindow tabular - é uma datawindow com os dados dispostos em formato de
listagem/tabela em que cada linha corresponde a um registo;
o datawindow freeform - é uma datawindow com os dados dispostos de forma livre
como se de um formulário se tratasse;
o datawindow external - é uma datawindow que não acede à base de dados e que
pode ser tabular ou freeform.
• Eventos - São acções que o utilizador realiza sobre uma aplicação, como por exemplo, um
clique sobre um botão, mover o rato, arrastar um ícone, etc.
• Objectos não visuais – permitem armazenar funções, eventos ou atributos.
• Objectos visuais – permitem armazenar DataWindows, botões, caixas de texto, etc.
Ambiente Aplicacional Integrado
23
3.3.3 Arquitectura do Sistema
Para facilitar a aprendizagem e utilização do PB, a AIRC recorre a regras de programação e à
utilização de um framework comum a todas as aplicações desenvolvidas e a desenvolver.
O framework comum a todas as aplicações foi criado com base nas bibliotecas
disponibilizadas pela Sybase, implementadas sobre a ferramenta de desenvolvimento, e
designadas por PFC´s. Este conjunto de bibliotecas originais foi, ao longo do tempo, reestruturado
por uma equipa de programação, a EDAFC (Equipa de Desenvolvimento das AFC´s), de acordo
com as necessidades internas da AIRC, criando um outro nível de bibliotecas designadas por AIRC
Foundation Classes (AFC’s).
O nível das AFC´s constitui a base da construção de aplicações da AIRC, visto que contém um
conjunto de objectos, criados à margem das PFC´s que são utilizados em praticamente todas as
janelas da aplicação. O nível PowerBuilder Foundation Extension (PFE) permite realizar heranças
e consequentemente alterações sobre os objectos das bibliotecas AFC´s, sendo que aos
programadores cabe a função de herdar os objectos do nível das PFE´s e programá-los sobre o
nível da aplicação.
O esquema do modelo de heranças de bibliotecas, que origina o framework comum de
desenvolvimento de aplicações da AIRC, encontra-se apresentado na figura 4 , sendo que o bloco
de bibliotecas envolvidas por uma caixa em tracejado, representa o nível onde o ambiente
aplicacional integrado está a ser desenvolvido.
PowerBuilder Foundation Classes
AIRC Foundation Classes
PowerBuilder Foundation Extension
Figura 4 - Esquema de heranças do framework da AIRC
Ambiente Aplicacional Integrado
24
Os níveis das bibliotecas PFC e AFC disponibilizam um conjunto de serviços ligados aos
objectos, nomeadamente janelas e DataWindows, que permitem simplificar a realização de
operações. De entre os serviços utilizados na implementação da aplicação destacam-se os
seguintes:
• Serviço de Expand – é utilizado nos botões de três pontos, que abrem outras janelas com o
intuito de devolver dados para uma DropDownDataWindow;
• Serviço de Resize – permite o redimensionamento dos objectos, permitindo aumentar ou
diminuir o seu tamanho consoante se minimize ou maximize uma janela ou quando se
altera a resolução do monitor.
• Serviço de Serial – este serviço substitui a implementação automática de campos do tipo
serial, realizada pelos motores de Base de Dados, devido a incompatibilidades
encontradas pelas equipas de programação da AIRC. Assim sendo, a utilização deste
serviço permite a definição de números de série para as DataWindows (chaves primárias
das tabelas) que incrementam automaticamente ao inserir um novo registo.
Ambiente Aplicacional Integrado
25
3.3.4 Framework Comum das Aplicações da AIRC
No modelo hierárquico de bibliotecas de desenvolvimento de aplicações da AIRC, o nível das
AFC´s permitiu criar software com um maior potencial, acrescentando às PFC´s um conjunto de
funcionalidades, que facilitam o trabalho do programador. Assim sendo, o framework inicial contém
um conjunto de bibliotecas que implementam funcionalidades comuns a todas as aplicações,
permitindo que a equipa de desenvolvimento possua à partida uma aplicação com funcionalidades
básicas, sendo que o objectivo consiste em partir desde logo para a implementação das
funcionalidades específicas da aplicação em causa.
A implementação deste projecto está a ser feita no nível AFC, pois é um ambiente de trabalho
geral que irá ser integrado em todas as aplicações da AIRC.
Ambiente Aplicacional Integrado
26
3.3.5 Base de Dados
A AIRC possui um modelo de base de dados global e integrado, no qual a informação
considerada comum está contida em tabelas gerais que são usadas por várias aplicações para
optimizar o uso da base de dados pelas diversas aplicações e evitar a utilização de informação
redundante.
Para normalizar os processos de definição de modelos de dados e garantir a correcta
integração no modelo geral foi criada a Comissão de Normalização da AIRC (CNA). A CNA trata de
assuntos relacionados com a base de dados como a geração e alteração de scripts e recolhe
alterações, efectuadas por diversas equipas de desenvolvimento, às tabelas gerais para lançar
novas versões gerais da base de dados quando necessário.
No projecto foram utilizadas algumas das tabelas já existentes na base de dados da AIRC, as
quais se encontram descritas na tabela 3 e para a adição de eventos foram criadas novas tabelas
(Tabela 4).
Nome Código Descrição
Utilizadores grlfuser Tabela de utilizadores das aplicações AIRC
Aplicações grlcapli Tabela das aplicações da AIRC
Permissões grlfperm Tabela de permissões nas aplicações AIRC
Entidades grlfenti Tabela de entidades gerais
Funcionários do SGD sgdffunc Tabela de funcionários do SGD
Tabela 3 - Tabelas utilizadas no ambiente aplicacio nal integrado
Nome Código Descrição
Eventos grlfeven Tabela de eventos por aplicação
Tipos de Eventos grlcteve Tabela de tipos de eventos
Participantes grldpaev Tabela de entidades participantes no evento
Tabela 4 - Tabelas criadas
Ambiente Aplicacional Integrado
27
Tabela de Eventos por Aplicação (Tabela 5)
A tabela de eventos possui interligação com as seguintes tabelas gerais:
• Tabela de tipos de eventos, de modo a definir qual o tipo de evento;
• Tabela de moradas, para identificar a localização do evento;
• Tabelas de utilizadores, de modo a identificar todos os eventos por utilizador;
• Tabela de aplicações, de modo a identificar todos os eventos por aplicação;
• Tabela de situações, de modo a definir qual a situação do evento por aplicação.
Tabela GRLFEVEN – Eventos por aplicação
Campo Tipo Designação
chave_feven integer PK da tabela
cod_capli char(3) Aplicação a que se refere o evento
chave_cteve integer Tipo de evento
chave_fuser integer Utilizador a que se refere o evento
descr_feven varchar(250) Descrição do evento
dtinicio_feven datetime Data/hora de inicio do evento
dtfim_feven datetime Data/hora de fim do evento
codsitu_capli char(3) Aplicação (situação)
codsitu_csitu smallint Código da situação
nummora_fmora integer Localização do evento (morada)
Tabela 5 - Tabela de eventos por aplicação
Ambiente Aplicacional Integrado
28
Tabela de Tipos de Eventos (Tabela 6)
A tabela de tipos de eventos não possui interligação com nenhuma tabela.
Tabela GRLCTEVE – Tipos de eventos
Campo Tipo Designação
chave_cteve integer PK da tabela
descr_cteve char(50) Descrição do tipo de evento
inactivo_cteve smallint Evento activo/inactivo
cor_cteve integer Cor do tipo de evento
Tabela 6 - Tabela de tipos de eventos
Tabela de Entidades Participantes do Evento (Tabela 7)
A tabela de participantes possui interligação com as seguintes tabelas gerais:
• Tabela de eventos por aplicação, para identificar o evento a que pertencem os
participantes;
• Tabela de tipos de entidades, de modo a identificar o tipo de entidade associada ao evento;
• Tabela de entidades, de modo a identificar a entidade participante no evento.
Tabela GRLDPAEV – Participantes nos eventos
Campo Tipo Designação
chave_dpaev integer PK da tabela
chave_feven integer Evento
chave_centi integer Tipo de entidade
num_fenti integer Entidade participante referente ao tipo
externa_fenti integer Entidade externa participante
Tabela 7 - Tabela de participantes de eventos
Ambiente Aplicacional Integrado
29
3.3.6 Mecanismo de autenticação
O ambiente aplicacional integrado consiste em ter um ambiente em que o utilizador possa
transitar entre aplicações sem ter que efectuar o login constantemente. O utilizador faz login uma
vez, e através do menu de aplicações (capitulo 3.3.7.3 ), poderá aceder a outras aplicações sem
ter que voltar a fazer novamente o login. Apesar de o utilizador só fazer login uma vez, este não
deixa de ser feito, simplesmente é feito de forma transparente para o utilizador, guardando o login
e a password introduzidos da primeira vez num Token (string formada por password + timestamp +
login), como é mostrado na Figura 5 .
Para este mecanismo foi necessário, ao nível das AFC’s modificar alguns objectos não
visuais. Estas alterações consistiram em criar novas funções e eventos e na alteração de outros já
existentes.
Foram alterados os eventos afc_logon , afc_commandline e pfc_open e a função
of_rundirect(as_args) , para a passagem do Token na linha de comandos. O Token é uma string
constituída pela password, pelo login do utilizador e por um timestamp, sendo que este último
permitirá uma validação do processo de login.
Foi também alterado o evento afc_logonsuccess , para que ao executar uma aplicação, seja
aberto o ambiente de trabalho geral.
Figura 5 – Mecanismo de autenticação
Ambiente Aplicacional Integrado
30
As funções criadas para o desenvolvimento deste mecanismo são apresentadas nas tabelas
8, 9, 10, 11 e 12:
Função of_getToken()
Descrição: cria um token (password + timestamp + lo gin)
Tipo Nome Descrição
Parâmetro s de entrada
Parâmetros de saída string ls_encrypt Token encriptado
Tabela 8 - Função of_getToken()
Função of_encrypt3()
Descrição: função polimórfica para encriptar o Toke n
Tipo Nome Descrição
Parâmetros de entrada
string as_chave Chave de encriptação
string as_encrypt Token a encriptar
inteiro ai_nummaxcar Número máximo de caracteres do
Token
Parâmetros de saída string ls_encrypted Token encriptado
Tabela 9 - Função of_encrypt3() Função of_decrypt3()
Descrição: função polimórfica para desencriptar o T oken
Tipo Nome Descrição
Parâmetros de entrada
string as_chave Chave de desencriptação
string as_decrypt Token a desencriptar
integer ai_nummaxcar Número máximo de caracteres do
Token
Parâmetros de saída string ls_decrypted Token desencriptado
Tabela 10 - Função of_decrypt3()
Ambiente Aplicacional Integrado
31
Função of_parseToken()
Descrição: função para interpretar o Token em passw ord, timestamp e login
Tipo Nome Descrição
Parâmetros de entrada
string as_token Token
string as_user Devolve o login
string as_pass Devolve a password
Parâmetros de saída inteiro li_rc -1 (Erro), 0 (ultrapassou o tempo),
1 (sucesso)
Tabela 11 - Função of_parseToken()
Função o f_alterainit()
Descrição: função para alterar o ficheiro .ini das aplicações
Tipo Nome Descrição
Parâmetros de entrada string as_inifile Nome do ficheiro .ini
Parâmetros de saída inteiro li_rc -1 (Erro), 1 (caso contrário)
Tabela 12 - Função of_alterainit()
Ambiente Aplicacional Integrado
32
3.3.7 Interfaces do projecto
Para o interface do ambiente aplicacional integrado foi criada uma janela
(w_ambientetrabalho ), que é herdada de uma w_sheet. Esta janela será integrada nas aplicações
da AIRC, como é mostrado na Figura 6 .
Figura 6 - Área de trabalho geral
Ambiente Aplicacional Integrado
33
3.3.7.1 Área de boas vindas ao utilizador
Dá as boas vindas ao utilizador, indicando o nome de funcionário, caso não tenha nenhum
funcionário associado, mostra o login. Para esta funcionalidade teve que ser criada a função
apresentada na Tabela 13 .
O nome do utilizador é um link para a janela de utilizadores, mostrada na Figura 7 .
Função of_getdadosutilizador()
Descrição: função que obtém o nome e o número de fu ncionário do utilizador
Tipo Nome Descrição
Parâmetros de entrada string as_nome Devolve o nome de funcionário
long al_num Devolve o número de funcionário
Parâmetros de saída inteiro -1 (Erro), 1 (caso contrário),
0 (datastore não devolveu nada)
Tabela 13 - Função of_getdadosutilizador()
Figura 7 - Janela de Utilizadores
A janela de utilizadores é constituída por uma listagem de todos os utilizadores registados no
sistema e por dois separadores do lado direito, um para as propriedades de cada utilizador e outro
para a atribuição de permissões ao utilizador.
Ambiente Aplicacional Integrado
34
3.3.7.2 Favoritos
A área de favoritos varia dependendo da aplicação que a está a utilizar. Para esta área foi
criado um objecto base, que os utilizadores de cada aplicação poderão herdar e alterar consoante
as suas necessidades. Para carregarem esse objecto necessitam de chamar a função
of_setfavoritos() , dentro do evento afc_loadfavoritos() e passar por parâmetro os dados
apresentados na Tabela 14 .
Função of_ setfavoritos ()
Descrição: função para atribuir o objecto de favori tos por aplicação
Tipo Nome Descrição
Parâmetros de entrada string as_designacao Designação dos favoritos
string as_objecto Nome do objecto visual de favoritos
Parâmetros de saída integer -1 (Erro) ou 1 (Sucesso)
Tabela 14 - Função of_setfavoritos()
Ambiente Aplicacional Integrado
35
3.3.7.3 Menu de aplicações
Para a criação deste menu foi utilizado o objecto u_cst_menu_hyperlink . Foi necessário
efectuar algumas alterações a este objecto, para que o fundo do menu da aplicação que está a
executar, fique com uma cor diferente. Essas alterações foram:
• Criação da função of_setselectedmode , para definir o modo de selecção de uma opção
do menu;
• Criação da função of_setselectedcolor , para alterar a cor do fundo da opção
seleccionada.
Este menu é criado dinamicamente e, é nele que vão ser mostradas todas as aplicações que
estão instaladas no computador e a que o utilizador tem permissões. A aplicação que está a
executar encontra-se desactivada e com o fundo de uma cor diferente. Passando com o rato por
cima do nome de uma aplicação é possível ver a versão que está instalada. Quando se executa
uma aplicação que já está a executar (com o mesmo utilizador), não é aberta uma nova janela,
apenas fica activa a que já estava a executar.
Para a criação deste menu e para a execução das aplicações nele contidas foi necessário
criar algumas funções e eventos, representadas nas tabelas 15, 16, 17 e 18.
Evento afc_mostraaplicac oes()
Descrição: evento para mostrar as aplicações no men u
Tipo Nome Descrição
Parâmetros de entrada
Parâmetros de saída
Tabela 15 - Evento afc_mostraaplicacoes()
Função of_getuserpermission_aplic()
Descrição: função para obter as permissões do utili zador para uma determinada aplicação
Tipo Nome Descrição
Parâmetros de entrada string as_aplic Nome da aplicação
Parâmetros de saída integer li_rc -1 (Erro), 0 (não tem permissões),
Permissões do utilizador
Tabela 16 - Função of_getuserpermission_aplic()
Ambiente Aplicacional Integrado
36
Função of_getversao()
Descrição: função para obter a versão de uma determ inada aplicação
Tipo Nome Descrição
Parâmetros de entrada string as_aplic Nome da aplicação
Parâmetros de saída string ls_versao Versão da aplicação
Tabela 17 - Função of_getversao()
Função of_getdesigaplic()
Descrição: função para obter a designação de uma de terminada aplicação
Tipo Nome Descrição
Parâmetros de entrada string as_aplic Nome da aplicação
Parâmetros de saída string ls_desig Designação da aplicação
Tabela 18 - Função of_getdesigaplic()
Ambiente Aplicacional Integrado
37
3.3.7.4 Documentos recebidos
Esta área está apenas acessível a utilizadores SGD. Visto o SGD ser uma aplicação
transversal a quase todas as aplicações do ERP AIRC, esta foi criada para facilitar e tornar mais
rápida a visualização e pesquisa de documentos recebidos provenientes da Gestão Documental,
pelo utilizador.
O link receber irá mostrar todos os documentos a receber entre as datas definidas pelo
utilizador. Por defeito, estas datas são inicializadas com uma diferença de 30 dias, em que, a data
final corresponde à data actual e a data inicial a 30 dias antes da data actual.
Para além de pesquisar documentos entre datas, é também possível pesquisar documentos
segundo os critérios mostrados na janela da Figura 8 .
Figura 8 - Pesquisar documentos recebidos
Ambiente Aplicacional Integrado
38
Para pesquisar e mostrar os documentos recebidos foi necessário criar algumas funções e
eventos, representadas nas tabelas 19 e 20.
Evento afc_pesquisadocumentos ()
Descrição: evento para pesquisar documentos recebid os e mostrá-los
Tipo Nome Descrição
Parâmetros de entrada
Parâmetros de saída
Tabela 19 - Evento afc_pesquisadocumentos()
Função of_getsqlentredatas ()
Descrição: função para construir o sql, para pesqui sar documentos recebidos entre datas
Tipo Nome Descrição
Parâmetros de entrada
string as_sql Sql inicial para a pesquisa
string as_datainicial Data inicial para a pesquisa
string as_datafinal Data final para a pesquisa
Parâmetros de saída string ls_sql_union Sql final para pesquisar entre datas
Tabela 20 - Função of_getsqlentredatas()
Ambiente Aplicacional Integrado
39
3.3.7.5 Área de Pesquisas
Para efectuar qualquer tipo de pesquisa é necessário seleccionar uma área de pesquisa no
menu mostrado na Figura 9 .
Figura 9 - Selecção de áreas
Para efectuar o carregamento das áreas dinamicamente no menu, consoante a aplicação a
executar, foi criado o evento afc_loadareas() , onde os programadores das aplicações necessitam
apenas de chamar a função of_setarea e mandar-lhe por parâmetro os dados apresentados na
Tabela 21 . Para mostrá-lo, foi criado o evento afc_popupmenu_pesquisa() (Tabela 22 ).
Função of_ setarea ()
Descrição: função para atribuir dados às áreas
Tipo Nome Descrição
Parâmetros de entrada
string as_codigo Código da área
string as_desig Designação da área
string as_obj Nome do objecto não visual de critérios
string as_tab Nome da DW de resultados
string as_chave Chave para passar como Retrieval
Argument á janela de pesquisa avançada
Parâmetros de saída integer li_item -1 (Erro) ou o índice do array
Tabela 21 - Função of_setarea()
Ambiente Aplicacional Integrado
40
Evento afc_popupmenu_pesquisa ()
Descrição: evento para mostrar menu de áreas
Tipo Nome Descrição
Parâmetros de entrada
Parâmetros de saída integer 1 (Sucesso) e -1 (Erro)
Tabela 22 - Evento afc_popupmenu_pesquisa()
Ao seleccionar uma determinada área, é efectuado um enquadramento da área de pesquisa,
como é mostrado na Figura 10 .
Figura 10 - Enquadramento da área de pesquisa
Ao seleccionar uma área são mostradas duas DataWindows (dependem da área
seleccionada), uma de critérios de pesquisa e outra de resultados (Figura 11 ). Para os critérios de
pesquisa é utilizado um objecto visual que será herdado pelos programadores das aplicações, e
estes atribuem-lhe a DataWindow Freeform que entenderem. Para os resultados é utilizada uma
DataWindow Tabular. Estes são fornecidos, através da mesma função em que é efectuado o
carregamento das áreas.
Para mostrar o objecto de critérios e a DataWindow de resultados foram criados os eventos
afc_abrircriterios() e afc_abrirresultados() .
Ambiente Aplicacional Integrado
41
Figura 11 - Pesquisa avançada da área de trabalho
Para o desenvolvimento da pesquisa avançada na área de trabalho, foi necessário criar os
eventos e funções das tabelas 23, 24, 25, 26, 27, 28 e 29:
Evento afc_pesquisaavancada ()
Descrição: evento para fazer a pesquisa avançada po r área
Tipo Nome Descrição
Parâmetros de entrada
Parâmetros de saída
Tabela 23 - Evento afc_pesquisaavancada()
Ambiente Aplicacional Integrado
42
Função of_getdwpropriedades ()
Descrição: função para obter as propriedades de um DataWindow
Tipo Nome Descrição
Parâmetros de entrada string as_dw Nome da DataWindow
Parâmetros de saída
Tabela 24 - Função of_getdwpropriedades()
Função of_gettabelasdddw ()
Descrição: função para obter o nome das tabelas da BD utilizadas por uma DDDW
Tipo Nome Descrição
Parâmetros de entrada string as_dddw Nome da DDDW
Parâmetros de saída
Tabela 25 - Função of_gettabelasdddw()
Função of_getdadospesquisa ()
Descrição: função para obter os dados da DW de crit érios, introduzidos pelo utilizador
Tipo Nome Descrição
Parâmetros de entrada
Parâmetros de saída
Tabela 26 - Função of_getdadospesquisa()
Função of_constroiinstrucaosqlavanc ()
Descrição: função para construir o sql (FROM + WHER E) para a pesquisa avançada
Tipo Nome Descrição
Parâmetros de entrada string as_sql Sql original da DataWindow de critérios
Parâmetros de saída string ls_sql Sql alterado
Tabela 27 - Função of_constroiinstrucaosqlavanc()
Ambiente Aplicacional Integrado
43
Função of_getsqlavanc ()
Descrição: função para construir o sql para pesquis ar na BD
Tipo Nome Descrição
Parâmetros de entrada string as_sql Sql para modificar
string as_dw Nome da DataWindow de critérios
Parâmetros de saída string ls_sql Sql final
Tabela 28 - Função of_getsqlavanc()
Função of_pesquisaavanc ()
Descrição: obtém resultados da BD
Tipo Nome Descriçã o
Parâmetros de entrada string as_sql Sql final para pesquisa
string as_tab Nome da DataWindow de resultados
Parâmetros de saída long ll_rc -1 (Erro) ou número de registos da
pesquisa
Tabela 29 - Função of_pesquisaavanc()
Pode ser também efectuada uma pesquisa avançada mais detalhada, clicando no link
Pesquisa avançada . Este link permite abrir a Janela de pesquisa avançada mostrada na Figura
12.
Ambiente Aplicacional Integrado
44
Figura 12 - Janela de pesquisa avançada
Esta janela recebe duas DataWindows, como a pesquisa anterior, com a diferença que esta
recebe a DataWindow de resultados com um Retrieval Argument, que corresponde à chave da
tabela utilizada na DataWindow. No caso da pesquisa de documentos, não é possível efectuar esta
pesquisa porque a tabela de documentos (grlfdocu) possui uma chave composta e esta janela não
está preparada para receber chaves compostas.
Ambiente Aplicacional Integrado
45
Para mostrar esta janela e devolver os resultados da pesquisa para o ambiente de trabalho,
foi criado o evento da Tabela 30 .
Evento afc_jpesquisaavancada ()
Descrição: evento para mostrar a janela de pesquisa avançada e devolver os resultados
para o ambiente de trabalho
Tipo Nome Descrição
Parâmetros de entrada
Parâmetros de saída integer 1 (Sucesso) e -1 (Erro)
Tabela 30 - Evento afc_jpesquisaavancada()
Para efectuar uma pesquisa simples, basta introduzir o texto do que se pretende pesquisar e
carregar na tecla “enter” ou com o rato carregar na “lupa”. Os resultados deste tipo de pesquisa
são mostrados numa DataWindow Tabular, como é mostrado na Figura 13 .
Figura 13 - Pesquisa simples
Ambiente Aplicacional Integrado
46
Para o desenvolvimento da Pesquisa simples foi necessário criar os eventos e funções das
tabelas 31, 32 e 33:
Evento afc_pesquisa ()
Descrição: evento para tratar a pesquisa simples co m uma datawindow
Tipo Nome Descrição
Parâmetros de entrada
string as_dw Nome da datawindow
string as_texto Texto introduzido pelo utilizador para
pesquisar
Parâmetros de saída
Tabela 31 - Evento afc_pesquisa()
Função of_getsql ()
Descrição: função para construir o sql final para p esquisar na Base de Dados
Tipo Nome Descrição
Parâmetros de entrada
string as_sql Sql para a pesquisa
string as_dw Nome da datawindow de pesquisa
string as_texto Texto introduzido pelo utilizador para
pesquisar
Parâmetros de saída string ls_sql Sql final para a pesquisa
Tabela 32 - Função of_getsql()
Função of_pesquisa ()
Descrição: função para efectuar a pesquisa na base de dados e guardar os resultados
obtidos
Tipo Nome Descrição
Parâmetros de entrada string as_sql Sql para a pesquisa
string as_tab Nome da datawindow de resultados
Parâmetros de saída long ll_rc -1 (Erro) ou número de resultados
devolvidos
Tabela 33 - Função of_pesquisa()
Ambiente Aplicacional Integrado
47
3.3.7.6 Calendário
Para criar o calendário foi necessário fazer algumas alterações, a nível das AFC’s, no objecto
afc_u_calendar . Essas alterações foram:
• Criação de uma função para atribuir o modo de marcação dos dias no calendário
(of_setmarkeddaymode )
• Criação de uma função para receber um array com os dias dos eventos e outro com as
cores atribuídas a cada dia dos eventos (of_setmarkedday(ad_dates[], al_colors[]) ).
• Alteração da função of_drawmonth para mostrar os dias do calendário consoante o modo
escolhido.
É neste calendário que ficam assinalados os eventos adicionados. Consoante os dias e o tipo
de evento associado a eles, a cor destes no calendário é alterada. Para obter as cores, de cada
tipo de evento da base de dados, foi criada a função of_getcores(al_chave) ; e para obter todas as
datas situadas entre uma data inicial e uma data final, de um determinado evento e as suas
respectivas cores foi criada a função of_geteventosdatas(ad_data) .
Para adicionar um novo evento (Figura 14 ) é necessário clicar no link Adicionar novo
evento , e será aberta uma janela para criar o novo evento (Figura 15 ). Para alterar ou apagar um
evento é necessário clicar em cima do evento pretendido no menu de eventos (Figura 21 ), e será
aberta uma janela igual à da Figura 15 , mas com os dados relativos ao evento já preenchidos.
Figura 14 - Adicionar novo evento
A Janela Novo Evento é constituída por duas DataWindows Externals, sem acesso à base de dados, uma para os dados do evento (DataWindow Freeform) e outra para os participantes do evento (DataWindow Tabular).
Ambiente Aplicacional Integrado
48
Figura 15 – Janela para criar um novo evento
Na área de detalhes do evento são introduzidos os dados relativos ao novo evento. O tipo
de evento é escolhido na DropDownDataWindow ou carregando no botão de três pontos. Na
segunda alternativa, é aberta uma janela de tipos de eventos (Figura 16 ).
Deve ser introduzida uma descrição do evento (obrigatório), a situação do evento e o intervalo
em que o evento irá decorrer (obrigatório). A situação do evento depende da aplicação que estiver
a executar.
Ambiente Aplicacional Integrado
49
Figura 16 - Janela Tipos de Eventos
Esta janela possui dois modos, selecção e manutenção. No modo de selecção é apenas
possível escolher um tipo de evento e devolve-lo para ser mostrado na janela de novos eventos.
Não é possível devolver eventos inactivos. No modo de manutenção é possível criar um novo
evento, apagar ou alterar um evento já existente.
Para alternar entre os dois modos é necessário clicar em cima do link Em selecção ou Em
manutenção , consoante o que estiver a ser mostrado no momento.
Ambiente Aplicacional Integrado
50
Para atribuir uma cor ao tipo de evento, é necessário clicar no botão de três pontos
correspondente ao tipo de evento e seleccionar a cor pretendida (Figura 17 ).
Figura 17 - Atribuição de uma cor ao tipo de evento
Na área de localização do evento o utilizador pode seleccionar a freguesia onde se irá
realizar o evento e, consoante a sua escolha, irão ser carregadas as moradas correspondentes a
essa freguesia. De seguida, poderá seleccionar a morada que pretender e o sítio/lugar será
preenchido automaticamente. A morada também pode ser escolhida na janela de moradas
codificadas (Figura 18 ), que abre ao clicar no botão de três pontos. Ao introduzir o código postal e
premir a tecla “enter”, será aberta a janela de códigos postais (Figura 19 ). A janela de moradas
codificadas e a janela de códigos postais são janelas gerais de todas as aplicações do ERP AIRC.
Ambiente Aplicacional Integrado
51
Figura 18 - Janela de moradas codificadas
Ambiente Aplicacional Integrado
52
Figura 19 - Janela de códigos postais
Na área de participantes do evento, podem ser adicionados ou removidos participantes do
evento. Para adicionar é necessário clicar no link Adicionar e será aberta a janela de manutenção
de entidades (Figura 20 ), onde o utilizador poderá pesquisar o participante que pretende e
devolve-lo para a janela de novo evento. Para remover basta seleccionar o participante que se
pretende remover, na DataWindow de participantes e clicar no link Remover .
Cada evento tem que ter pelo menos um participante associado a ele.
Ambiente Aplicacional Integrado
53
Figura 20 - Janela de manutenção de entidades
Ao clicar em cima de um dia do calendário que tenha eventos associados, estes irão aparecer
num menu por baixo do calendário (Figura 21 ). Este menu é criado dinamicamente, consoante o
número de eventos associados ao dia seleccionado. Para obter esses eventos, por aplicação, foi
criada a função of_geteventos(ad_data) . Para mostrar este menu foi criado o evento
afc_mostraeventos() .
Figura 21 - Menu de eventos
Ambiente Aplicacional Integrado
54
3.3.7.7 Menu de atalhos
Figura 22 - Menu de atalhos
O menu de atalhos (Figura 22 ) é criado dinamicamente, consoante a aplicação que está a
executar e a área seleccionada. Ele irá ser carregado pelos programadores das aplicações,
chamando a função of_setopcoes() , no evento afc_loadopcoes() e passando-lhe por parâmetro
os dados apresentados na Tabela 34 .
Função of_ setopcoes ()
Descrição: função para atribuir as opções ao menu d e atalhos
Tipo Nome Descrição
Parâmetros de entrada
string as_codigoarea Código da área
integer ai_codigo Código da opção
string as_design Designação da opção
string as_tip Mensagem que aparece quando se
passa com o rato por cima da opção
string as_imagem
Nome da imagem correspondente à
opção, caso não tenha nenhuma por
“disabledpicture”
boolean ab_bold True (texto a bold) ou false (texto não
está a bold)
Parâmetros de saída integer li_opitem -1 (Erro) ou o índice do array
Tabela 34 - Função of_setopcoes()
Ambiente Aplicacional Integrado
55
3.3.7.8 Área central
Para carregar o objecto de inicio os programadores das aplicações necessitam apenas de
chamar a função of_setinicio , dentro do evento afc_loadinicio() e passar-lhe por parâmetro os
dados apresentados na Tabela 35 .
Função of_ setinicio ()
Descrição: função para atribuir o objecto de inicio de cada aplicação
Tipo Nome Descrição
Parâmetros de entrada string as_objecto Nome do objecto não visual de inicio
Parâmetros de saída integer -1 (Erro) ou 1 (Sucesso)
Tabela 35 - Função of_setinicio()
Ambiente Aplicacional Integrado
56
3.5 Testes
Ao longo do desenvolvimento da aplicação foram sendo feitos alguns testes pontuais e
informais para garantir determinados comportamentos por parte da aplicação.
Antes de fazer a janela do ambiente de trabalho foi criado um menu na toolbar, para verificar
se as aplicações estavam a aparecer consoante as validações pretendidas. Depois de testar essa
parte é que se passou para a parte gráfica do ambiente de trabalho.
Foi feita a integração do ambiente de trabalho com algumas aplicações do ERP AIRC, o SGD,
o SGA, o SGP e o STA, para verificar se estava como pretendido e corrigir alguns comportamentos
irregulares deste.
Ambiente Aplicacional Integrado
57
4. Conclusões
Este estágio consistiu em criar um ambiente aplicacional integrado, para facilitar aos
utilizadores a transição entre aplicações e tornar o acesso a uma série de funcionalidades extra,
para complementar o seu trabalho diário, tornando-o mais rápido.
As funcionalidades criadas no ambiente aplicacional integrado foram:
• Pesquisa de documentos recebidos
• Pesquisas avançada e simples (dinâmicas), por área
• Favoritos
• Menu de atalhos
• Calendário
• Eventos
Ao longo do decorrer do estágio, nomeadamente durante as fases de elaboração e
construção, novas funcionalidades surgiram e que podem trazer maiores benefícios para os
utilizadores das aplicações da AIRC, tornando-a mais robusta e eficaz. Estas funcionalidades não
foram integradas no estágio e sim, num trabalho futuro. De entre as novas funcionalidades
destacam-se as seguintes:
• Mostrar eventos na área de trabalho por aplicação e utilizador;
• Full-Search em diversas áreas seleccionadas;
• Envio por SMS de notificações de eventos.
A principal dificuldade encontrada foi a aprendizagem da ferramenta de desenvolvimento
utilizada no estágio (PowerBuilder), isto porque, esta é uma ferramenta desconhecida e a
informação disponível sobre a mesma é escassa. Houve, também, algumas dificuldades em
compreender o funcionamento do Framework da AIRC e as suas heranças. Contudo, e com a
ajuda obtida através de alguns dos programadores da AIRC e da formação obtida, esta dificuldade
foi diminuindo ao longo do decorrer do estágio.
Apareceram também algumas dificuldades na integração do ambiente aplicacional integrado
com outras aplicações da AIRC.
Ambiente Aplicacional Integrado
58
5. Bibliografia
[1] “PowerBuilder Foundation Classes Getting Started”, Julho 2004, Sybase (documentação do
PowerBuilder)
[2] “PowerBuilder Foundation Classes Library User´s Guide”, Março 2003, Sybase (documentação
do PowerBuilder)
[3] “Normas de Programação”, Outubro de 2000, AIRC (documentação interna da AIRC)
[4] “Guia de boas práticas para a interface das aplicações”, Julho de 2009, AIRC (documentação
interna da AIRC)
[5] Documentação relativa às AFC´s, AIRC (documentação interna da AIRC)
[6] “Scrum in five minutes”, disponível em
http://www.softhouse.se/Uploades/Scrum_eng_webb.pdf, consultada em 22 de Julho de 2009
Ambiente Aplicacional Integrado
59
6. Anexos
Anexo A – Proposta de Estágio
Anexo B – Sprint Backlog
Anexo C – Product Backlog