Upload
ngotram
View
239
Download
0
Embed Size (px)
Citation preview
Mestrado em Informática e Sistemas
Instituto Politécnico de Coimbra
Instituto Superior de Engenharia de Coimbra
Departamento de Engenharia Informática e de Sistemas
INTEGRAÇÃO DE APLICAÇÕES AIRC COM
FERRAMENTAS OFFICE
Ivo Manuel Ramos dos Santos
Coimbra, Setembro, 2009
Instituto Politécnico de Coimbra
Instituto Superior de Engenharia de Coimbra
Departamento de Engenharia Informática e de Sistemas
Mestrado em Informática e Sistemas
Relatório Final de Estágio
INTEGRAÇÃO DE APLICAÇÕES AIRC COM
FERRAMENTAS OFFICE
Orientador DEIS/ISEC: Prof. Doutor Jorge Barbosa
Orientador AIRC: Eng.º João Carlos
Eng.º José Cura
Ivo Manuel Ramos dos Santos
Coimbra, Setembro, 2009
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio i
Agradecimentos
Ao Doutor Jorge Barbosa, pela sua orientação.
Ao co-orientador Eng.º João Carlos e tutor Eng.º José Cura pela ajuda e orientação.
Eng.ª Cláudia Ribeiro, Eng.ª Marta Cunha, Eng.º Pedro Rosa, Eng.º José Saraiva, Eng.º Luís Silva e Eng.º
Anselmo Craveiro pelo apoio e ajuda prestada durante todo o estágio.
Aos utilizadores do fórum de dúvidas de implementação de macros para o OpenOffice
(www.oooforum.com) pela ajuda prestada directa ou indirectamente, nomeadamente: Andrew Pitonyak,
DannyB, ms777, DVezina, B Marcelly, SergeM, JohnV, hol.sten, Villeroy, vitcaro, uros, probe1 e
Rup.Xamqon.
A Andrew Douglas Pitonyak pelo seu excelente documento sobre o OpenOffice.
Ao meu irmão gémeo, Nuno.
À minha esposa Cristina e família por todo o caminho percorrido até aqui.
Aos meus amigos e colegas do DEIS com especial referência ao Nuno Teixeira, João Araújo, João
Nascimento, Daniel Jorge e Sérgio Costeira.
Aos meus colegas de estágio Eduardo Pratas, Ricardo Machado, Enoque Carvalho, André Simões e Bárbara
Correia.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio ii
Resumo
A utilização e suporte de pacotes de produtividade são parte integrante de muitas aplicações
AIRC2000 devido às necessidades de criação, manipulação e gestão de documentos com base na
informação relativa ao trabalho que cada aplicação AIRC2000 realiza. Estas necessidades
verificam-se principalmente nas aplicações que fazem parte da Área Administrativa. O Sistema de
Gestão Documental (SGD), que visa dar resposta às necessidades decorrentes do registo e
circulação de documentos internos e externos, e o Sistema de Tratamento de Actas (STA) que visa
facilitar a elaboração das Actas e dos documentos com elas relacionados. Verificam-se também as
mesmas necessidades na Área de Urbanismo que é composta pelas aplicações, Sistema de
Controlo de Empreitadas (SCE) que tem como objectivo o acompanhamento das empreitadas de
obras públicas de modo a facilitar a sua gestão, e o Sistema de Processos de Obras (SPO) que tem
como objectivo reduzir o tempo de trabalho manual e aumentar o grau de precisão, permitindo
gerar e alterar os documentos usuais das Obras Particulares Autárquicas. Os clientes dependem
destas aplicações para realizarem o seu trabalho no dia-a-dia. Num tempo de dificuldades
económicas surgiu a necessidade das aplicações AIRC2000 suportarem pacotes de produtividade
livres de custos nomeadamente, o OpenOffice, para a realização desse mesmo trabalho. Os
objectivos deste estágio foram: a expansão do suporte ao OpenOffice, realizando o módulo de
integração com o Calc, recorrendo a OLE Automation, visto que constitui a alternativa ao Excel; a
criação de uma camada de gestão das várias alternativas de funcionamento com pacotes de
produtividade, sem necessitar de configurações regulares do utilizador, usando a informação
presente no registo do Windows; a minimização do impacto da transição da utilização do
Microsoft Office para a utilização do OpenOffice, com a criação de extensões, no ambiente interno
de criação de macros do OpenOffice, que visam a melhoria da performance de conversão dos
modelos Word existentes para modelos OpenOffice completamente funcionais; a criação de
Webservices que visam a manutenção da coerência entre a informação de marcadores
obrigatórios e os marcadores que estão de facto no modelo; e por fim, a correcção de problemas
existentes. O resultado do trabalho realizado permitirá que os utilizadores das aplicações
AIRC2000 possam, finalmente, optar por um pacote de produtividade livre de custos para o seu
trabalho, podendo desta forma reduzir os custos de operação, sem impacto nos seus hábitos de
trabalho.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio iii
Abstract
The use and support of office software suites are a integral part of many AIRC2000 applications
due to the needs of creation, manipulation and document management based on information
related to the work that each AIRC2000 application develops. These needs exist mainly in
applications that are part of the Administrative Area. The Sistema de Gestão Documental (SGD),
which aims to meet the needs arising from the registration and use of internal and external
documents, and Sistema de Tratamento de Actas (STA), which aims to facilitate the preparation of
the Minutes and documents related to them. There are also the same needs in the Urban Area
which consists of the following applications, Sistema de Controlo de Empreitadas (SCE), which
aims at monitoring of public works contracts in order to facilitate administration, and the Sistema
de Processos de Obras (SPO) which aims to cut down on manual labor and increase the degree of
accuracy, allowing to generate and modify documents of local private works. Customers rely on
them to do their day-to-day job. In a time of economic crisis the need of AIRC2000 applications to
support office software suites free of cost, namely OpenOffice, to achieve that same work, have
arise. The objectives of this work were: to expand the support for OpenOffice, performing the
integration module with Calc, using OLE Automation, as it is the alternative to Microsoft Office
Excel; to create a layer of management of the various alternative configurations, without requiring
regular interaction from the user, using the information present in the Windows registry; to
minimize the impact of the transition from the use of Microsoft Office for the use of OpenOffice,
with the creation of extensions on the internal development environment to create macros on
OpenOffice, which aim at improving the performance of converting existing Word templates to
fully functional OpenOffice templates; to create Webservices aimed at maintaining consistency
between the information of required bookmarks and the bookmarks that are in fact present in the
template; and finally, the correction of existing problems. The result of the executed work will
allow the customers of the AIRC2000 applications to, finally, choose a office software suite free of
charge for their work and as an advantage reducing operating costs, without impacting existing
work habits.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio iv
Definições, Acrónimos e Abreviaturas
Abreviatura Definição
ACE Agente de Comunicações Externas
AIRC Associação de Informática da Região Centro
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.
AFC AIRC Foundation Classes
API Application Programming Interface ou Interface de Programação de
Aplicativos
CLSID CLasS IDentifier - A identificação de um objecto COM
COM Component Object Model
DCOM Distributed Component Object Model
DEIS Departamento de Engenharia Informática e de Sistemas
EDAFC Equipa de Desenvolvimento das AFC
EPI Estágio/Projecto Industrial
ERP Enterprise Resource Planning
GUI Graphical User Interface ou Interface Gráfica do Utilizador
IBM International Business Machines
IDE Integrated Development Environment ou Ambiente Integrado de
Desenvolvimento
IPC Instituto Politécnico de Coimbra
ISEC Instituto Superior de Engenharia de Coimbra
MIS Mestrado em Informática e Sistemas
OLE Object Linking and Embedding
OO OpenOffice - Pacote de produtividade OpenSource
PB
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.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio v
PBL PowerBuilder Library
PFC PowerBuilder Foundation Classes
PFE PowerBuilder Foundation Extension
SCE Sistema de Controlo de Empreitadas
SDK Software Development Kit
SGD Sistema de Gestão Documental
STA Sistema de Tratamento de Actas
URL Uniform Resource Locator ou Localizador de Recursos Universal
XML eXtensible Markup Language
Marcador
Um marcador identifica uma localização ou uma selecção de texto à qual se
atribuiu um nome e identifica para referência futura. No âmbito das
aplicações AIRC é colocado em modelos de documentos e utilizado para
substituição do seu texto por outro relevante à aplicação AIRC durante a
geração de documentos através da API.
Modelo
Um modelo é um tipo de documento que cria uma cópia de si próprio quando
o abre. No Microsoft Office Word 2007, um modelo pode ser um ficheiro .dot,
.dotx ou um ficheiro .dotm. No OpenOffice Writer, um modelo é um ficheiro
.ott.
Livro Um livro do Microsoft Office Excel ou OpenOffice Calc é um ficheiro que
contém uma ou mais folhas de cálculo que podem ser utilizadas para
organizar vários tipos de informações.
Folha de
Cálculo
Documento principal utilizado no Microsoft Office Excel ou OpenOffice Calc
para armazenar e trabalhar com dados. Também denominada folha de
trabalho. Uma folha de cálculo é composta por células organizadas em
colunas e linhas; uma folha de cálculo está sempre armazenada num livro.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio vi
Índice
Agradecimentos ___________________________________________________________________________ i
Resumo _________________________________________________________________________________ ii
Abstract ________________________________________________________________________________ iii
Definições, Acrónimos e Abreviaturas ________________________________________________________ iv
Índice __________________________________________________________________________________ vi
Índice de Figuras _________________________________________________________________________ x
Índice de Tabelas ________________________________________________________________________ xii
1 – Introdução ___________________________________________________________________________ 1
1.1 – Contextualização do Problema ________________________________________________________ 1
1.2 – Objectivos _________________________________________________________________________ 1
1.3 – Estrutura do Documento _____________________________________________________________ 2
2 – Enquadramento _______________________________________________________________________ 3
2.1 – AIRC______________________________________________________________________________ 3
2.2 – ISEC/DEIS/MIS _____________________________________________________________________ 3
2.2.1 – ISEC ___________________________________________________________________________ 3
2.2.2 – DEIS ___________________________________________________________________________ 4
2.2.3 – MIS__ _________________________________________________________________________ 4
2.3 – Proposta de Estágio _________________________________________________________________ 5
2.4 – Processo de Software ________________________________________________________________ 6
2.5 – Tecnologia Adoptada ________________________________________________________________ 7
2.5.1 – PowerBuilder 11.2 _______________________________________________________________ 7
2.5.2 – Microsoft Office Word/Excel 2000, XP (2002), 2003 e 2007 ______________________________ 7
2.5.3 – OpenOffice 3.0, 3.1 _______________________________________________________________ 8
2.5.4 – Microsoft Virtual PC 2007 _________________________________________________________ 8
2.5.5 – IHMC CmapTools ________________________________________________________________ 8
2.5.6 – Notepad++ _____________________________________________________________________ 8
2.5.7 – XVI32 e Hex Editor Neo ___________________________________________________________ 8
2.5.8 – WinMerge ______________________________________________________________________ 8
3 - Trabalho realizado _____________________________________________________________________ 9
3.1 – Metodologia de Desenvolvimento _____________________________________________________ 9
3.2 – Plano de Desenvolvimento __________________________________________________________ 10
3.3 – Requisitos ________________________________________________________________________ 11
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio vii
3.4 – Plano de Arquitectura ______________________________________________________________ 12
3.5 – Implementação ___________________________________________________________________ 13
3.5.1 – Criação do módulo Calc __________________________________________________________ 13
3.5.1.1 – Tarefas de Suporte ___________________________________________________________ 14
3.5.1.1.1 – Criar e conectar o objecto de ligação à API do OpenOffice Calc _____________________ 15 3.5.1.1.2 – Variável Desktop __________________________________________________________ 15 3.5.1.1.3 – Desligar ou desconectar do Objecto OLE remoto da API __________________________ 16
3.5.1.2 – Tarefas de Operação sobre Livros _______________________________________________ 16
3.5.1.2.1 – Abrir Livros ______________________________________________________________ 16 3.5.1.2.1.1 – PropertyValue ___________________________________________________ 16 3.5.1.2.1.2 - Filename2url _____________________________________________________ 18 3.5.1.2.1.3 – Abertura ________________________________________________________ 18
3.5.1.2.2 – Activar Livros _____________________________________________________________ 19 3.5.1.2.3 – Activar Folha de Cálculo ____________________________________________________ 19 3.5.1.2.4 – Guardar Livros ____________________________________________________________ 19 3.5.1.2.5 – Saber Livro Activo _________________________________________________________ 20 3.5.1.2.6 – Saber Nome Folha de Cálculo Activa __________________________________________ 20 3.5.1.2.7 Fechar Livros ______________________________________________________________ 21 3.5.1.2.8 – Criar Novo Livro___________________________________________________________ 21 3.5.1.2.9 – Saber Número de Livros Abertos _____________________________________________ 22 3.5.1.2.10 – Saber Número de Folhas __________________________________________________ 23 3.5.1.2.11 – Saber se está Aberto _____________________________________________________ 24 3.5.1.2.12 – Saber se é Livro Activo ____________________________________________________ 25 3.5.1.2.13 – Alterar Nome da Folha de Cálculo Activa no Livro Activo ________________________ 26 3.5.1.2.14 – Saber se a Janela está Visível _______________________________________________ 26 3.5.1.2.15 – Devolver Estado da Janela do OpenOffice ____________________________________ 27 3.5.1.2.16 – Definir Visibilidade da Janela do Livro ________________________________________ 27 3.5.1.2.17 – Definir Estado da Janela do Livro____________________________________________ 28 3.5.1.2.18 – Obtenção do Conteúdo de uma Célula (Linha, Coluna) __________________________ 29 3.5.1.2.19 – Obtenção do Conteúdo de uma Célula (Endereço) _____________________________ 29 3.5.1.2.20 – Definir Conteúdo de uma Célula (Linha, Coluna) _______________________________ 30 3.5.1.2.21 – Definir Conteúdo de uma Célula (Endereço) __________________________________ 30 3.5.1.2.22 – Definir Formato de uma Célula (Linha, Coluna) ________________________________ 31 3.5.1.2.23 – Definir Formato de uma Célula (Endereço) ____________________________________ 32 3.5.1.2.24 – Insere Linha ____________________________________________________________ 32
3.5.1.3 – Testes _____________________________________________________________________ 32
3.5.2 – Camada de Abstracção ___________________________________________________________ 33
3.5.2.1 – Criar camada de abstracção para permitir o funcionamento das aplicações Office ou
OpenOffice de forma transparente __________________________________________________________ 33
3.5.2.1.1 – Implementação de funções que visam a obtenção coerente de informação relativa à criação, abertura e gravação de modelos, documentos e livros ___________________________________ 37
3.5.2.1.1.1 – Verifica se o OpenOffice Writer se encontra instalado ___________________ 38 3.5.2.1.1.2 – Verifica se o Microsoft Office Word se encontra instalado ________________ 39 3.5.2.1.1.3 – Verifica se o OpenOffice Calc se encontra instalado _____________________ 40 3.5.2.1.1.4 – Verifica se o Microsoft Office Excel se encontra instalado ________________ 41 3.5.2.1.1.5 – Obtém a aplicação associada a uma dada extensão _____________________ 41 3.5.2.1.1.6 – Preenchimento de dropdown com as extensões compatíveis com o que está instalado 42
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio viii
3.5.2.1.1.7 – Restantes funções que compõem a camada de abstracção _______________ 43 3.5.2.1.2 – Criação de objectos de ligação _______________________________________________ 43
3.5.3 – Tarefas auxiliares _______________________________________________________________ 44
3.5.3.1 – Guardar documentos/livros em modo de compatibilidade ___________________________ 44
3.5.3.2 – Guardar documentos no formato docx em Office’s antigos que tenham o Pack de
compatibilidade com 2007 instalado ________________________________________________________ 44
3.5.3.3 – Extensões para OpenOffice Writer que facilitam a visibilidade de marcadores em modelos
Word (.dot,.dotx) convertidos para .ott. ______________________________________________________ 46
3.5.3.3.1 – Coloca Visibilidade Marcador ________________________________________________ 49 3.5.3.3.2 – Apaga Visibilidade Marcador ________________________________________________ 51
3.5.4 – Correcção dos problemas existentes nas funcionalidades já criadas pela AIRC que interagem com
pacotes de produtividade _________________________________________________________________ 53
3.5.4.1 – Reformulação Colocar Marca com dispatcher’s para resolver problema de colocação de
marcadores em tabelas e molduras no OpenOffice Writer _______________________________________ 54
3.5.4.2 – Outras correcções ____________________________________________________________ 58
3.5.5 – WebServices ___________________________________________________________________ 59
3.5.5.1 – Webservice que, para o modelo associado a uma dada acção, devolva informação sobre os
marcadores que estão presentes nesse modelo e se estão na Base de Dados ________________________ 60
3.5.5.2 – Webservice que recebe por argumento, acção ou um caminho para um modelo e um array de
marcadores. Devolve os marcadores, do array recebido que não estão presentes no modelo __________ 68
3.5.6 – Detecção de marcadores obrigatórios na Janela de Acções ______________________________ 73
4 – Utilização do Módulo de Integração Calc e Camada de Abstracção numa aplicação AIRC ___________ 76
4.1 – Integração com o SCE _______________________________________________________________ 76
4.2 – Funcionalidades do SCE _____________________________________________________________ 76
4.2.1 – Exportar Orçamentação __________________________________________________________ 76
4.2.2 – Importar Orçamentação __________________________________________________________ 78
4.2.3 – Exportação de mapas ____________________________________________________________ 78
4.3 – Efeito do funcionamento da camada de abstracção no SCE ________________________________ 79
5 – Conclusões __________________________________________________________________________ 82
5.1 – Resultados do Estágio ______________________________________________________________ 82
5.1.1 – Versão Alfa 1.0 do Módulo de Integração com OpenOffice Calc __________________________ 82
5.1.2 – Camada de Abstracção ___________________________________________________________ 82
5.1.3 – Webservices ___________________________________________________________________ 82
5.1.4 – Janela de acções ________________________________________________________________ 83
5.2 – Principais Dificuldades ______________________________________________________________ 83
5.3 – Apreciação Crítica do Estágio _________________________________________________________ 83
5.4 – Trabalho Futuro ___________________________________________________________________ 84
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio ix
6 – Bibliografia __________________________________________________________________________ 85
Anexos ________________________________________________________________________________ 86
ANEXO A – Objecto de ligação ao OpenOffice Calc – Especificação de implementação e funcionalidades _ 87
ANEXO B – Product Backlog e Sprint Backlog __________________________________________________ 97
ANEXO C – Documentação Webservice _____________________________________________________ 105
ANEXO D – Informação Online Consultada ___________________________________________________ 123
ANEXO E – Documentação Extensões OpenOffice _____________________________________________ 132
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio x
Índice de Figuras
Figura 3.1.1 – Descrição da Metodologia Scrum _______________________________________________ 10
Figura 3.2.1 – Mapa de Gantt ______________________________________________________________ 10
Figura 3.4.1 – Esquema de Heranças da Framework da AIRC _____________________________________ 12
Figura 3.5.1 – Hierarquia de Operações ______________________________________________________ 14
Figura 3.5.2 – Processo de Desligar __________________________________________________________ 16
Figura 3.5.3 – Conversão de Caminhos para Livros _____________________________________________ 18
Figura 3.5.4 – Abertura de Livros ___________________________________________________________ 18
Figura 3.5.5 – Activar Livros ________________________________________________________________ 19
Figura 3.5.6 – Activar Folha de Cálculo _______________________________________________________ 19
Figura 3.5.7 – Saber Livro Activo ____________________________________________________________ 20
Figura 3.5.8 – Saber Nome Folha de Cálculo Activa _____________________________________________ 20
Figura 3.5.9 – Fechar Livros ________________________________________________________________ 21
Figura 3.5.10 – Criar Novo Livro ____________________________________________________________ 21
Figura 3.5.11 – Saber Número de Livros Abertos _______________________________________________ 22
Figura 3.5.12 – Saber Número de Folhas _____________________________________________________ 23
Figura 3.5.13 – Saber se está Aberto _________________________________________________________ 24
Figura 3.5.14 – Saber se é Livro Activo _______________________________________________________ 25
Figura 3.5.15 – Alterar Nome da Folha de Cálculo Activa no Livro Activo ____________________________ 26
Figura 3.5.16 – Devolver Estado da Janela do OpenOffice ________________________________________ 27
Figura 3.5.17 – Definir Estado da Janela do Livro _______________________________________________ 28
Figura 3.5.18 – Obtenção do Conteúdo de uma Célula (Linha, Coluna) _____________________________ 29
Figura 3.5.19 – Definir Conteúdo de uma Célula (Linha, Coluna) __________________________________ 30
Figura 3.5.20 – Definir Conteúdo de uma Célula (Linha, Coluna) __________________________________ 31
Figura 3.5.21 – Insere Linha ________________________________________________________________ 32
Figura 3.5.22 – Hierarquia dos objectos de ligação _____________________________________________ 34
Figura 3.5.23 – Definição no registo do Windows para .doc ______________________________________ 36
Figura 3.5.24 – Definição no registo do Windows para .doc ______________________________________ 37
Figura 3.5.25 – Verifica se o OpenOffice Writer se encontra instalado ______________________________ 38
Figura 3.5.26 – Verifica se o Microsoft Office Word se encontra instalado __________________________ 39
Figura 3.5.27 – Verifica se o OpenOffice Calc se encontra instalado ________________________________ 40
Figura 3.5.28 – Verifica se o Microsoft Office Excel se encontra instalado ___________________________ 41
Figura 3.5.29 – TabPage de Preferências _____________________________________________________ 43
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio xi
Figura 3.5.30 – TabPage de Preferências com definição de gravação em modo de compatibilidade ______ 44
Figura 3.5.31 – Guardar documentos no formato docx em Office’s antigos que tenham o Pack de
compatibilidade com 2007 instalado ________________________________________________________ 46
Figura 3.5.32 – Marcador após colocação no Word _____________________________________________ 47
Figura 3.5.33 – Visual de um marcador normal após colocação no OpenOffice _______________________ 47
Figura 3.5.34 – Solução - Visual do marcador visível no OpenOffice ________________________________ 47
Figura 3.5.35 – Primeiro passo – Conversão de Modelos Word em Modelos OpenOffice Writer _________ 47
Figura 3.5.36 – Primeiro passo – A realizar a conversão _________________________________________ 48
Figura 3.5.37 – Coloca Visibilidade Marcador __________________________________________________ 50
Figura 3.5.38 – Apaga Visibilidade Marcador __________________________________________________ 52
Figura 3.5.39 – Dispatch Framework do OpenOffice [6] _________________________________________ 55
Figura 3.5.40 – Colocação de Marcador – Primeira Versão _______________________________________ 56
Figura 3.5.41 – Colocação de Marcador – Segunda Versão _______________________________________ 57
Figura 3.5.42 – Documento aberto em modo de compatibilidade _________________________________ 59
Figura 3.5.43 – Documento aberto sem estar em modo de compatibilidade _________________________ 59
Figura 3.5.44 – Pesquisa realizada à base de dados _____________________________________________ 61
Figura 3.5.45 – Template de XML dos dados devolvidos _________________________________________ 62
Figura 3.5.46 – Webservice Marcadores Obrigatórios (Algoritmo) _________________________________ 63
Figura 3.5.47 – Webservice Marcadores Obrigatórios (Arquitectura) _______________________________ 64
Figura 3.5.48 – Configuração na DCOM ______________________________________________________ 65
Figura 3.5.49 – Webservice verifica presença marcadores (primeira forma de pesquisa) _______________ 70
Figura 3.5.50 – Webservice verifica presença marcadores (segunda forma de pesquisa) _______________ 71
Figura 3.5.51 – Webservice verifica presença marcadores (primeira e segunda forma de pesquisa) –
Diferenças de Arquitectura ________________________________________________________________ 72
Figura 3.5.52 – Janela de Acções ____________________________________________________________ 73
Figura 3.5.53 – Janela de Acções com verificação de marcadores obrigatórios (funcionalidade) _________ 74
Figura 3.5.54 – Janela de Acções com verificação de marcadores obrigatórios (funcionamento) _________ 75
Figura 4.2.1 – Exportar Orçamentação _______________________________________________________ 77
Figura 4.2.2 – Importar Orçamentação _______________________________________________________ 78
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio xii
Índice de Tabelas
Tabela 2.3.1 – Calendarização das Tarefas _____________________________________________________ 5
Tabela 3.1.1 – Constituição da Team de Scrum _________________________________________________ 9
Tabela 3.5.1 – Sumário de tratamento de documentos com os diferentes pacotes de produtividade _____ 34
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 1
1 – Introdução
1.1 – Contextualização do Problema
A integração de aplicações AIRC com ferramentas Office assume diversas formas: a integração das
ferramentas de pacotes de produtividade nas aplicações do ERP AIRC2000; a integração na forma de suporte
com Webservices; a integração promovendo a correcção constante das funcionalidades desenvolvidas e
aperfeiçoamento das mesmas. Não há apenas uma integração, mas sim um conjunto de diferentes
integrações com diferentes pontos de origem que permitem alcançar os objectivos propostos.
Pretende-se conciliar a integração das aplicações do ERP AIRC2000 com ferramentas Office, unificando
as funcionalidades através da criação de uma camada de abstracção da tecnologia utilizada.
Esta camada de abstracção dotará as aplicações do ERP AIRC2000 com a capacidade de tratar de forma
transparente as chamadas aos diferentes pacotes de produtividade, tendo em conta, o documento ou livro
que se queira trabalhar. Por outras palavras, independentemente do documento ou livro que se queira
trabalhar, o processamento a realizar para executar essa chamada tem que ser efectuado sem ser
necessária intervenção do utilizador da aplicação. Este comportamento da aplicação será resultante do
funcionamento da referida camada de abstracção a ser desenvolvida. [Anexo B – Product Backlog e Sprint
Backlog]
No entanto, para que se possa definir a camada de abstracção é necessário antes desenvolver um
conjunto de tarefas auxiliares, tal como o módulo para funcionamento com o OpenOffice Calc, que
constituirá a alternativa ao Excel do Microsoft Office e diversas outras tarefas presentes no planeamento do
estágio.
Pretende-se a construção de Webservices para verificação e manutenção da coerência entre marcadores
considerados obrigatórios (obrigatórios a estar no modelo) e os marcadores que estão de facto no modelo.
Pretende-se, também, a construção de extensões para o OpenOffice que melhorem a transição de
Microsoft Office para OpenOffice, minimizando o tempo de trabalho associado a essa transição no que toca
à conversão de modelos existentes do Microsoft Word para modelos OpenOffice Writer.
1.2 – Objectivos
O objectivo principal deste estágio foi o desenvolvimento de uma camada de abstracção que tenha a
capacidade de tratar, de forma transparente, as chamadas aos pacotes de produtividade suportados, de
forma a evitar interacção do utilizador.
Para levar a cabo o objectivo principal é necessário cumprir com outros requisitos. Estes incluem, o
desenvolvimento do módulo Calc; a obtenção de informação do registo do Windows em relação à
associação de abertura dos ficheiros a trabalhar; o desenvolvimento da gravação em formato .docx nas
versões de Microsoft Office Word anteriores ao Microsoft Office Word 2007; a criação de Webservices e
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 2
correcções de funcionalidades existentes. (o anexo B refere as várias funcionalidades que fazem parte dos
objectivos, a um nível crescente de detalhe)
1.3 – Estrutura do Documento
O presente relatório de estágio encontra-se organizado em 6 capítulos: Introdução, Enquadramento,
Trabalho Realizado, Utilização do Módulo de Integração Calc e Camada de Abstracção numa aplicação AIRC,
Conclusões e Bibliografia. Esta estrutura pretende abordar de uma forma concreta o trabalho desenvolvido
ao longo do estágio, dando o seguimento desde a proposta de estágio, planeamento do projecto, trabalho
desenvolvido durante o estágio, e finalizando com conclusões.
O Capítulo 1, Introdução, visa contextualizar os problemas a resolver durante o estágio, bem como,
apresentar os objectivos do estágio e apresentar a estrutura do presente documento.
O Capítulo 2, Enquadramento, visa apresentar uma descrição da entidade de acolhimento (AIRC), da
entidade escolar (ISEC), o problema apresentado na proposta de estágio, o modelo de processo de software,
bem como da metodologia utilizada e, por fim, a tecnologia utilizada na realização do estágio.
No Capítulo 3, Trabalho Realizado, encontram-se descritas as diversas actividades desenvolvidas ao
longo do estágio, desde a análise de requisitos, implementação e testes.
O Capítulo 4, Utilização do Módulo de Integração Calc e Camada de Abstracção numa aplicação AIRC, é
dedicado a analisar e demonstrar de uma forma concreta as funcionalidades do módulo de integração
desenvolvido quando integrado numa aplicação AIRC. É também evidenciado o funcionamento da camada
de abstracção.
O Capítulo 5, Conclusões, é dedicado a analisar e mostrar de uma forma concreta e organizada as
conclusões retiradas com a realização deste estágio. Desta forma, as conclusões são divididas em 4 grupos:
os resultados obtidos, as principais dificuldades sentidas ao longo do estágio e as soluções encontradas para
as ultrapassar, uma análise crítica do estágio ao nível do trabalho desenvolvido e do desenvolvimento
pessoal e as aspirações para o trabalho futuro.
O Capítulo 6, Bibliografia, contém uma listagem dos recursos bibliográficos utilizados.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 3
2 – Enquadramento
O estágio é realizado no âmbito da unidade curricular Estágio/Projecto Industrial, do Mestrado em
Informática e Sistemas (MIS), Ramo de Desenvolvimento de Software do Departamento de Engenharia
Informática e de Sistemas (DEIS) do Instituto Superior de Engenharia de Coimbra (ISEC).
O presente estágio foi elaborado nas instalações da AIRC e resultou da elaboração de uma proposta de
estágio curricular que a AIRC submeteu à comissão de estágios do MIS do DEIS.
2.1 – AIRC
A Associação de Informática da Região Centro (AIRC) foi fundada por 30 municípios da região centro, e
tem como principal actividade a produção de software e fornecimento de produtos e serviços para
autarquias locais. Este software abrange todo o sistema de informação de uma autarquia.
Esta associação iniciou a sua actividade em 1982 para um número muito restrito de câmaras municipais,
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 (Associações de Municípios, Regiões de Turismo, etc.).
A AIRC possui uma forte estrutura composta por mais de meia centena de profissionais altamente
qualificados, tanto ao nível da investigação e desenvolvimento de projectos, bem como da assistência
técnica ao utilizador.
A experiência colhida ao longo de quase 20 anos junto das câmaras municipais, conjugada com o elevado
know-how dos seus profissionais, permitiu-lhe desenvolver um pacote de software autárquico de grande
qualidade, denominado AIRC2000, constituído por um conjunto de módulos aplicacionais que cobrem a
quase totalidade do sistema de informação das autarquias. Este pacote de software começou a ser
idealizado em 1998, sendo criado nessa altura um novo modelo conceptual de todo o sistema de
informação das autarquias, baseado num sistema de gestão de base de dados relacional, capaz de servir de
base ao desenvolvimento de todo o novo pacote integrado de software da AIRC.
2.2 – ISEC/DEIS/MIS
2.2.1 – ISEC
O Instituto Superior de Engenharia de Coimbra (ISEC) é uma unidade orgânica de ensino do Instituto
Politécnico de Coimbra (IPC), e constitui um centro de criação, transmissão e difusão de cultura, ciência e
tecnologia, cabendo-lhe ministrar a preparação para o exercício de actividades profissionais no domínio da
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 4
engenharia e promover o desenvolvimento da região em que se insere. O ISEC abrange várias áreas do
domínio tecnológico oferecendo aos alunos cursos modernos, práticos e com saídas profissionais.
Os cursos, adequados ao paradigma de Bolonha, colocam o ISEC a par da realidade tecnológica europeia
e internacional, permitindo aos alunos que frequentem este instituto de engenharia de renome nacional,
alargar ainda mais os horizontes profissionais.
O esforço contínuo de obtenção de parcerias constitui uma mais-valia, muito importante, pois aproxima
os alunos do ISEC da realidade empresarial e preparam-nos para o futuro, focando o essencial e procurando
a excelência.
2.2.2 – DEIS
O Departamento de Engenharia Informática e de Sistemas (DEIS) dedica-se à formação, investigação,
desenvolvimento e prestação de serviços nas áreas da Engenharia Informática e das Tecnologias de
Informação.
O DEIS tem seguido uma política de aproximação ao sector empresarial através de estágios curriculares
realizados em muitas empresas, maioritariamente da região centro, por certificações profissionais com
empresas de referência mundial, e por protocolos de colaboração com organismos públicos e empresas
privadas, de entre os quais, se destaca a AIRC.
2.2.3 – MIS
O Mestrado em Informática e Sistemas (MIS) do Instituto Superior de Engenharia de Coimbra (ISEC) tem
por objectivo formar Mestres em Informática e em Sistemas capazes de exercerem a sua actividade
profissional com um elevado nível de competência técnica, científica e profissional em cada uma das áreas
de especialização propostas.
O Mestrado em Informática e Sistemas organiza-se em 2 especializações:
Desenvolvimento de Software
Tecnologias da Informação e do Conhecimento
A especialização em Desenvolvimento de Software do Mestrado em Informática e Sistemas (MIS) visa a
formação pós-graduada em temas que integram os aspectos fundamentais relacionados com o processo de
desenvolvimento de software, abrangendo as questões organizacionais, sociais e tecnológicas, relacionadas
com a gestão de projectos de software e gestão de qualidade nas organizações. A especialização tem como
principal objectivo o desenvolvimento de capacidades para a aplicação e melhoria contínua de boas práticas
de Engenharia de Software nas organizações.
O estágio final (unidade curricular "estágio ou projecto industrial") decorre em parte do terceiro
semestre e na totalidade do quarto semestre lectivo do mestrado, sendo desenvolvido no ambiente das
empresas acolhedoras e acompanhado pelos docentes do mestrado.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 5
2.3 – Proposta de Estágio
Actualmente, as aplicações AIRC, já têm a capacidade de utilizar o OpenOffice Writer e o Microsoft Office
Word para trabalhar os seus documentos, no entanto, a definição da utilização de um ou outro pacote de
produtividade é estática, requerendo alguma interacção com o utilizador para que possa modificar a
definição do pacote de produtividade a utilizar.
Tal como referido anteriormente, o principal objectivo passa por eliminar a ainda existente interacção do
utilizador, passando, a decisão da escolha do pacote de produtividade mais apropriado a realizar tarefas
sobre documentos para a aplicação AIRC e esta, recorrendo à informação presente no registo do Windows,
verificará que pacote de produtividade é apropriado à abertura e gravação de cada ficheiro específico a
trabalhar. Se um computador tiver os dois pacotes de produtividade instalados, Microsoft Office e
OpenOffice, o registo do Windows, no seu conteúdo contém qual o pacote de produtividade apropriado ao
tratamento de cada formato de documento que se queira trabalhar.
No início deste estágio foi definido que, para além das actividades ocasionais, deveria ser cumprido um
plano de actividades, bem definido, para o desenvolvimento da Integração de Aplicações AIRC com
Ferramentas Office. Relativamente ao plano original de actividades do estágio inicial ficaram delineadas as
seguintes tarefas:
T1 – Análise – Análise e identificação dos requisitos necessários.
T2 – Desenho – Apresentação de um protótipo de acordo com os requisitos recolhidos.
T3 – Implementação – Construção dos âmbitos identificados, considerando a definição e criação
das diferentes fases de produção.
T4 – Testes e Validação – Execução de testes para validação das tarefas desenvolvidas.
T5 – Deployment – Disponibilização da aplicação.
Tabela 2.3.1 – Calendarização das Tarefas
INI Início dos trabalhos
M1 (INI + 4 Semanas) Tarefa T1 terminada
M2 (INI + 6 Semanas) Tarefa T2 terminada
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 6
M3 (INI + 18 Semanas) Tarefa T3 terminada
M4 (INI + 22 Semanas) Tarefa T4 terminada
M5 (INI + 24 Semanas) Tarefa T5 terminada
2.4 – Processo de Software
O modelo de processo de software vigente na AIRC é o Desenvolvimento Iterativo e Incremental e é
posto em prática usando uma metodologia de desenvolvimento ágil, o Scrum.
O Scrum faz parte de um grupo alargado de metodologias consideradas ágeis. Estas são caracterizadas
por promover o desenvolvimento iterativo e de também interactivo. Iterativo devido aos vários ciclos de
Análise, Desenvolvimento, Testes e Disponibilização das funcionalidades desenvolvidas que ocorrem em
intervalos de tempo pré-definidos. Interactividade visto que após disponibilização das funcionalidade torna-
se possível a colaboração aberta dos participantes e a adaptabilidade de processos durante todo o ciclo de
vida do projecto com o objectivo do contínuo melhoramento das funcionalidades. Possui também a
particularidade de permitir a realização das tarefas em pequenos incrementos, com o mínimo planeamento,
ao contrário de outras metodologias de desenvolvimento que planeiam a longo prazo, em que só depois de
finalizado todo o planeamento desenvolvem-se as funcionalidades, podendo haver maior propensão para
erros devido a mau planeamento.
Os métodos ágeis são a reacção aos processos que parecem bem na teoria mas, que na prática, não
funcionam tão bem. Estes métodos ágeis são empíricos na medida em que se baseiam unicamente em
experiências práticas e em métodos de trabalho que, na prática, funcionam bem.
Baseando-se nessa premissa, o Scrum tem objectivos bem definidos que constituem factores críticos de
sucesso, tanto para quem se baseia nele para desenvolver, como para quem usufrui dos resultados desta
metodologia. Estes são:
Melhorar a capacidade de resposta a necessidades urgentes do mercado;
Reduzir o tempo desperdiçado e tempos de espera;
Reduzir o stress dos colaboradores aumentando a produtividade.
Os objectivos anteriormente apresentados são complementados da filosofia associada ao Scrum que
define o que é essencial para a boa aplicação do método. Esta é apresentada em seguida:
Importante Mais Importante
• Processos e ferramentas • Indivíduos e interacção
• Documentação detalhada • Software que funciona
• Negociação de contratos • Colaboração com o cliente
• Seguir um plano • Capacidade de adaptação a mudanças
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 7
Para que a aplicação desta metodologia seja bem sucedida é preciso pôr em prática a estrutura que
caracteriza o Scrum. Essa estrutura é composta pelo Product Owner, Scrum Master e a Team.
O Product Owner é o cliente ou o representante do cliente e é quem tem o poder de definir tarefas a
adicionar ao Product Backlog e orientar as prioridades de cada uma. O Product Backlog contém todas as
tarefas a executar durante o estágio com uma estimativa de horas para a execução de cada requisito. O
Product Backlog é depois segmentado em vários grupos lógicos de duração igual, que após implementação,
originam valor acrescentado ao produto. Cada um desses grupos constitui um Sprint Backlog que deve ser
realizado num período que vai de duas a quatro semanas. [9] [10]
O Scrum Master gere a relação com o Product Owner e possíveis pedidos desse, modera as interferências
externas ao trabalho desenvolvido pela Team (equipa de desenvolvimento) e gere o trabalho da Team tendo
reuniões diárias (Daily Scrum) com esta para aferir três itens:
O que foi feito no dia anterior?
O que é que vai ser feito entre esta e a próxima reunião?
Há algum constrangimento que está a inibir a Team de fazer o que está planeado?
A Team deve auto-regular-se e tem total autoridade para fazer o que for possível para atingir o objectivo
do Sprint Backlog definido de acordo com os standards e convenções da organização e do Scrum.
2.5 – Tecnologia Adoptada
Durante o período de estágio foram utilizadas diversas tecnologias e ferramentas necessárias para
proceder à elaboração das tarefas relacionadas com os objectivos do estágio. De seguida são apresentadas
essas tecnologias e ferramentas, incluindo uma breve descrição sobre estas.
2.5.1 – PowerBuilder 11.2
O PowerBuilder (PB) consiste numa ferramenta de desenvolvimento de software, desenvolvida pela
Sybase, que pela sua versatilidade é usada normalmente na construção de aplicações que funcionam de
acordo com um ambiente cliente/servidor, onde existe uma forte interacção com base de dados.
2.5.2 – Microsoft Office Word/Excel 2000, XP (2002), 2003 e 2007
O Microsoft Office Word e Excel foram utilizados para testes e inspecção de funcionalidades dos
módulos de integração Word e Excel.
O Microsoft Office Word foi utilizado para a elaboração dos documentos desenvolvidos ao longo do
estágio.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 8
2.5.3 – OpenOffice 3.0, 3.1
O OpenOffice é um pacote de software de produtividade, tendo sido a ferramenta mais importante
utilizada em todo o estágio. É a partir da instalação desta que a Application Programming Interface (API) fica
disponível a ser utilizada a partir do PowerBuilder, ou outros Integrated Development Environment (IDE) (ex:
NetBeans), e a partir dela implementar as funcionalidades que constituem alguns dos objectivos do estágio.
2.5.4 – Microsoft Virtual PC 2007
O Microsoft Virtual PC 2007 permite a criação de máquinas virtuais e foi utilizado para testar o módulo
de integração com o OpenOffice com várias versões do OpenOffice e International Business Machines (IBM)
Lotus Symphony.
2.5.5 – IHMC CmapTools
O IHMC CmapTools foi utilizado para desenvolver as figuras das funcionalidades. Devido ao carácter não
visual do trabalho desenvolvido, esta aplicação, através da capacidade de construir mapas de conceitos,
tornou-se providencial.
2.5.6 – Notepad++
O Notepad++ consiste num editor de texto mais avançado, que suporta várias linguagens de
programação e as suas regras de apresentação visuais. Foi utilizado para edição de código.
2.5.7 – XVI32 e Hex Editor Neo
O XVI32 e Hex Editor Neo foram utilizados para verificar a assinatura hexadecimal dos documentos e livros criados.
2.5.8 – WinMerge
O WinMerge é uma ferramenta de software livre de custos com a capacidade de comparação de
conteúdo de ficheiros, oferecendo a funcionalidade de junção de texto. É útil para determinar o que mudou
entre as versões do mesmo ficheiro.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 9
3 - Trabalho realizado
3.1 – Metodologia de Desenvolvimento
A metodologia de desenvolvimento adoptada pela AIRC, como anteriormente já foi referida é a metodologia
Scrum.
Para se iniciar o processo de Scrum, é preciso definir a constituição da Team, a equipa de desenvolvimento
que executará as tarefas do Product Backlog.
A tabela abaixo apresenta os elementos que constituem a Team e as suas respectivas funções.
Tabela 3.1.1 – Constituição da Team de Scrum
No início do estágio a Team reuniu-se e definiu os requisitos do Product Backlog de acordo com as
funcionalidades suportadas com o módulo de integração do Word.
No início de cada Sprint, um conjunto de funcionalidades do Product Backlog, suficiente para perfazer a
duração total do Sprint (30 dias) passa a integrar o Sprint Backlog. As funcionalidades escolhidas respeitam
um critério de prioridade de implementação, sendo este definido pelo Product Owner.
No final de cada Sprint foi realizado um Sprint Review com o Product Owner e o Tutor. Este consiste
numa reunião informal que tem como objectivo dar a conhecer que funcionalidades foram realizadas no
Sprint.
Foram ainda realizadas Daily Scrum com os elementos da Team. Através dos Daily Scrum é possível
apresentar, passo a passo, dia após dia, cada funcionalidade feita e cada dificuldade vivida e com base
nessas informações gerir o trabalho até ao próximo Daily Scrum e também os objectivos do Sprint. Este
processo é resumido na figura 3.1.1.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 10
Figura 3.1.1 – Descrição da Metodologia Scrum
3.2 – Plano de Desenvolvimento
Neste subcapítulo é apresentado o plano de desenvolvimento definido para este projecto, sendo que
este foi baseado na subdivisão das tarefas do Product Backlog nos vários Sprint de duração mensal incluídos
em anexo (Anexo B – Product Backlog e Sprint Backlog).
A figura abaixo 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 3.2.1 – Mapa de Gantt
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 11
Fase de Formação:
A fase de formação decorreu no início do estágio e incidiu sobre as seguintes aplicações:
PowerBuilder, em que foram desenvolvidas várias aplicações, passando da construção do layout à
funcionalidade com base de dados com DataWindow e DataStore e os vários serviços disponíveis na
aplicação como é o caso, por exemplo, do Sharedata, Linkage e Row Manager.[1] [2] Foi aprendida a forma
de utilização da Framework, comum ao desenvolvimento de todas as aplicações da AIRC, bem como,
aprendidas as normas de programação internas.[4] [3] Também foi recebida formação em WebServices com
a mesma aplicação.
PowerDesigner com o intuito de familiarização com as regras usadas na AIRC, em termos de definição de
nomes de tabelas e campos destas. Também foi recebida formação sobre a forma de operar a aplicação e
geração de scripts nesta aplicação.
Fase de Implementação das Tarefas do Product Backlog:
Após a formação, seguiu-se a fase de implementação das funcionalidades e objectivos presentes no
Product Backlog. A implementação foi realizada entre os Sprint de Junho até Agosto, tendo como base de
pesquisa [11], [14], [5], [6], [12], [13], [7] e [8]. (Uma lista detalhada de recursos online pesquisados
encontra-se no Anexo D – Informação Online Consultada)
A implementação foi acompanhada de integração das mesmas funcionalidades nas aplicações Sistema
de Gestão Documental (SGD), Sistema de Tratamento de Actas (STA) e Sistema de Controlo de Empreitadas
(SCE).
Fase de Documentação:
Esta fase inclui as tarefas de elaboração e revisão dos vários documentos produzidos ao longo do
período de estágio, dos quais fazem parte o relatório de estágio e a documentação realizada durante as
tarefas.
3.3 – Requisitos
Os requisitos são o ponto-chave de qualquer projecto de desenvolvimento de software. Os requisitos
encontram-se descritos, de forma muito geral, na proposta de estágio, sendo estes:
Criação da camada de abstracção;
Criação das configurações e automatismos necessários à transparência de funcionamento para
o utilizador final.
Análise cuidada dos problemas existentes nas funcionalidades já existentes;
Conhecimento das aplicações que irão utilizar a integração com as ferramentas Office;
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 12
Os requisitos acima referidos, encontram-se descritos detalhadamente, com um escalonamento
estimado de horas para o desenvolvimento. Estes contêm uma série de funcionalidades específicas como se
pode observar no (Anexo B – Product Backlog e Sprint Backlog).
3.4 – Plano de Arquitectura
A AIRC construiu ao longo do tempo uma Framework comum a todas as aplicações, tendo sido criada
com base nas bibliotecas disponibilizadas pela Sybase, implementadas sobre a ferramenta de
desenvolvimento, e designadas por PowerBuilder Foundation Classes (PFC). 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).
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 das aplicações. O
nível 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 PowerBuilder Foundation
Extensions (PFE) e programá-los sobre o nível da aplicação.
O esquema de modelo de heranças de bibliotecas, que origina o Framework comum de desenvolvimento
de aplicações da AIRC, encontra-se apresentado na figura abaixo, sendo que os blocos de bibliotecas
envolvidas por uma caixa a tracejado representam o nível de acesso dos programadores das aplicações, ou
seja, o nível PFE e o nível da aplicação.
Figura 3.4.1 – Esquema de Heranças da Framework da AIRC
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 13
Grande parte das funcionalidades resultantes, dos requisitos a desenvolver, serão colocadas ao nível AFC
para que fiquem disponíveis a todos os programadores da AIRC.
3.5 – Implementação
A fase de implementação constituiu num conjunto alargado de diferentes tarefas, no entanto, todas elas
se relacionam com funcionalidade documental e folhas de cálculo.
3.5.1 – Criação do módulo Calc
A criação do módulo Calc teve como objectivo conseguir através da API do OpenOffice, usando o
PowerBuilder, realizar tarefas que se fazem no Graphical User Interface (GUI) do OpenOffice Calc, tal como
guardar, abrir, fechar, havendo pouca ou nenhuma interacção do utilizador com o GUI. Ou seja, estas acções
sobre folhas de cálculo são realizadas através de uma aplicação AIRC que contenha o módulo de integração
com o OpenOffice Calc ou o existente do Excel. O mínimo de interacção do utilizador com o GUI e o máximo
de automatismo de acções através da API é um objectivo claro do módulo a desenvolver.
Este módulo ao utilizar a API permite a elaboração de tarefas complexas que seriam impossíveis de
realizar com o mesmo rigor e performance através do GUI.
A API do Excel e a API do OpenOffice Calc, através do PowerBuilder, são chamadas de forma similar.
Ambas são chamadas usando OLE Automation. A OLE Automation é um mecanismo que disponibiliza várias
funcionalidades através da utilização de objectos Object Linking and Embedding (OLE).
A capacidade de estes pacotes de produtividade suportarem a OLE Automation permite que seja
fornecida uma infra-estrutura à aplicação que a usa, neste caso, o PowerBuilder, possibilitando realizar
operações sobre os dados, nomeadamente, folhas de cálculo. As operações são disponibilizadas pela OLE
Automation através da criação de um OleObject no PowerBuilder. Este OleObject é uma variável do
PowerBuilder orientada a utilizar a OLE Automation dos pacotes de produtividade referidos.
O OleObject irá actuar como um proxy, visto que representa um objecto OLE remoto, existente na API,
que aceita chamadas específicas ao seu código. Esse objecto ao disponibilizar as funcionalidades da API
sobre a variável criada irá permitir programar usando a sintaxe da API do OpenOffice Calc ou Excel sobre
uma outra qualquer aplicação, neste caso, o PowerBuilder.
Resumindo, é necessário criar um objecto de ligação ao OpenOffice Calc pois é através dele que se torna
possível interagir com a API do OpenOffice Calc para desenvolver o módulo de integração para as variadas
funcionalidades necessárias. Este processo encontra-se esquematizado na figura seguinte:
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 14
Figura 3.5.1 – Hierarquia de Operações
3.5.1.1– Tarefas de Suporte
Para se ter a base de trabalho preparada é necessário criar o objecto de ligação à API do OpenOffice,
pois através desta é possível começar a desenvolver todas as funcionalidades. Tudo deriva deste primeiro
objecto criado.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 15
3.5.1.1.1 – Criar e conectar o objecto de ligação à API do OpenOffice Calc
Pode-se criar e conectar/ligar o objecto de ligação à API de duas formas. Para ambas é necessária a
criação de uma variável OleObject do PowerBuilder, que é feita como qualquer outra variável, por exemplo,
OleObject objectoOLE.
Esta variável irá conectar-se a um objecto OLE remoto existente na API. As formas de ligação encontram-
se definidas de seguida:
A primeira das formas é resultado da tentativa de ligação a um objecto OLE remoto na API já existente,
exemplificado de seguida:
objectoOLE.ConnectToObject(“”, classname) , em que classname contém uma string característica para
que a ligação seja possível à API do OpenOffice.
classname “com.sun.star.ServiceManager”
A definição do PowerBuilder para classname é bastante descritiva e consiste numa string, cujo valor é
um identificador programático que identifica um automation server ou Component Object Model (COM)
server. Alternativamente ao identificador programático, classname, poderia assumir o Class Identifier
(CLSID) do OpenOffice “82154420-0FBF-11d4-8313-005004526AB4”. As utilizações referidas são
equivalentes e ligam a um objecto remoto que é justamente a OLE Automation Bridge do OpenOffice.
Com base no valor numérico que esta operação devolve é possível compreender se houve sucesso. No
caso de insucesso, a operação devolve um valor numérico inferior ou igual a zero e, sendo assim, passa-se à
segunda forma de ligar, exemplificado em seguida:
objectoOLE.ConnectToNewObject ( classname )
A diferença desta chamada para a anterior é o simples facto de esta ignorar qualquer objecto OLE
remoto que esteja disponível e criar uma nova ligação a um objecto OLE remoto.
Após o sucesso de qualquer uma destas tentativas de ligar o objectoOLE fica disponível a todas as
chamadas com as capacidades da API do OpenOffice e sendo assim, pode-se afirmar que este objecto é o
ponto de partida para tudo o que se quer programar com a API do OpenOffice no PowerBuilder.
O efeito mais visível desta operação é a criação de dois processos no Task Manager chamados de
soffice.bin e soffice.exe.
3.5.1.1.2 – Variável Desktop
A variável Desktop consiste numa instância do objecto de ligação à API do OpenOffice criado
anteriormente, como se observa na figura 3.5.1. Apesar de o primeiro objecto ser muito importante, pois
tem a capacidade de criar tudo o que se pretende da API do OpenOffice, é necessário criar, a partir desta,
uma outra variável OleObject de vital importância. Essa importância deve-se ao facto de esta nova variável
permitir fazer um leque muito vasto de operações sobre os documentos/livros/componentes do
OpenOffice, desde abrir, fechar, activar, guardar, inserir ou extrair informação e muitas mais
funcionalidades. A variável Desktop é obtida através da criação de uma instância com a classname
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 16
"com.sun.star.frame.Desktop" usando o objecto de ligação à API do OpenOffice Calc anteriormente criado.
Essa criação é o resultado da seguinte sintaxe:
objectoOLEDesktop=objectoOLE.createInstance("com.sun.star.frame.Desktop")
Usando a sintaxe, CreateInstance, esta oferece a possibilidade de criar um objecto num servidor remoto,
neste caso o servidor “com.sun.star.ServiceManager” da API do OpenOffice acima referido.
O objecto desktop é o ponto de partida para todas as operações sobre documentos/livros que mais
adiante se encontram detalhadas.
3.5.1.1.3 – Desligar ou desconectar do Objecto OLE remoto da API
A operação de Desligar corresponde à desconexão da variável OleObject criada do objecto OLE remoto
da API do OpenOffice e, consequente destruição. Isso é feito da seguinte forma:
Figura 3.5.2 – Processo de Desligar
O Objecto OpenOffice é uma variável OleObject que se quer desconectar de um objecto OLE remoto.
3.5.1.2– Tarefas de Operação sobre Livros
As tarefas de operação sobre livros são muito diferentes entre si, mas têm em comum as tarefas de
suporte essenciais ao seu sucesso. Os próximos pontos detalham todas as funcionalidades que foram
desenvolvidas recorrendo à API do OpenOffice usando o PowerBuilder.
A definição dos conceitos, livro e folha de cálculo encontra-se em Definições, Acrónimos e Abreviaturas.
3.5.1.2.1 – Abrir Livros
Para realizar a tarefa de Abrir Livros várias premissas têm que ser assistidas. Tem que se garantir que o
caminho para o livro é compatível para abertura e, de acordo com a operação que se está a fazer, enviar
alguns parâmetros (PropertyValue) que alteram a abertura. Por exemplo, abrir um livro em modo de leitura.
3.5.1.2.1.1 – PropertyValue
Os parâmetros PropertyValue têm como finalidade a alteração de um comportamento base de uma dada
operação, por exemplo a abertura de um livro/modelo. A criação deste tipo de variáveis é mais difícil no
PowerBuilder que noutros IDE, devido a não ter a API do OpenOffice disponível no momento da criação do
código dos procedimentos pretendidos. Consequentemente, e por estar a trabalhar com OleObjects, a
obtenção de métodos de um objecto usando "." não é possível e o código não é compilado pelo
PowerBuilder no momento da sua criação. Só em caso de excepção devolvida pelo OleObject da API do
OpenOffice, se sabe que há um erro no código desenvolvido.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 17
Em seguida são apresentados exemplos de criação de PropertyValue noutros IDE. Os quais têm acesso à
API do OpenOffice usando o seu Software Development Kit (SDK).
oProp = createUnoStruct( "com.sun.star.beans.PropertyValue" )
ou
Dim oParm As New com.sun.star.beans.PropertyValue
No entanto, qualquer uma destas alternativas não funciona em PowerBuilder devido ao facto das
livrarias do OpenOffice não estarem disponíveis ao PowerBuilder. Esta limitação cria um entrave à
investigação dos objectos criados para os conhecer melhor. A única fonte de informação sobre os objectos
criados reside na investigação online e em documentos sobre a API do OpenOffice como é o caso de [5], [6]
e [8].
Para criar as tão necessárias variáveis é preciso recorrer ao primeiro objecto criado, o objectoOLE, e
sendo assim a alternativa correcta é:
objectoOLEPropertyValue=objectoOLE.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
Em que a chamada Bridge_GetStruct devolve uma variável com a forma de estrutura com quatro
campos: Name, Handle,Value e State. Destes campos, dois têm maior importância, o Name e o Value.
Name especifica o nome da propriedade.
Value contém o valor da propriedade ou void, se nenhum valor está disponível. Tem a particularidade
de poder receber qualquer tipo de variável na sua atribuição.
Através destas variáveis torna-se possível fazer as operações anteriormente mencionadas se forem
correctamente atribuídas.
Para o caso de abrir um livro para leitura (read-only) seria preciso:
objectoOLEPropertyValue.Name = “ReadOnly”
e
objectoOLEPropertyValue.Value = True
Para o caso de se querer abrir um livro modelo para edição seria preciso:
objectoOLEPropertyValue.Name = “AsTemplate”
e
objectoOLEPropertyValue.Value = false
O comportamento que estas variáveis armazenam tem especial importância para a abertura de livros,
como já foi referido, pois cada uma delas representa uma acção.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 18
3.5.1.2.1.2 - Filename2url
Foi necessário desenvolver uma função (Filename2url) que tem como principal objectivo a preparação,
fazendo a conversão, do caminho para um livro para que a abertura deste aconteça correctamente.
Normalmente o caminho que se tem para um livro é algo de parecido com c:\livro.ods. No entanto, a
função da API do OpenOffice (LoadComponentFromURL), que abre livros, necessita que o caminho esteja na
forma file:///c:/livro.ods. A funcionalidade encontra-se na seguinte figura:
Figura 3.5.3 – Conversão de Caminhos para Livros
3.5.1.2.1.3 – Abertura
Tendo já percorrido os passos anteriores basta apenas chamar a LoadComponentFromURL com os
parâmetros já construídos. A operação de abertura do livro é descrita na figura seguinte:
Figura 3.5.4 – Abertura de Livros
O Array de PropertyValue é como o nome indica um vector de OleObject PropertyValue. Esse array
define o comportamento de abertura do livro passado à LoadComponentFromURL. Se não se quiser definir
algum comportamento, pode-se passar um array OleObject vazio ou um array qualquer vazio.
O resultado visual de todas estas instruções é a abertura propriamente dita de um livro no GUI do
OpenOffice Calc.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 19
3.5.1.2.2 – Activar Livros
A operação de Activar Livros é utilizada quando se pretende tornar visível um livro que se tenha aberto,
visto que, ele poderá estar minimizado ou por trás de qualquer outra janela. O processo é descrito na
seguinte figura:
Figura 3.5.5 – Activar Livros
É preciso percorrer os livros/componentes abertos, comparando o caminho passado que é prontamente
convertido com a filename2URL já apresentada com os caminhos dos livros abertos.
Ao ser verdadeira a comparação, foi encontrado o livro pretendido e pode depois ser activado e tornado
visível com tofront e activate.
3.5.1.2.3 – Activar Folha de Cálculo
A operação de Activar Folha de Cálculo é utilizada quando se pretende tornar visível uma folha de cálculo
específica de um livro que se encontra activo. A funcionalidade encontra-se descrita na seguinte figura:
Figura 3.5.6 – Activar Folha de Cálculo
3.5.1.2.4 – Guardar Livros
O processo de Guardar Livros tem como objectivo a gravação de alterações em livros abertos, activos ou
não activos. Esta característica altera a forma como o processamento é feito, visto que, para o livro activo
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 20
pode-se logo realizar a acção de guardar enquanto que, para livros abertos mas não activos, terá de existir
uma fase preliminar de activação do livro a guardar. O processo de activação do livro foi já documentado
acima em 3.5.1.2.2.
A operação de Guardar Livros tem igualmente algum processamento de conversão de caminhos
(Filename2URL) e de PropertyValue (ambas as operações já documentadas acima). A inclusão de variáveis
PropertyValue podem adicionar informação que se quer guardar no livro ou alterar o processo de gravação,
para além da gravação do conteúdo do livro propriamente dito. Neste caso específico em relação à definição
do tipo de gravação.
Existem duas formas para guardar livros:
objectoOLELivro.storetourl(caminhoconvertido,ArrayObjectosOLEPropertyValue)
ou
objectoOLELivro.storeasurl(caminhoconvertido,ArrayObjectosOLEPropertyValue)
A opção storetourl é orientada à operação de guardar livros acabados de criar que ainda não foram
gravados nenhuma vez. O típico livro “Sem título 1” no OpenOffice Calc ou o “Livro1” no Microsoft Office
Excel.
A opção storeasurl é orientada a gravar livros que já têm localização física no disco. É o caso dos livros
que são abertos, alterados e por fim gravados na localização que já possuem.
3.5.1.2.5 – Saber Livro Activo
A operação Saber Livro Activo é utilizada sempre que se quer saber qual o livro activo. Esta
funcionalidade devolve a localização (fullpath) do livro activo. A figura 3.5.7 representa o processo
efectuado.
Figura 3.5.7 – Saber Livro Activo
3.5.1.2.6 – Saber Nome Folha de Cálculo Activa
A operação Saber Nome Folha de Cálculo Activa é utilizada para saber qual é o nome da folha de cálculo
activa no livro activo. Esta funcionalidade devolve o nome da folha que se encontra activa. A figura 3.5.8
representa o processo efectuado.
Figura 3.5.8 – Saber Nome Folha de Cálculo Activa
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 21
3.5.1.2.7 Fechar Livros
O processo de Fechar Livros existe para livros abertos e activos e, para livros abertos mas não activos.
Esta característica altera a forma como o processamento é feito visto que para o livro activo pode-se logo
realizar a acção de fechar enquanto que para livros abertos mas não activos terá de existir uma fase
preliminar de activação do livro a fechar. O processo de activação do livro foi já documentado acima em
3.5.1.2.2. O processo de Fechar Livros é em seguida ilustrado:
Figura 3.5.9 – Fechar Livros
Para haver sempre um livro/componente activo após o fecho do livro, outro livro existente é
automaticamente activado.
3.5.1.2.8 – Criar Novo Livro
A criação de novos livros tem duas vertentes: a primeira refere-se ao criar um livro vazio; a segunda
refere-se à criação de um livro tendo como base um modelo, ou seja, um livro base com já algum conteúdo.
Para criar um livro vazio basta passar uma string característica, “private:factory/scalc”, à
LoadComponentFromURL. Na figura seguinte corresponde ao trajecto superior:
Figura 3.5.10 – Criar Novo Livro
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 22
Para criar um livro com base num modelo, o processamento é diferente, sendo necessário utilizar uma
PropertyValue específica:
objectoOLEPropertyValue.Name = "AsTemplate"
objectoOLEPropertyValue.Value = true
objectoOLEPropertyValueArray[1]=ioo_objPropertyValue
A passagem da variável PropertyValue com AsTemplate definido a true cria um novo livro que terá o
nome pré-definido “Sem título” e será completamente igual ao modelo que o originou.
Este processo corresponde ao trajecto inferior na figura acima.
3.5.1.2.9 – Saber Número de Livros Abertos
A operação Saber Número de Livros Abertos é utilizada para saber o número de livros que se encontram
abertos. É uma funcionalidade muito utilizada por outras funcionalidades do módulo OpenOffice Calc. A
figura 3.5.11 representa como o processo é realizado.
Figura 3.5.11 – Saber Número de Livros Abertos
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 23
3.5.1.2.10 – Saber Número de Folhas
A operação Saber Número de Folha é utilizada para saber o número de folhas de cálculo que o livro
activo contém. A figura 3.5.12 representa o processo realizado.
Figura 3.5.12 – Saber Número de Folhas
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 24
3.5.1.2.11 – Saber se está Aberto
A operação Saber se está Aberto tem como finalidade verificar se um livro específico está aberto. Para
isso é necessário verificar se o caminho passado é igual a qualquer um dos caminhos dos livros abertos. A
figura seguinte esquematiza esta operação.
Figura 3.5.13 – Saber se está Aberto
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 25
3.5.1.2.12 – Saber se é Livro Activo
A operação Saber se é Livro Activo tem a finalidade de se perceber se um dado livro é de facto o livro
activo. A figura 3.5.14 representa todo o processo.
Figura 3.5.14 – Saber se é Livro Activo
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 26
3.5.1.2.13 – Alterar Nome da Folha de Cálculo Activa no Livro Activo
A operação Alterar Nome da Folha de Cálculo Activa no Livro Activo tem a finalidade de alterar o nome
da folha de cálculo activa no livro activo. A figura 3.5.15 representa todo o processo.
Figura 3.5.15 – Alterar Nome da Folha de Cálculo Activa no Livro Activo
3.5.1.2.14 – Saber se a Janela está Visível
A operação Saber se a Janela está Visível tem como objectivo obter informação sobre a visibilidade da
janela do livro. Mesmo que a janela esteja minimizada, o livro é considerado como visível, visto que aparece
na barra de tarefas do Windows. O livro activo pode estar aberto mas invisível, nesse caso, não há nenhuma
indicação visual de que o livro esteja de facto aberto. É útil para edição dos livros de forma invisível e no fim
mostrar ao utilizador.
ioo_objDesktop.getcurrentcomponent().getCurrentController().getFrame().getContainerWindow().isvi
sible()
A propriedade IsVisible é devolvida.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 27
3.5.1.2.15 – Devolver Estado da Janela do OpenOffice
A operação Devolver Estado da Janela do OpenOffice tem como objectivo saber se a janela do livro está
maximizada, minimizada ou normal. A figura 3.5.16 representa o processo.
Figura 3.5.16 – Devolver Estado da Janela do OpenOffice
3.5.1.2.16 – Definir Visibilidade da Janela do Livro
A operação Definir Visibilidade da Janela do Livro permite o controlo sobre a visibilidade do livro. Uma
janela de um livro específico pode ser totalmente oculta, parecendo que nem existe, visto não haver
nenhuma indicação visual disso. Da mesma forma, poderá ser tornada visível a qualquer instante. Existe no
entanto diferença entre tornar invisível um livro e abrir um livro de forma invisível. Só é possível fazer a
operação de tornar invisível num livro activo, ao contrário do que acontece no Excel. Neste, a operação de
visibilidade ou invisibilidade é extensível a todos os livros abertos.
ioo_objDesktop.getcurrentcomponent().getCurrentController().getFrame().getContainerWindow().set
Visible(ab_switch)
A linha acima define a visibilidade da janela do livro activo. O valor do argumento boolean ab_switch
definirá a visibilidade do livro activo.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 28
3.5.1.2.17 – Definir Estado da Janela do Livro
A operação Definir Estado da Janela do Livro tem como finalidade alterar a forma da janela do livro para
vários estados. A figura 3.5.17 representa o processo.
Figura 3.5.17 – Definir Estado da Janela do Livro
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 29
3.5.1.2.18 – Obtenção do Conteúdo de uma Célula (Linha, Coluna)
A operação Obtenção do Conteúdo de uma Célula (Linha, Coluna) tem como finalidade a obtenção do
conteúdo de uma célula específica que representa a posição Linha, Coluna na folha de cálculo activa no livro
activo. A figura 3.5.18 representa o processo.
Figura 3.5.18 – Obtenção do Conteúdo de uma Célula (Linha, Coluna)
3.5.1.2.19 – Obtenção do Conteúdo de uma Célula (Endereço)
A operação Obtenção do Conteúdo de uma Célula (Endereço) tem como finalidade a obtenção do
conteúdo de uma célula específica que representa a o Endereço na folha de cálculo activa no livro activo.
A única diferença relativamente à anterior funcionalidade resume-se à obtenção do ObjectoCélula com
getCellRangeByName(Endereço).
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 30
3.5.1.2.20 – Definir Conteúdo de uma Célula (Linha, Coluna)
A operação Definir Conteúdo de uma Célula (Linha, Coluna) tem como finalidade a inserção de um valor
numa célula específica que representa a posição Linha, Coluna na folha de cálculo activa no livro activo. Este
valor pode ser numérico ou texto. A figura 3.5.19 representa o processo.
Figura 3.5.19 – Definir Conteúdo de uma Célula (Linha, Coluna)
3.5.1.2.21 – Definir Conteúdo de uma Célula (Endereço)
A operação Definir Conteúdo de uma Célula (Endereço) tem como finalidade a inserção de um valor
numa célula específica que representa o Endereço na folha de cálculo activa no livro activo.
A única diferença relativamente à anterior funcionalidade resume-se à obtenção do ObjectoCélula com
getCellRangeByName(Endereço).
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 31
3.5.1.2.22 – Definir Formato de uma Célula (Linha, Coluna)
A operação Definir Formato de uma Célula (Linha, Coluna) tem como finalidade a definição do formato
do conteúdo da célula específica que representa a posição Linha, Coluna na folha de cálculo activa no livro
activo.
Um exemplo de utilização é (3,4,"##.#########.##0,0###") em que se define um formato na célula
especificada. Neste caso, um formato com 4 casas decimais em que uma será sempre visível e as outras só
se forem números diferentes de zero. Para definir o formato para texto, no formato deve-se colocar “@”. A
figura 3.5.20 representa o processo.
Figura 3.5.20 – Definir Conteúdo de uma Célula (Linha, Coluna)
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 32
3.5.1.2.23 – Definir Formato de uma Célula (Endereço)
A operação Definir Conteúdo de uma Célula (Endereço) tem como finalidade a definição do formato do
conteúdo da célula específica que representa o Endereço na folha de cálculo activa no livro activo.
A única diferença relativamente à anterior funcionalidade resume-se à obtenção do ObjectoCélula com
getCellRangeByName(Endereço).
3.5.1.2.24 – Insere Linha
A operação Insere Linha tem como finalidade a inserção de uma linha vazia no endereço especificado na
folha de cálculo activa no livro activo. A figura 3.5.21 representa o processo.
Figura 3.5.21 – Insere Linha
A operação de seleccionar o ObjectoCélula garante que o ponto de inserção da linha vazia se encontra na
posição pretendida (endereço especificado). A inserção da linha é feita acima do endereço.
3.5.1.3– Testes
O módulo de integração desenvolvido foi testado várias vezes e de diversas formas.
As funcionalidades do módulo OpenOffice Calc, foram conferidas com testes unitários, usando um
ambiente de testes, e testes de integração, usando uma aplicação AIRC em que o módulo Calc foi integrado.
Os testes unitários foram definidos com base no seguinte objectivo: Ao utilizar cada uma das
funcionalidades do módulo OpenOffice Calc, o comportamento destas sobre uma folha de cálculo do
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 33
OpenOffice Calc deve ser exactamente igual ao comportamento exibido quando é utilizada cada uma das
funcionalidades correspondentes do módulo Microsoft Office Excel sobre uma folha de cálculo do Excel.
Só desta forma, as funcionalidades do módulo desenvolvido para o OpenOffice Calc se poderiam
considerar como aptas a utilização em aplicações AIRC.
Após finalizada esta fase de testes foi possível passar à fase de integração do módulo desenvolvido e
realizar testes de integração. Para isso usou-se a aplicação AIRC que mais usa o Microsoft Office Excel, o SCE.
Os testes de integração foram definidos com base no seguinte objectivo: As funcionalidades da aplicação
SCE que se realizam usando funcionalidades do módulo Microsoft Office Excel devem realizar-se da mesma
forma, em termos de conteúdo(Exemplo: a informação que é exportada do SCE ou importada para o SCE) e
comportamento(Exemplo: forma como os pacotes de produtividade operam), quando usadas as
funcionalidades do módulo OpenOffice Calc desenvolvido.
3.5.2 – Camada de Abstracção
Findo o desenvolvimento do módulo Calc foi possível começar a desenvolver a Camada de Abstracção
para o funcionamento transparente dos diferentes objectos de ligação aos pacotes de produtividade,
Microsoft Office Word e Excel, e OpenOffice Writer e Calc.
Deu-se então início a uma fase de análise das questões a ultrapassar:
Como controlar a criação dos diferentes objectos de ligação sem definir uma preferência
específica e estática?
Em que situação se deve criar cada um deles?
3.5.2.1 – Criar camada de abstracção para permitir o funcionamento das aplicações Office ou OpenOffice de forma transparente
Para criar a camada de abstracção, teve de ser criada a hierarquia para os objectos de ligação (objectos
pai para albergar objectos filhos Word/Writer e Excel/Calc). O objecto pai irá ser usado para se criar um dos
dois existentes tipos de objectos filhos. Desta forma, centraliza-se a criação dos objectos filho e normaliza-se
a sua utilização visto que, ambos apresentam as mesmas funcionalidades mas naturalmente em pacotes de
produtividade diferentes.
Esta hierarquia, permite que mais objectos de ligação a outros pacotes de produtividade venham a ser
suportados no futuro sem impacto nos objectos de ligação existentes. A figura 3.5.22 representa a
organização lógica criada.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 34
Figura 3.5.22 – Hierarquia dos objectos de ligação
Finda a hierarquia dos objectos de ligação foi necessário definir como estes seriam chamados/criados de
acordo com as operações que são possíveis de realizar nas aplicações AIRC. A seguinte tabela representa as
situações possíveis de utilização nas aplicações AIRC2000 para o caso de documentos.
Tabela 3.5.1 – Sumário de tratamento de documentos com os diferentes pacotes de produtividade
A tabela acima foi resultante das tarefas de análise realizadas sobre esta matéria. Esta análise incidiu
sobre que tarefas os pacotes de produtividade conseguiam suportar. Há dois grandes grupos de tarefas:
Abertura e gravação de documentos
Geração de documentos com base em modelos
Tendo em conta as várias versões dos referidos pacotes de produtividade e, tendo em conta que é
necessário manter a retro compatibilidade com as versões antigas do Microsoft Office, esta análise revelou-
se essencial.
A tabela pretende responder a perguntas como as seguintes:
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 35
P: É possível gerar um documento, a gravar com extensão .doc com base num modelo de extensão .ott?
Que objecto de ligação se deve criar para tratar esta chamada?
R: Sim. Neste caso apenas o OpenOffice consegue tratar esta chamada.
As zonas na tabela a verde representam situações extremas de suporte representadas pelas seguintes
perguntas:
P: Tendo o Office 2003 instalado com o pacote de compatibilidade instalado (Microsoft Office
Compatibility Pack for Word, Excel, and PowerPoint 2007 File Formats) e o OpenOffice 3.0 é possível abrir e
guardar modelos de extensão .dotx?
R: Neste caso a abertura apenas é conseguida usando o OpenOffice mas não é possível guardar nesse
formato visto não haver suporte. O Office 2003 mesmo com o pacote de compatibilidade instalado, não
consegue realizar a abertura/gravação de modelos .dotx.
P: Tendo o Office 2003 instalado com o pacote de compatibilidade instalado e o OpenOffice 3.0 é
possível gerar um documento de extensão .doc baseado num modelo de extensão .dotx?
R: Sim. O OpenOffice tratará esta chamada.
Apesar de parecer estranho, é completamente possível o OpenOffice 3.0 tratar esta chamada visto que
consegue abrir modelos de extensão .dotx e consegue guardar o documento resultante da geração com
extensão .doc.
Estas situações extremas apenas estão presentes na combinação Office 2003 com OpenOffice 3.0. Na
combinação Office 2007 com OpenOffice 3.0 estas situações terão de ser tratadas pelo Office 2007.
Naturalmente esta orquestração tem que ser definida com base em informação válida e independente da
aplicação. A fonte dessa informação é o registo do Windows.
O registo do Windows é o repositório de toda a informação do sistema e das instalações que são
realizadas nesse. A particularidade interessante a reter é que quando se instala cada um dos pacotes de
produtividade referidos, associações são feitas por extensão de documento. Dessa forma, é possível saber
que pacote de produtividade é mais adequado ao tratamento de cada chamada.
Essas associações podem ser visualizadas no próprio registo do Windows como mostra a figura seguinte.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 36
Figura 3.5.23 – Definição no registo do Windows para .doc
O campo Predefinição contém a descrição do formato do ficheiro, neste caso é um .doc no formato
existente desde a versão Office 97 até ao Office 2003. O Office 2007 também cria ficheiros .doc neste
formato antigo, mas o nativo é o .docx. Nesse caso o campo Predefinição conteria Word.Document.12.
Com base no conteúdo do campo Predefinição uma nova pesquisa no registo é feita para devolver o
resultado à seguinte pergunta:
P: Qual é a aplicação que abre documentos no formato Word.Document.8?
R: A resposta dependerá sempre dos pacotes de compatibilidade que terá instalado mas para a
combinação Office 2007 com OpenOffice 3.0. A resposta encontra-se em
HKEY_CLASSES_ROOT\Word.Document.8\shell\Open\command\@.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 37
Figura 3.5.24 – Definição no registo do Windows para .doc
Na figura acima o campo Predefinição (também conhecido por @ devido a ser essa a sua descrição em
caso de exportação) refere qual o caminho para a aplicação que está definida para abrir os documentos no
formato Word.Document.8.
Com base nesta informação e outras complementares pode-se agora definir que objecto de ligação será
criado para tratar cada tarefa da tabela acima apresentada [Ver tabela 3.5.1].
Estes procedimentos e outros semelhantes para outros formatos existentes de documentos e também
para os formatos de livros, são realizados de forma a garantir o correcto funcionamento e, mais importante,
que seja transparente para o utilizador.
3.5.2.1.1 – Implementação de funções que visam a obtenção coerente de
informação relativa à criação, abertura e gravação de modelos, documentos
e livros
A camada de abstracção é constituída pelas funcionalidades abordadas nos seguintes subcapítulos.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 38
3.5.2.1.1.1 – Verifica se o OpenOffice Writer se encontra instalado
A operação Verifica se o OpenOffice Writer se encontra instalado tem como finalidade a obtenção da
informação relativa à instalação do OpenOffice Writer. A figura 3.5.25 representa o processo.
Figura 3.5.25 – Verifica se o OpenOffice Writer se encontra instalado
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 39
3.5.2.1.1.2 – Verifica se o Microsoft Office Word se encontra instalado
A operação Verifica se o Microsoft Office Word se encontra instalado tem como finalidade a obtenção da
informação relativa à instalação do Microsoft Office Word. Esta operação distingue as diferentes instalações
do Microsoft Office Word que possam existir nos diferentes computadores, de acordo com as suas
funcionalidades. A figura 3.5.26 representa o processo realizado.
Figura 3.5.26 – Verifica se o Microsoft Office Word se encontra instalado
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 40
3.5.2.1.1.3 – Verifica se o OpenOffice Calc se encontra instalado
A operação Verifica se o OpenOffice Calc se encontra instalado tem como finalidade a obtenção da
informação relativa à instalação do OpenOffice Calc. A figura 3.5.27 representa o processo realizado.
Figura 3.5.27 – Verifica se o OpenOffice Calc se encontra instalado
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 41
3.5.2.1.1.4 – Verifica se o Microsoft Office Excel se encontra instalado
A operação Verifica se o Microsoft Office Excel se encontra instalado tem como finalidade a obtenção da
informação relativa à instalação do Microsoft Office Excel. Esta operação distingue as diferentes instalações
do Microsoft Office Excel que possam existir nos diferentes computadores, de acordo com as suas
funcionalidades. A figura 3.5.28 representa o processo realizado.
Figura 3.5.28 – Verifica se o Microsoft Office Excel se encontra instalado
3.5.2.1.1.5 – Obtém a aplicação associada a uma dada extensão
O objectivo da função Obtém a aplicação associada a uma dada extensão (of_getappassociada) é definir
qual dos pacotes de produtividade instalados deve ser utilizado para tratar cada determinada chamada. A
escolha do pacote de produtividade tem como base os valores devolvidos das verificações acima descritas
que se baseiam em informação independente da aplicação e que, vem do próprio registo do Windows.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 42
A função recebe uma extensão a verificar e devolve a sua associação, se existente, a um pacote de
produtividade.
É utilizada maioritariamente nas funções de criação de objectos de ligação e também nas funções de
construção de strings de extensões de documentos/livros que serão usadas na janela de gravação de
documentos/livros.
3.5.2.1.1.6 – Preenchimento de dropdown com as extensões compatíveis com o que está
instalado
De acordo com a informação dos pacotes de produtividade que se encontram instalados, todas as
dropdown’s presentes na tabpage de Aplicações são dinamicamente preenchidas. Se os pacotes de
produtividade não estivessem instalados as dropdown’s não seriam preenchidas, devido a esse mesmo
facto.
As dropdown’s, Extensão para documentos e Extensão para livros, são preenchidas com as extensões
compatíveis tendo em conta o que está instalado. Estas informações são todas extraídas do registo do
Windows.
Por definição, a extensão definida para documentos é .doc, se ambos os pacotes de produtividade
suportados, Microsoft Office Word e OpenOffice Writer, estiverem instalados. Similarmente, para a
definição de extensões para livros as mesmas verificações são realizadas mas para o Microsoft Office Excel e
OpenOffice Calc.
As definições das extensões aqui presentes serão utilizadas para definir vários comportamentos nas
aplicações. Por exemplo, a associação de modelos na janela de modelos, definição da ordem de formatos
para abertura e gravação, definição de formatos de gravação de documento levando em conta o modelo
utilizado, etc. A figura 3.5.29 representa o processo realizado.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 43
Figura 3.5.29 – TabPage de Preferências
3.5.2.1.1.7 – Restantes funções que compõem a camada de abstracção
As funções anteriormente referidas são manifestamente as mais utilizadas, no entanto, existem uma
série de outras funções auxiliares que implementam tarefas com dimensão inferior. Por exemplo, a
definição das extensões com base na preferência para janelas de abertura e gravação de documentos/livros.
Uma listagem mais detalhada pode ser verificada no Anexo B - Product Backlog e Sprint Backlog.
3.5.2.1.2 – Criação de objectos de ligação
Existem três funções com a tarefa de criação de objectos de ligação: uma é orientada à criação do
objecto de ligação adequado ao tratamento de documentos com base no tipo de documento recebido;
outra é orientada à criação do objecto de ligação adequado à geração de documentos levando em linha de
conta o tipo de modelo que o origina e, o tipo de documento que se pretende criar; e por fim, outra é
orientada à criação do objecto de ligação adequado ao tratamento de livros com base no tipo de livro
recebido.
As duas últimas funções tiveram de ser criadas de raiz e a primeira teve de ser bastante alterada de
forma a se ajustar ao novo paradigma de criação dos objectos de ligação com base nas informações
presentes no registo do Windows.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 44
3.5.3 – Tarefas auxiliares
A criação da camada de abstracção levou à definição de outras tarefas que visam maximizar a eficiência
dessa. As subsecções abaixo descrevem essas tarefas auxiliares.
3.5.3.1 – Guardar documentos/livros em modo de compatibilidade
A funcionalidade guardar documentos/livros em modo de compatibilidade irá permitir a gravação dos
formatos, docx, odt, xlsx e ods em modo de compatibilidade. Desta forma, os formatos enunciados serão
suportados em versões anteriores, tanto do Microsoft Office Word/Excel como do OpenOffice Writer/Calc.
A figura 3.5.30 representa o processo realizado.
Figura 3.5.30 – TabPage de Preferências com definição de gravação em modo de compatibilidade
3.5.3.2 – Guardar documentos no formato docx em Office’s antigos que tenham o Pack de compatibilidade com 2007 instalado
Em versões do Microsoft Office Word anteriores à 2007, que tenham o pacote de compatibilidade com
2007 instalado, é possível gravar documentos no formato .docx através do interface gráfico do Microsoft
Office Word. Visto ser possível realizar esta operação através do interface gráfico, a mesma tem de ser
possível realizar usando a API. A qual ainda não existia e era necessária para que as aplicações AIRC
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 45
pudessem gravar documentos nesse formato e também para ser respeitada a tabela 3.5.1 definida durante
a análise da camada de abstracção.
Todos os formatos de gravação para documentos encontram-se estaticamente definidos para cada
versão do Microsoft Office Word, sendo-lhes atribuída uma constante. Por exemplo, para documentos .doc
o valor da constante é 0 (wdFormatDocument97), para documentos .rtf o valor da constante é 6
(wdFormatRTF), para documentos .docx no Microsoft Office 2007 o valor da constante é 12
(wdFormatXMLDocument).
No entanto, ao desenvolver esta funcionalidade ao nível da API para versões do Microsoft Office Word
anteriores à 2007, foi detectada variabilidade do valor de SaveFormat associado ao formato .docx entre
instalações das diferentes versões do Office com o Compatibility Pack, recorrendo ao teste de gravação de
macro. A variabilidade detectada é caracterizada em seguida.
Após pesquisa [Anexo D – Informação Online Consultada » Pesquisa para guardar documentos em docx
em Office’s anteriores ao 2007 com o pack de compatibilidade instalado, através da API], detectou-se que
apesar do formato .docx assumir um valor numérico de SaveFormat dinâmico em diferentes instalações, em
diferentes computadores, do Office(2000, XP, 2003) com Compatibility Pack instalado, este SaveFormat
tinha uma designação constante (Classname) no array de Item do FileConverter, tendo como designação
“Word12”.
Tendo em conta a variabilidade existente foi necessário pesquisar dinamicamente o valor de SaveFormat
do formato .docx com base no Classname. Só após esse procedimento se poderia guardar o documento
nesse formato. A figura abaixo representa a funcionalidade implementada.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 46
Figura 3.5.31 – Guardar documentos no formato docx em Office’s antigos que tenham o Pack de compatibilidade com 2007 instalado
3.5.3.3 – Extensões para OpenOffice Writer que facilitam a visibilidade de marcadores em modelos Word (.dot,.dotx) convertidos para .ott.
A tarefa associada a esta subsecção teve como origem a seguinte questão:
Os utilizadores que no seu trabalho estão habituados a trabalhar com o Microsoft Office Word resistirão
à mudança para OpenOffice Writer?
Sim, devido essencialmente a três razões:
Simplesmente por estarem habituados à ferramenta que sempre usaram até agora.
Diferença visual.
Necessidade de conversão manual dos modelos Word existentes para modelos Writer para
realizar geração de documentos.
É a terceira razão que esta subsecção visa minimizar visto que, as primeiras duas são de carácter
intrinsecamente pessoal. De facto, era necessária a conversão manual dos modelos, dentro do contexto da
aplicação AIRC, pois os marcadores presentes nos modelos do OpenOffice Writer não são visíveis ao
contrário dos presentes nos modelos do Microsoft Word, como nas seguintes figuras se expõe.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 47
Figura 3.5.32 – Marcador após colocação no Word
Figura 3.5.33 – Visual de um marcador normal após colocação no OpenOffice
Figura 3.5.34 – Solução - Visual do marcador visível no OpenOffice
Resumindo, indirectamente era possível “converter” os modelos Word existentes criando novos modelos
OpenOffice Writer, com a aplicação AIRC, à imagem dos modelos Word existentes para que os modelos
OpenOffice contivessem a solução ao problema dos marcadores sem identificadores visuais da sua presença
(realizando a colocação de cada marcador individualmente). (A definição dos conceitos, marcador e modelo
encontra-se em Definições, Acrónimos e Abreviaturas.)
Tendo em conta o facto de haver um número elevado de modelos, a criação um a um de cada modelo
OpenOffice Writer, como alternativa aos modelos Word existentes, torna-se incomportável e lenta.
Uma nova abordagem era necessária para que os utilizadores de Office pudessem usar o OpenOffice
com o mínimo impacto. Essa abordagem baseou-se em dois passos.
Primeiro proceder à conversão de modelos Word, usando o assistente Conversor de documentos,
incluído no OpenOffice e acessível através de Ficheiro Assistentes Conversor de Documentos. (Ver
figuras 3.5.35 e 3.5.36.)
Figura 3.5.35 – Primeiro passo – Conversão de Modelos Word em Modelos OpenOffice Writer
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 48
Figura 3.5.36 – Primeiro passo – A realizar a conversão
No final da conversão obtém-se tantos modelos OpenOffice Writer quantos os modelos Word existentes.
Um por cada modelo convertido, portanto.
Tendo agora os modelos OpenOffice Writer como resultado da conversão dos modelos Word existentes,
verifica-se que contêm os marcadores já existentes nos modelos Word mas sem a visibilidade que os
caracteriza no Word como se vê na figura 3.5.32. Ao abrir o modelo Word e o modelo OpenOffice Writer
resultante da conversão, verifica-se que neste último o mesmo marcador estará como 3.5.33.
Tendo os modelos convertidos, basta apenas colocar os marcadores visíveis, visto que o OpenOffice não
o faz. [15]
Assim sendo, há lugar a um segundo passo para se obter modelos plenamente funcionais e que possam
constituir uma alternativa séria aos modelos do Word.
Para a execução deste segundo passo foi necessária investigação [consultar Anexo D - Informação
Online Consultada » Pesquisa para as extensões OpenOffice], visto que a solução não é implementada
usando o Powerbuilder mas sim o próprio OpenOffice e o seu ambiente de desenvolvimento de macros.
[Consultar Anexo E - Documentação Extensões OpenOffice]
O OpenOffice, tal como muitas aplicações hoje em dia (Ex: Mozilla Firefox) suportam a adição de plugins
ou extensões, que adicionam comportamentos à aplicação base. Assim sendo, porque não criar extensões
para adicionar o comportamento que falta ao OpenOffice? Porque não colocar os marcadores visíveis nós
mesmos?
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 49
De forma a obter o comportamento necessário desenvolvi duas extensões para o OpenOffice: uma que
coloca visibilidade aos marcadores existentes nos modelos previamente convertidos; e outra que a retira,
caso necessário.
3.5.3.3.1 – Coloca Visibilidade Marcador
A extensão Coloca Visibilidade Marcador pode ser usada por qualquer utilizador que adicione a extensão
desenvolvida à sua instalação de OpenOffice. Esta, durante a execução, pergunta qual a pasta onde o
utilizador quer que os modelos .ott e os seus marcadores no conteúdo sejam alterados para se tornarem
visíveis. Todos os modelos nessa directoria serão alterados. Para mais detalhe, relativamente à utilização da
extensão, é essencial consultar o anexo E - Documentação Extensões OpenOffice. A figura 3.5.37
representa o processo realizado.
A necessidade da criação e aplicação de um estilo de nome Invisível deve-se ao facto de ter de ser
possível a ocultação dos identificadores visuais. Isso é feito colocando a propriedade CharHidden de
objectoCharStyle a false. O objectoCharStyle corresponde ao objecto resultante da pesquisa no array de
estilos procurando por “Invisível“.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 50
Figura 3.5.37 – Coloca Visibilidade Marcador
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 51
3.5.3.3.2 – Apaga Visibilidade Marcador
Se por algum motivo for necessário eliminar os identificadores visuais colocados, basta executar a
extensão Apaga Visibilidade Marcador sobre os modelos modificados anteriormente. Para mais detalhe,
relativamente à utilização, verificar anexo E - Documentação Extensões OpenOffice. A figura 3.5.38
representa o processo realizado.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 52
Figura 3.5.38 – Apaga Visibilidade Marcador
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 53
3.5.4 – Correcção dos problemas existentes nas funcionalidades já criadas pela AIRC que interagem com pacotes de produtividade
Os problemas ou os erros existentes são algo que depende sempre de vários factores. Aponto os três
que considero ser os mais relevantes:
Conhecimento do objecto de trabalho.
Experiência do programador.
Análise.
O problema relacionado com a colocação de marcadores (subcapítulo 3.5.4.1) foi uma conjunção dos
três factores enunciados. A funcionalidade que antes era realizada era limitada devido a uma análise menos
exaustiva mas que se pensava rigorosa.
Quando surgiram novas situações sobre a qual a mesma funcionalidade teria de actuar sem problemas,
teve de ser feita a escolha entre corrigir o código, alterando-o, ou corrigir refazendo-o de origem.
Após análise, verificou-se que era preferível refazer, devido a novos conhecimentos relacionados com a
API do OpenOffice que serão referidos no subcapítulo 3.5.4.1.
Os restantes problemas (subcapítulo 3.5.4.2) também são resultantes de análises superficiais, na altura
do desenvolvimento da funcionalidade. Curiosamente, estas análises só se revelaram insuficientes muito
tempo mais tarde, tanto por evolução dos programadores, por conhecimento de limitações dos pacotes de
produtividade ou por tentativa de utilização da funcionalidade fora do seu âmbito inicial de utilização.
Analisando os problemas existentes, as suas características específicas e a forma como cada um foi
resolvido, destaco as seguintes frases, com as quais me identifico:
Os erros são os portais da descoberta – James Joyce
Até um erro pode revelar-se um elemento necessário a um feito meritório – Henry Ford
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 54
3.5.4.1 – Reformulação Colocar Marca com dispatcher’s para resolver problema de colocação de marcadores em tabelas e molduras no OpenOffice Writer
A versão inicial da colocação de marcadores no OpenOffice foi reconstruída, devido a limitações
funcionais. Esta não suportava a colocação de marcadores em molduras e tabelas devido a problemas de
posicionamento do cursor e seu controlo. Esta falta de suporte deveu-se principalmente, a não se conhecer
todos os requisitos, quando a funcionalidade foi inicialmente realizada.
Analisando as seguintes figuras (3.5.39, 3.5.40 e 3.5.41) é possível verificar as diferenças estruturais
entre as duas versões. Na primeira versão, era necessário um controlo enorme da posição do cursor e só
depois se podia colocar os identificadores visuais e o marcador em si. Na segunda versão, apesar de,
funcionalmente ser feito o mesmo trabalho, evita-se o controlo do cursor, que assumia grande
complexidade em molduras (caixas de texto) e principalmente em tabelas, por exemplo, na gestão de cada
célula.
É possível evitar o controlo do cursor utilizando chamadas ao dispatcher do OpenOffice. O dispatcher é
um componente que se encontra à escuta de ordens genéricas a executar (Command Url’s), por exemplo,
ordens como “Alinhar à Esquerda” ou “Seleccionar Tudo”. A cada uma delas corresponderá necessariamente
diferentes chamadas e obrigatoriamente diferentes Command URL. Por exemplo, “Alinhar à Esquerda” tem
como Command URL ".uno:AlignLeft" e “Seleccionar Tudo” tem como Command URL ".uno:SelectAll".
Da perspectiva da utilização através da API, de tais funcionalidades, é preferível definir que será o
dispatcher a tratar estas chamadas, libertando desta forma o programador de duas tarefas que antes
necessitava de executar:
Controlo do cursor (local onde vai ocorrer determinada operação), visto que para realizar as
mesmas funcionalidades era necessário sempre saber onde está o cursor, por exemplo, se está
numa posição válida, etc.
Trabalho relacionado com a execução das tarefas, que tendo em conta a posição do cursor
podem assumir sintaxes diferentes ou mais complexas.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 55
Figura 3.5.39 – Dispatch Framework do OpenOffice [6]
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 56
Figura 3.5.40 – Colocação de Marcador – Primeira Versão
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 57
Figura 3.5.41 – Colocação de Marcador – Segunda Versão
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 58
3.5.4.2 – Outras correcções
Foram realizadas outras correcções a funcionalidades existentes, tais como:
A obtenção do nome completo do documento (usando a API do Word) para activação usando
funções do Windows (SetForegroundWindow e FindWindow da user32.dll)
A activação de documentos falhava sempre que um documento era aberto em modo de compatibilidade
no Office 2007.
A activação era feita em três passos:
1 - Obtenção do nome do documento.
ls_name = this.ioo_obj.application.ActiveDocument.Name + " - Microsoft Word"
2 - Obter o handle da janela com a passagem do nome obtido para a FindWindow.
lul_handle = lnv_platform.of_FindWindow(ls_null, ls_name)
3 – Activar a janela correspondente ao handle usando a SetForegroundWindow.
lnv_platform.of_SetForegroundWindow(lul_handle)
Após testes o que se verificou é que this.ioo_obj.application.ActiveDocument.Name não devolve todo o
nome necessário à passagem para a FindWindow e, como resultado, não encontrava a janela
correspondente e consequentemente, não a activava na SetForegroundWindow.
A solução obtida resume-se à alteração de this.ioo_obj.application.ActiveDocument.Name para
this.ioo_obj.application.ActiveWindow.Caption.
A forma anterior apenas devolvia o nome do documento aberto, nas figuras abaixo devolveria
Exemplo.doc e Exemplo.docx, respectivamente.
O problema deve-se ao facto de ao se abrir um documento .doc, o Office 2007, assumir o modo de
compatibilidade, verificando-se que o nome do documento não é suficiente para obter o handle da janela
correspondente, visto que falta a string [Modo de Compatibilidade].
A solução passa por usar ActiveWindow.Caption, que devolve o nome da barra de título do documento,
ou seja, o nome da janela. Desta forma a solução passa a ser geral. A anterior forma apenas funcionava para
Office’s anteriores ao 2007 e para documentos abertos sem modo de compatibilidade no Office 2007.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 59
Figura 3.5.42 – Documento aberto em modo de compatibilidade
Figura 3.5.43 – Documento aberto sem estar em modo de compatibilidade
Protecção de inserção de quebras em cabeçalho, rodapé, caixa de texto, comentários,
etc.
Através do GUI a colocação de quebras (quebra de página, quebra de coluna, etc.) encontra-se
protegida, não sendo possível a sua colocação. No entanto, através da utilização da API nada nos impede de
tentar essa colocação. Naturalmente a API devolverá um erro devido a essa funcionalidade não existir.
Assim sendo, essa protecção tem de ser efectuada no próprio código. Tendo em conta que apenas é
possível inserir quebras no corpo do documento, no momento anterior à colocação da quebra, verifica-se se
o cursor está no corpo do documento ou se está noutro local qualquer (cabeçalho, rodapé, comentário,
caixa de texto, etc.).
if this.ioo_obj.application.ActiveWindow.ActivePane.View.SeekView = wdseekmaindocument then
Só se estiver no corpo do documento será inserida a quebra.
Protecção ActiveDocument
Grande parte do processamento realizado sobre documentos é feito usando a referência ao documento
que se encontra activo no Word, no entanto, esta propriedade nem sempre é válida. Por exemplo, quando
se fecha o documento activo e não temos mais nenhum aberto, a ActiveDocument não terá conteúdo
válido.
Para evitar os erros decorrentes de tentar aceder ao documento activo quando ele não existe, é feita a
protecção usando blocos de captura de excepções try catch. Esta protecção evita que o programa termine
de forma fatal.
3.5.5 – WebServices
Os Webservices a implementar visam, através da sua execução, obter informação relativa à presença de
marcadores em modelos e verificar a coerência dessa informação.
Ambos os WebServices foram implementados no projecto ACE – Agente de Comunicações Externas.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 60
3.5.5.1 – Webservice que, para o modelo associado a uma dada acção, devolva informação sobre os marcadores que estão presentes nesse modelo e se estão na Base de Dados
Este WebService possibilita várias pesquisas importantes na sua execução, no que se refere ao
conhecimento que é extraível dos marcadores presentes nos modelos e na tabela de acções.
A criação deste WebService seguiu quatro fases distintas:
Análise
Desenvolvimento
Configuração
Testes
Análise
Durante esta fase foi realizada uma averiguação dos pré-requisitos necessários à implementação do
WebService. Este WebService é diferente de todos os realizados até agora no Agente de Comunicações
Externas (ACE) visto que, necessita de aceder aos modelos associados às diferentes acções para obter os
marcadores e conseguir fazer a necessária pesquisa e comparação.
Para aceder a modelos é preciso usar um pacote de produtividade para os abrir. A escolha neste caso,
recai sobre o OpenOffice visto que consegue aceder a todos os modelos existentes, mesmo os criados no
Microsoft Word, e verificar os marcadores neles contidos. Desta forma, previu-se a instalação do OpenOffice
no servidor.
Tendo em conta que o projecto do ACE não contém as AFC, com as quais se cria instâncias do objecto de
ligação, prevê-se a criação da hierarquia de objectos de ligação a pacotes de produtividade no âmbito do
ACE.
Desconhecia-se, no entanto, se a hierarquia presente nas AFC seria compatível com a forma de
funcionamento do ACE. Mais tarde, verificou-se que os objectos pertencentes à hierarquia tinham de ser
reformulados devido a características específicas de utilização de WebServices.
Os objectos que constituem a hierarquia devem conter apenas os procedimentos necessários, de modo a
reduzir a quantidade de memória e o processamento necessário para execução.
Relativamente ao problema a tratar, há a necessidade de aceder à base de dados e também, que o
resultado de todos estes processos deve ser devolvido na forma de XML.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 61
Desenvolvimento
A criação da hierarquia dos objectos de ligação teve nos seus procedimentos as seguintes alterações:
Remover todos os procedimentos que são supérfluos ao trabalho em mãos para minimizar a
carga dos objectos de ligação na memória do servidor;
Remover/alterar procedimentos que não façam sentido no âmbito do ACE, devido a serem na
sua essência objectos das AFC com o seu próprio contexto de execução. Resumindo, há que
adaptar a forma de actuação destes objectos para o contexto do ACE.
Para obter a informação dos marcadores obrigatórios de uma acção e saber se esses se encontram no
modelo a si associado é necessária uma pesquisa à base de dados. Nessa pesquisa, obtém-se diversas
informações: quais os marcadores que estão associados a uma determinada acção; desses, quais são
considerados obrigatórios; e qual o caminho do modelo associado a uma aplicação para a qual a acção se
encontra associada. Na figura seguinte verifica-se a pesquisa realizada.
Figura 3.5.44 – Pesquisa realizada à base de dados
Chave_c_acc, integer, representa a chave não repetida da acção
Required_omacc, smallint, flag que representa se um determinado marcador é obrigatório ou não.
Cod_capli, char(3), código da aplicação Ex: SGD, STA, etc.
Moddef_fmtda, integer, representa a chave não repetida do modelo
Desig_c_acc, varchar(250), representa o nome da acção Ex: Pedido de Certidão.
Chave_fmarc, integer, representa a chave não repetida do marcador
Código_fmarc, varchar(25), representa o nome do marcador Ex: GRLNOMEPAI
Desig_fmarc, varchar(75), representa a designação do marcador Ex: Nome do Pai
Dirdocum_capli, varchar(100), representa a directoria de documentos de cada aplicação
Nomefich_fmtda, varchar(200), representa o nome do modelo da chave na tabela de acções
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 62
Como o resultado da operação tem de ser devolvido na forma de XML, é necessário, antes adequá-lo a
um template específico.
Figura 3.5.45 – Template de XML dos dados devolvidos
Desta figura retira-se bastante informação. GRLMRC é a área sobre a qual é realizada a pesquisa quando
o Webservice é chamado. Naturalmente a informação relativa à área tem de ser única. Os campos têm de
ser em maiúsculas e respeitando a ordem na qual foram seleccionadas na criação da pesquisa da
DataWindow.
Os campos têm de ter associados a característica de CDATA, para efeitos de compatibilidade do XML
devolvido. Se não fosse utilizado poderia haver erros no XML devido à interpretação de caracteres da
mensagem como um terminador ou token.
Para cada campo que seja pesquisado é necessário definir na Tag de cada um, MRP= nome do campo no
template de XML.
Tendo a hierarquia dos objectos concluída e os dados da pesquisa à disposição é possível criar o resto da
funcionalidade pretendida.
As seguintes figuras representam a funcionalidade na forma de algoritmo e na forma de como
arquitectura se encontra organizada para a realizar:
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 63
Figura 3.5.46 – Webservice Marcadores Obrigatórios (Algoritmo)
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 64
Figura 3.5.47 – Webservice Marcadores Obrigatórios (Arquitectura)
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 65
Configuração e Testes
No início da fase Testes, comecei por instalar o OpenOffice no servidor. Em seguida, usando a aplicação
de Ambiente de testes do ACE (ACE - Consultas), foi possível invocar o WebService desenvolvido para validar
as funcionalidades realizadas.
Verifiquei nesses testes que o objecto de ligação não era criado correctamente. Após alguma pesquisa
[Anexo D - Informação Online Consultada » Pesquisa para Webservices » Resolução questão da entrada
OpenOffice no DCOM no servidor], verifiquei que é necessário configurar alguns itens no servidor para que
o funcionamento seja o correcto. Houve então lugar a uma fase de configuração.
Acedendo ao servidor Windows Server 2003 R2: Iniciar Programas Administrative Tools
Component Services. Na janela que abre Expandir Component Services Computers My Computer
DCOM Config.
Em Documento de texto do OpenOffice.org 1.1 Identity é necessário definir um utilizador que seja
administrador da máquina e simultaneamente utilizador do domínio.
Desta forma, verifica-se que é necessário ter em atenção as características do utilizador que usa/cria o
objecto de ligação ao OpenOffice. Este tem de ser administrador da máquina, para poder criar o objecto de
ligação correctamente, e para aceder a documentos remotos tem que ser um utilizador do domínio.
A próxima figura demonstra esses requisitos:
Figura 3.5.48 – Configuração na DCOM
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 66
Se não for definido um utilizador administrador da máquina na DCOM, os processos são criados mas não
passam o teste isalive do PB e os acessos à API do OpenOffice não têm sucesso.
Se for definido um utilizador administrador da máquina na DCOM, mas não sendo utilizador do domínio
de rede, os processos são criados correctamente, passam o teste isalive do PB e os acessos à API do
OpenOffice têm sucesso. No entanto, se se quiser aceder a um documento numa pasta partilhada remota dá
excepção na chamada à função loadcomponentfromurl.
Se for definido um utilizador administrador da máquina na DCOM, e sendo utilizador do domínio de
rede, os processos são criados correctamente, passam o teste isalive do PB e os acessos à API do OpenOffice
têm sucesso. Os acessos a um documento numa pasta partilhada remota são bem sucedidos.
Testes (parte 2)
Tendo tudo configurado é possível agora verificar as funcionalidades realizadas.
É possível realizar um número alargado de pesquisas, apresentando-se de seguida, as três mais
importantes.
Saber os marcadores não obrigatórios que estejam na Base de dados.
<filter name='CHAVECACC' oper='=' >7</filter>
<filter name='REQUIREDOMACC' oper='=' >0</filter>
<filter name='MARCADORBD' oper='=' >1</filter>
Saber os marcadores obrigatórios e se estão presentes no modelo.
<filter name='CHAVECACC' oper='=' >7</filter>
<filter name='REQUIREDOMACC' oper='=' >1</filter>
Saber os marcadores que estão no modelo e não são iguais a nenhum da Base de dados.
<filter name='CHAVECACC' oper='=' >7</filter>
<filter name='MARCADORBD' oper='=' >2</filter>
<filter name='MARCADORMODELO' oper='=' >1</filter>
Após a verificação do resultado das pesquisas acima procedeu-se a testes de carga nomeadamente, com
acessos simultâneos que tiveram como base as seguintes questões:
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 67
1 – É suportada a reutilização dos objectos de ligação ao OpenOffice para as várias chamadas (consulta) à
GRLMRC?
Sim. O tempo de utilização antes da reutilização era de 4.5 segundos. (Este tempo inclui obtenção de
sessão, criação do objecto de ligação, abertura do documento, obtenção dos marcadores presentes, fecho
do documento e término dos processos do OpenOffice)
O tempo de utilização com reutilização é de 1 segundo. (Este tempo inclui obtenção de sessão,
reutilização do objecto de ligação já criado, abertura do documento, obtenção dos marcadores presentes e
fecho do documento)
A melhoria do tempo de consulta deve-se ao tempo que se poupa por não se criar o objecto de ligação
sempre que se consulta.
2 – Quanta memória é utilizada pelo OpenOffice em chamadas dispersas no tempo?
A utilização oscila entre os 56 megabytes e os 57 megabytes durante a utilização. No final da utilização
fica a 56 megabytes.
3 – Qual o comportamento em 7 chamadas concorrentes com a mesma pesquisa com o objecto de
ligação existente no servidor?
A utilização da memória oscila entre os 56 megabytes e os 58 megabytes durante a utilização. No final da
utilização fica a 56 megabytes.
Não ficam documentos abertos apesar das diferentes pesquisas se realizarem todas sobre o mesmo
modelo.
O tempo de retorno da resposta neste teste de 7 chamadas simultâneas oscilou entre 0,8 segundos e 1,1
segundos.
4 – Qual o comportamento em 7 chamadas concorrentes com a mesma pesquisa com o objecto de
ligação inexistente no servidor?
A utilização da memória oscila entre os 0 megabytes (devido à criação) e os 60 megabytes durante a
utilização. No final da utilização fica a 60 megabytes.
Não ficam documentos abertos apesar das diferentes pesquisas se realizarem todas sobre o mesmo
modelo.
O tempo de retorno da resposta neste teste de 7 chamadas simultâneas oscilou entre 0,6 segundos e 4,3
segundos.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 68
5 – Qual o comportamento em 7 chamadas concorrentes com 3 diferentes pesquisas, em que algumas
são iguais, com o objecto de ligação já existente no servidor?
A utilização da memória oscila entre os 56 megabytes e os 58 megabytes durante a utilização. No final da
utilização fica a 56 megabytes.
Não ficam documentos abertos apesar das diferentes pesquisas se realizarem todas sobre o mesmo
modelo.
O tempo de retorno da resposta neste teste de 7 chamadas simultâneas oscilou entre 0.6 segundos e 1,1
segundos.
6 – Qual o comportamento em 7 chamadas concorrentes com 3 diferentes pesquisas, em que algumas
são iguais, com o objecto de ligação inexistente no servidor?
A utilização da memória oscila entre os 0 megabytes (devido à criação) e os 57 megabytes durante a
utilização. No final da utilização fica a 56 megabytes.
Não ficam documentos abertos apesar das diferentes pesquisas se realizarem todas sobre o mesmo
modelo.
O tempo de retorno da resposta neste teste de 7 chamadas simultâneas oscilou entre 0,7 segundos e 4,3 segundos.
A fase de testes encontra-se com mais detalhe no Anexo C – Documentação Webservice.
3.5.5.2 – Webservice que recebe por argumento, acção ou um caminho para um modelo e um array de marcadores. Devolve os marcadores, do array recebido que não estão presentes no modelo
Este WebService tem como funcionalidade principal devolver quais os marcadores passados por
argumento que não estão presentes no modelo.
O modelo que entra na comparação dos marcadores pode ser o que está associado a uma acção ou pode
ser um modelo acessível por um caminho que é passado ao Webservice por argumento. Desta forma,
estipula-se duas formas de pesquisa:
Para o modelo associado à chave de acção pesquisar se os marcadores passados por argumento
estão ou não no modelo.
<filter name='CHAVECACC' oper='=' >7</filter>
<filter name='CODIGOFMARC'
oper='M'>TAX2009|TAX2010|TAX22_R1|FANTASMA|TAX38_R1|MAISUM|TAX2025_R1|OUTRO</filter>
Para o caminho para o modelo passado por argumento pesquisar se os marcadores, também
passados por argumento, estão ou não no modelo.
<filter name='PATHMODELOPORXML' oper='M' >\\Servidor\documentos\Registo.dot</filter>
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 69
<filter name='CODIGOFMARC' oper='M'
>TAX2009|TAX2010|TAX22_R1|FANTASMA|TAX38_R1|MAISUM|TAX2025_R1|OUTRO|EMAISOUTRO</filt
er>
Ambas as pesquisas devolvem os marcadores do array passado por argumento que não estão presentes
no modelo.
Neste Webservice dispensou-se a fase de configurações visto que já estava definida devido ao primeiro
Webservice desenvolvido.
As próximas figuras representam a funcionalidade desenvolvida:
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 70
Figura 3.5.49 – Webservice verifica presença marcadores (primeira forma de pesquisa)
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 71
Figura 3.5.50 – Webservice verifica presença marcadores (segunda forma de pesquisa)
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 72
Figura 3.5.51 – Webservice verifica presença marcadores (primeira e segunda forma de pesquisa) – Diferenças de Arquitectura
Analisando as figuras acima verifica-se que em termos de arquitectura não há grandes diferenças entre a
primeira e segunda forma de pesquisa.
A primeira forma de pesquisa consulta a base de dados para obter o caminho do modelo associado à
acção que, em seguida, utiliza para abrir o modelo de forma a obter os marcadores a comparar. Já a
segunda forma de pesquisa abre o modelo recebido por argumento para obter os marcadores a comparar,
não sendo necessária a pesquisa à base de dados.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 73
3.5.6 – Detecção de marcadores obrigatórios na Janela de Acções
No âmbito do trabalho desenvolvido no Webservice Marcadores Obrigatórios, tornou-se necessário
verificar na janela de acções se no modelo associado à acção estão presentes todos os marcadores definidos
como obrigatórios na treeview que a janela contém.
Figura 3.5.52 – Janela de Acções
Analisando a figura acima várias informações são obtidas: Em está definida a aplicação sobre a qual
a janela de acções mostra o detalhe em baixo; Em são mostradas as acções existentes para essa
aplicação; Em e é mostrado o detalhe para a selecção feita em ; Em está a informação do
modelo associado e em está uma lista de marcadores. Os marcadores assinalados com um visto serão
considerados obrigatórios.
De acordo com a informação aqui apresentada será feito o trabalho de verificação, procurado assim
apurar se, de facto, os marcadores considerados obrigatórios para a acção estão no modelo associado à
acção. Este procedimento é despoletado quando o utilizador carrega no botão Verificar. A próxima figura
representa essa funcionalidade.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 74
Figura 3.5.53 – Janela de Acções com verificação de marcadores obrigatórios (funcionalidade)
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 75
A figura seguinte apresenta o funcionamento da funcionalidade detalhada em 3.5.53.
Figura 3.5.54 – Janela de Acções com verificação de marcadores obrigatórios (funcionamento)
Quando se detecta que existem marcadores obrigatórios na treeview que não estão também no modelo,
estas duas mensagens (marcadas com ) são apresentadas para informar o utilizador que os marcadores
obrigatórios, que na treeview não estão a negrito, não se encontram no modelo.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 76
4 – Utilização do Módulo de
Integração Calc e Camada de
Abstracção numa aplicação AIRC
4.1 – Integração com o SCE
O Sistema de Controlo de Empreitadas (SCE) é a aplicação que mais funcionalidades utiliza do módulo
Excel e consequentemente do módulo OpenOffice Calc após a integração.
Deste modo, ao suportar as operações que o SCE realiza, com o módulo OpenOffice Calc desenvolvido,
têm-se a certeza que todas as funcionalidades do Excel que as outras aplicações do pacote AIRC2000 usam,
são suportadas devido ao facto de essas aplicações utilizarem apenas um conjunto das funcionalidades que
estão presentes no SCE, já suportadas pelo OpenOffice Calc.
Sendo assim, ao verificar a aceitação das funcionalidades desenvolvidas no módulo OpenOffice Calc
como correctas, devido a exibirem o mesmo comportamento das do módulo Excel, o esforço passa a ser
unicamente o resultante do dotar das aplicações do comportamento necessário à utilização de livros
OpenOffice Calc visto que estão apenas preparadas para abrir livros Excel.
Dotar a aplicação do suporte do OpenOffice Calc e manter a interoperabilidade com o Excel é o
objectivo.
Alguns detalhes da integração serão abordados neste capítulo, no entanto, dificuldades de integração
serão abordadas no subcapítulo de Dificuldades Sentidas no capítulo 5 de Conclusões.
A definição dos conceitos, livro e folha de cálculo encontra-se em Definições, Acrónimos e Abreviaturas.
4.2 – Funcionalidades do SCE
Os próximos pontos a abordar referem-se ao suporte de funcionalidades específicas do SCE através do
OpenOffice Calc.
4.2.1 – Exportar Orçamentação
A funcionalidade Exportar Orçamentação refere-se ao processo de criação de um livro com base no
conjunto de informações presentes no SCE.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 77
Este procedimento teve de ser adaptado para suportar a exportação para Excel e Calc, de acordo com a
escolha do utilizador.
Aquando da exportação para um livro são utilizadas várias funcionalidades implementadas no módulo de
integração desenvolvido.
Por exemplo, a exportação da orçamentação de um processo de empreitada passa pelas seguintes
funcionalidades implementadas no módulo de integração do OpenOffice Calc:
Ligar
Saber se está Aberto
Saber Número de Livros Abertos
Filename2url
Criar Novo Livro
Activar Livros
Abrir Livros
Definir Visibilidade da Janela do Livro
Definir Conteúdo de uma Célula (Endereço)
Definir Formato de uma Célula (Endereço)
Definir Conteúdo de uma Célula (Endereço) para texto
Este procedimento, durante a sua execução, reutiliza várias vezes as mesmas funcionalidades. As
reutilizações não foram inseridas na lista acima.
Como resultado da exportação obtém-se um livro com os dados preenchidos. Como o procedimento da
aplicação não inclui a funcionalidade de Guardar Livros, devido a razões estritamente algorítmicas, o
utilizador tem a opção de guardar as alterações ao livro no final da geração. Aquando da execução da
operação Criar Novo Livro, o livro é criado numa localização em disco definida pelo utilizador.
Figura 4.2.1 – Exportar Orçamentação
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 78
4.2.2 – Importar Orçamentação
A funcionalidade Importar Orçamentação refere-se ao processo de entrada da informação presente num
livro para a área de orçamentação do SCE.
Este procedimento teve de ser adaptado para suportar a importação de informação de livros Excel e
Calc, de acordo com a escolha do utilizador.
Aquando da importação da informação presente no livro são utilizadas várias funcionalidades
implementadas no módulo de integração desenvolvido. Por exemplo, a importação através de um livro para
a orçamentação de um processo de empreitada passa pelas seguintes funcionalidades implementadas no
módulo de integração do OpenOffice Calc:
Ligar
Abrir Livros
Activar Livros
Saber Número de Livros Abertos
Filename2url
Definir Visibilidade da Janela do Livro
Obtenção do Conteúdo de uma Célula (Endereço)
Este procedimento, durante a sua execução, reutiliza várias vezes as mesmas funcionalidades. As
reutilizações não foram inseridas na lista acima.
Tendo em conta que a camada de abstracção já se encontra implementada, é possível importar uma
parte da orçamentação a partir de livros Microsoft Excel e outra a partir de livros OpenOffice Calc, bastando
para isso escolher o livro pretendido na janela de escolha de livro de onde importar.
Figura 4.2.2 – Importar Orçamentação
4.2.3 – Exportação de mapas
No SCE existe a possibilidade de exportar mapas para livros Excel e Calc. Desta forma basta seleccionar
um processo em alguns mapas específicos e proceder à exportação da informação.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 79
Este procedimento teve de ser adaptado para suportar a exportação para Excel e Calc, de acordo com a
escolha do utilizador.
Aquando da exportação para um livro são utilizadas várias funcionalidades implementadas no módulo de
integração desenvolvido.
A exportação de um mapa passa pelas seguintes funcionalidades implementadas no módulo de
integração do OpenOffice Calc:
Ligar
Abrir Livros
Activar Livros
Saber Número de Livros Abertos
Filename2url
Definir Visibilidade da Janela do Livro
Definir Formato de uma Célula (Endereço)
Definir Conteúdo de uma Célula (Endereço)
Definir Conteúdo de uma Célula (Endereço) para texto
Insere Linha
4.3 – Efeito do funcionamento da camada de abstracção no SCE
É possível verificar o efeito do funcionamento da camada de abstracção nas tarefas que se realizam no
SCE. Esta implementa um comportamento dinâmico muito diferente do anteriormente presente.
Antes do desenvolvimento da camada de abstracção e da sua utilização, as criações de objectos de
ligação eram estáticas, no sentido em que, não se verificava se de facto, no computador onde se executava
a aplicação AIRC2000 estavam instalados pacotes de produtividade compatíveis ou se, o que estava
instalado era compatível com um determinado tipo de livro. Simplesmente tentava-se criar o objecto de
ligação, o que resultava em erros por não estar instalado ou, devido ao que está instalado não ser capaz de
gerir os livros pretendidos.
Sempre que se criava um objecto de ligação Excel para tratar livros do Calc, resultava em fracasso pois o
Excel não consegue tratar esses livros pois não são compatíveis.
Em seguida referem-se as funções da camada de abstracção que são utilizadas no âmbito do SCE:
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 80
No caso de exportar orçamentação:
Função que abre a janela de escolha de localização de gravação de um livro, em que as extensões
possíveis para guardar são alimentadas automaticamente usando outras funções realizadas.
Função que devolve as extensões de Livros possíveis para gravação ordenadas pela preferência de
extensão para livros, e de acordo com o que está instalado.
Função que devolve a preferência de extensão para Livros.
Função que detecta que se o Microsoft Office Excel está instalado.
Função que detecta que se o OpenOffice Calc está instalado.
Função que visa a criação do objecto de ligação ao Excel/Calc.
Função que verifica a aplicação associada a uma dada extensão.
No caso de importar orçamentação:
Função que abre a janela de escolha de localização de abertura de um livro, em que as extensões
possíveis para abertura são alimentadas automaticamente usando outras funções realizadas.
Função que devolve as extensões de Livros possíveis para abertura ordenadas pela preferência de
extensão para livros, e de acordo com o que está instalado.
Função que devolve a preferência de extensão para Livros.
Função que detecta que se o Microsoft Office Excel está instalado.
Função que detecta que se o OpenOffice Calc está instalado.
Função que visa a criação do objecto de ligação ao Excel/Calc.
Função que verifica a aplicação associada a uma dada extensão.
No caso de exportar um mapa:
Função que abre a janela de escolha de localização de gravação de um livro, em que as extensões
possíveis para guardar são alimentadas automaticamente usando outras funções realizadas.
Função que devolve as extensões de Livros possíveis para gravação ordenadas pela preferência de
extensão para livros, e de acordo com o que está instalado.
Função que devolve a preferência de extensão para Livros.
Função que detecta que se o Microsoft Office Excel está instalado.
Função que detecta que se o OpenOffice Calc está instalado.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 81
Função que visa a criação do objecto de ligação ao Excel/Calc.
Função que verifica a aplicação associada a uma dada extensão.
As funções acima mencionadas estão orientadas às funções relacionadas com a funcionalidade
desenvolvida para livros na camada de abstracção mas, existem funções similares para o tratamento de
documentos e modelos em aplicações AIRC2000 que trabalhem com documentos.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 82
5 – Conclusões
5.1 – Resultados do Estágio
5.1.1 – Versão Alfa 1.0 do Módulo de Integração com OpenOffice Calc
A versão alfa 1.0 do módulo de integração Calc constitui uma versão que contém todas funcionalidades,
ou seja, as funcionalidades existentes no módulo Excel, necessárias à boa aceitação da mesma por parte dos
possíveis clientes, como resultado da integração do módulo nas aplicações.
5.1.2 – Camada de Abstracção
A construção da camada de abstracção constitui um passo importante na utilização dos objectos de
ligação a pacotes de produtividade. Utilizando-a, será sempre construído um objecto compatível com o
documento/livro a tratar.
Caso o computador não tenha as condições mínimas necessárias, ou seja, não ter os pacotes de
produtividade necessários instalados, não são apresentados erros devido a tentar criar objectos de ligação a
esses pacotes de produtividade. Dantes esta operação resultava num erro que terminava a aplicação. Neste
momento é apresentado ao utilizador, na tabpage de preferências (figura 3.5.29), a causa de a aplicação não
estar a funcionar na plenitude das suas capacidades (abrir/gravar/fechar documentos/livros) devendo
aplicar acções correctivas, ou seja, instalar o(s) pacote(s) de produtividade necessários.
A utilidade da camada de abstracção e foi validada através da utilização das funcionalidades do SCE,
subcapítulo 4.3, sendo previsível que venha a ser aperfeiçoada no futuro, caso surjam novos pacotes de
produtividade(ex: IBM Lotus Symphony), novas versões de pacotes de produtividade ou novos formatos de
documentos.
5.1.3 – Webservices
Os Webservices criados visam aumentar, através da sua utilização, a coerência entre os marcadores
presentes no modelo e os presentes na base de dados, ou lista de marcadores, para que se possa saber se
um determinado modelo contém os marcadores necessários. O primeiro Webservice verifica os marcadores
que estão na base de dados e os marcadores que se encontram nos modelos para uma determinada acção.
O segundo, entre marcadores passados por argumento e os marcadores no modelo associado à acção ou
num modelo específico.
Através da sua utilização, um conjunto de informações de grande importância é extraída para a gestão
da informação e sua concordância. (Ver subcapítulo 3.5.5.1, 3.5.5.2 e Anexo C - Documentação Webservice)
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 83
Os WebServices foram criados com sucesso.
5.1.4 – Janela de acções
Na Janela de acções o mesmo princípio enunciado para os Webservices manteve-se. O procedimento de
verificação de coerência de informação foi criado com sucesso. (Ver subcapítulo 3.5.6)
5.2 – Principais Dificuldades
As principais dificuldades sentidas foram as seguintes:
Criação do objecto de ligação válido e vivo no servidor:
Esta dificuldade foi ultrapassada após pesquisa e configuração no servidor. (Ver Anexo D –
Documentação Webservice e Anexo E – Informação Online Consultada Resolução questão da entrada
OpenOffice no DCOM no servidor)
Obtenção do SaveFormat dinâmico para .docx em Office’s anteriores ao 2007:
Esta dificuldade foi ultrapassada após pesquisa. (Ver Anexo E – Informação Online Consultada
Pesquisa para guardar documentos em docx em Office’s anteriores ao 2007 com o pack de
compatibilidade instalado, através da API)
Definição do formato para Calc:
Esta dificuldade foi ultrapassada após pesquisa. (Ver Anexo E – Informação Online Consultada Criar e
aplicar formato de número específico)
5.3 – Apreciação Crítica do Estágio
O módulo de integração com o Calc veio colmatar uma lacuna no funcionamento das aplicações AIRC.
Com o desenvolvimento deste módulo, mais um passo é dado no sentido da redução de custos indirectos
nos nossos clientes. São livres de escolher entre OpenOffice e Microsoft Office para a utilização das
aplicações para a AIRC2000 e, mais importante, deixam de ter de comprar um pacote de produtividade para
usarem a aplicação AIRC2000.
A construção da camada de abstracção foi um passo no sentido da interoperabilidade e melhoramento
da integração dos módulos existentes, no sentido de evitar configurações constantes da parte do utilizador,
bem como, de configurações estáticas com base em nenhuma informação palpável e não verificável. É
devido a estes motivos que o funcionamento da camada de abstracção é baseado na informação presente
no registo do Windows.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 84
A criação das extensões para o OpenOffice liberta o utilizador de um trabalho entediante e longo de
conversão de modelos. Com estas novas funcionalidades, o utilizador pode fazer uma transição muito rápida
e suave entre uma aplicação que só trabalhava com o Word e que tinha os seus modelos, para uma que
trabalhe com o Word e OpenOffice com a conversão dos modelos Word já existentes e colocação de
identificadores visuais usando a extensão apropriada ao efeito.
A correcção das funcionalidades existentes não é mais do que um aperfeiçoar contínuo dos processos
implementados, muitas vezes desenvolvidos à vários anos atrás.
Os Webservices foram a par da construção do objecto Calc as tarefas que necessitaram de mais
pesquisa.
A camada de abstracção foi a tarefa que mais tempo de análise necessitou.
A tarefa Uniformizar sistemas de actualização de marcadores (Sistema do ACE e sistema do ERP)
presente no Product Backlog foi suspensa pelo Product Owner devido a ser necessária uma reanálise de
fundo ao requisito. Este requisito tem sido alvo de diferentes abordagens e encontra-se pouco definido e
fragmentado.
O trabalho desenvolvido foi validado e já se encontra nas AFC à disposição dos programadores.
Relativamente às condições de trabalho, foram propícias à realização de um bom trabalho. O orientador
e tutor auxiliaram-me nas minhas tarefas, ao longo de todo o percurso do estágio, no sentido de as clarificar
e definir.
Ao nível do desenvolvimento pessoal, este estágio constituiu uma experiência muito enriquecedora
devido ao contacto com paradigmas diferentes de programação, novos desafios e novas metodologias de
desenvolvimento.
Em suma, o facto de contribuir para o desenvolvimento e melhoramento de várias aplicações que são
comercializadas nos clientes AIRC é uma razão de orgulho e de satisfação pessoal.
5.4 – Trabalho Futuro
Desenvolver o único ponto do Product Backlog que ficou por criar, a funcionalidade Uniformizar sistemas
de actualização de marcadores (Sistema do ACE e sistema do ERP), e dar suporte às funcionalidades
desenvolvidas.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 85
6 – Bibliografia
[1] “PowerBuilder Foundation Classes Getting Started”, Julho 2004, Sybase (documentação do
PowerBuilder)
[2] “PowerBuilder Foundation Classes Library User´s Guide”, Junho 2001, Sybase (documentação do
PowerBuilder)
[3] “Normas de Programação”, Outubro de 2000, AIRC (documentação interna da AIRC)
[4] “Criação inicial do Framework”, Outubro de 2000, AIRC (documentação interna da AIRC)
[5] “Useful Macro Information For OpenOffice By Andrew Pitonyak”, Junho 2009 , Andrew Pitonyak
[6] “OpenOffice.org 2.3 - Developer's Guide”, Junho 2007, Sun Microsystems, Inc.
[7] “Personalizar el teclado con OpenOffice.org Basic”, 2007, Ariel Constenla-Haile
[8] ”Guía de programación de StarOffice 8 para BASIC”, Junho 2005, Sun Microsystems, Inc.
[9] “Scrum in five minutes”, SoftHouse
[10] “Notes from Agile Project Management with Scrum”, Maio 2006, Bruno Orsier
[11] http://www.oooforum.org/ , fórum onde a comunidade troca impressões e tira dúvidas sobre macros
do OpenOffice. Acedido em todos os momentos da fase de implementação.
[12] http://api.openoffice.org/ , permite a consulta do Developer Guide e realizar pesquisas nas mailing list e
diversos recursos sobre o OpenOffice. Acedido em todos os momentos da fase de implementação.
[13] http://lxr.go-oo.org/ , permite a consulta do código fonte do OpenOffice. Acedido várias vezes no
decorrer da fase implementação.
[14] http://msdn.microsoft.com/pt-pt/library/dd146899(en-us).aspx , Word 2007 Developer Reference,
permite a investigação dos membros e propriedades dos objectos da API do Word.
[15] http://www.openoffice.org/issues/show_bug.cgi?id=2517, Limitação do OpenOffice presente no seu
próprio Issue Tracker relativa a não colocar os marcadores visíveis no OpenOffice.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 87
ANEXO A – Objecto de ligação ao
OpenOffice Calc – Especificação de
implementação e funcionalidades
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 88
Objecto de ligação ao OpenOffice Calc
Objecto(s) n_oleoocalc
Problema Há necessidade de criar uma alternativa válida à integração já existente nas nossas
aplicações (Excel) tendo como base aplicações OpenSource como é o caso do OpenOffice,
nomeadamente, o Calc.
Descrição O objecto n_oleoocalc fornece uma série de funcionalidades que permitem fazer uma boa
parte desta integração. Basicamente estabelece uma ligação a uma instância do Calc e
comunica com esta, de forma a executar uma série de operações sobre Books e sheets.
Nota: Um book é um livro Calc, ou seja um ficheiro com a extensão “ods”. Uma sheet é
uma folha dentro de um livro, nas quais é possível realizar operações.
Revisão Histórica
Descrição Autor
Criação do documento e explicação das funções equivalentes ao objecto Excel que foram implementadas através de chamadas à API do OpenOffice.
Ivo Santos
Acrescentar novas funcões ( as of_setcelltext(…) e a of_setformato(row,column,formato)) Ivo Santos
Na prática: A primeira coisa a fazer é criar o objecto de ligação. Para isso utiliza-se a função:
f_setolebook( objecto de ligação, extensão/aplicação)
O primeiro parâmetro é uma variável do tipo n_oleoocalc.
O segundo deve ser uma string com a extensão do livro ou o tipo de aplicação que se pretende abrir. No
caso do OpenOffice Calc a aplicação é “Calc” e as extensões suportadas são: “ods” e “ots”
Posteriormente deve ser estabelecida a ligação com o Calc propriamente dito. Para isso utiliza-se a função:
of_ligar()
Para desligar utiliza-se a função:
of_desligar()
Não se deve esquecer de desligar antes de destruir o objecto de ligação.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 89
Uma vez criado o objecto e efectuada a ligação podem ser utilizadas as seguintes funções, divididas em 3
grupos:
Funções de configuração
Funções de manipulação de livros e folhas
Funções de exportação e importação
Notas importantes:
Caso não se indique o parâmetro “livro”, é assumido o livro activo no OpenOffice Calc nesse momento
O parâmetro “livro” deve ser sempre o nome completo. Por ex.:” c:\temp\exemplo.ods”
Todas as constantes referidas são do objecto de ligação
Funções de configuração
Definir o tamanho da janela do Calc
of_setwindowstate(estado)
O parâmetro deve ser uma das seguintes constantes:
NORMAL
MAXIMIZED
MINIMIZED
Saber o tamanho da janela do Calc
of_getwindowstate()
Devolve:
-1 em caso de erro
0 para janela no estado normal (não maximizada)
1 para janela maximizada
2 para janela minimizada
Nota: Para aferir o estado actual da janela procede-se à obtenção do tamanho da janela e da resolução do
ecrã, ambos em pixéis. Através da comparação destes dados é possível discernir em que estado a janela do
livro estará.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 90
Definir o estado da janela do Calc
of_setvisiblestate(estado)
Devolve:
TRUE para janela visível
FALSE para janela invisível
Nota: Só é possível executar esta operação sobre um livro aberto e activo.
Saber o estado de visibilidade da janela do livro
of_getvisiblestate()
Devolve: TRUE para janela visível
FALSE para janela invisível
Funções de manipulação de livros e folhas
Nota: O parâmetro “livro” deve ser sempre o nome completo. Por exemplo: ”c:\temp\exemplo.ods”
Ao contrário do Excel, o Calc permite a abertura simultânea de dois ficheiros com o mesmo nome em
localizações diferentes.
Abrir um livro
of_openbook(livro)
Se o livro já estiver aberto torna-se o livro activo no Calc.
Devolve: 1 se o livro for aberto
-1 se o livro não for encontrado
-2 se houver outro livro com o mesmo nome já aberto (com fullpath diferente)
-3 se houver algum erro mais esquisito
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 91
Activar um livro já aberto
of_activatebook(livro)
Devolve: TRUE se o livro for activado
FALSE se o livro não estava aberto
Criar um novo livro
of_newbook(livro)
Devolve: 1 se o livro for criado
0 se o livro já existir
-1 se ocorrer um erro de sintaxe
-2 se houver outro livro com o mesmo nome já aberto (com fullpath diferente)
-3 se houver algum erro mais esquisito
É possível criar com um template com:
of_newbook(livro, template)
Fechar um livro
of_closebook(livro, {savemode})
O parâmetro savemode deve ser TRUE para gravar as alterações ou FALSE para não gravar. Caso não seja
indicado o parâmetro savemode, o livro é gravado por defeito.
Se houver modificações no livro, ao se passar FALSE para fechar o livro, é perguntado ao utilizador se ele
pretende salvar as alterações ou não.
Devolve: TRUE se o livro estava aberto e for fechado
FALSE se o ocorrer um erro
Guardar um livro
of_savebook(livro)
Devolve: TRUE se o livro estava aberto e for gravado
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 92
FALSE se ocorrer um erro
Saber quantos livros estão abertos
of_getbookcount()
Devolve: -1 se erro
N número de livros abertos
Saber qual o livro que está activo
of_getactivebook()
Devolve: String vazia se erro
String com o caminho se sucesso
Saber se um determinado livro está activo
of_isbookactive(livro)
Devolve: TRUE se é o livro activo
FALSE se não é o livro activo
Saber se um determinado livro está aberto
of_isbookopen(livro)
Devolve: TRUE se aberto
FALSE se fechado
Saber quantas folhas tem o livro activo
of_getsheetcount()
Devolve: -1 se erro
0 se não existir um livro activo
N número de folhas do livro activo
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 93
Saber qual a folha que está activa
of_getactivesheet()
Devolve: String vazia se houver um erro ou não houver um livro activo
String com o nome da folha do livro activo
Tornar uma folha activa
of_activatesheet(folha)
Devolve: FALSE se houver um erro ou não existir a folha especificada
TRUE se encontrou e activou a folha
Alterar o nome da folha activa
of_renamesheet(novo nome)
Devolve: String vazia se houver um erro
Funções de exportação e importação
Colocar um valor numa célula
of_setcellvalue(“Endereço”, valor)
ou
of_setcellvalue(row, column, valor)
“Endereço” deve ser uma referência tipo “A1”
O valor deve ser uma variável do tipo any
row e column devem ser numéricos
Devolve: -1 se erro
1 se sucesso
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 94
Insere um valor numa célula como texto e muda o formato para texto
of_setcelltext(“Endereço”, valor)
ou
of_setcelltext(row, column, valor)
“Endereço” deve ser uma referência tipo “A1”
O valor deve ser uma variável do tipo any
row e column devem ser numéricos
Devolve: -1 se erro
1 se sucesso
Nota: Ideal para colocar numerações devido à limitação do OpenOffice que ao inserir, por exemplo, 1.1.1.1
colocava 1111 na célula.
Saber o valor de uma célula
of_getcellvalue(“Endereço”)
ou
of_getcellvalue(row, column)
“Endereço” deve ser uma referência tipo “A1”
row e column devem ser numéricos
Devolve: uma variável do tipo any
Inserir uma linha/row no livro
of_insertrow(endereço)
Devolve: -1 se erro
1 se insere com sucesso
Nota: “endereço” deverá ser uma referência tipo “A1”
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 95
Definir um formato de dados específico
of_setformato(endereço,formato)
ou
of_setformato(row,column,formato)
Devolve: -1 se erro
1 se sucesso
Nota: Um exemplo de utilização é of_setformato("E5","##.#########.##0,0###") em que se define um
formato na célula especificada. Neste caso, um formato com 4 casas decimais em que uma será sempre
visível e as outras só se forem números diferentes de zero. Para definir o formato para texto, no formato
deve-se colocar “@”.
“endereço” deverá ser uma referência tipo “A1”
row e column devem ser numéricos
Exportar dados de uma datawindow, datastore ou datawindowchild para o Calc
of_export ( dataobject, sourcecolumns, {startrow, endrow,} targetcolumns, targetrow)
dataobject deve ser uma datawindow, um datastore ou uma datawindowchild
sourcecolumns deve ser um array com os nomes das colunas do dataobject que se pretendem exportar
startrow e endrow devem indicar as rows de inicio e fim da exportação no dataobject (se não forem
indicados todas as rows são passadas)
targetcolumns deve ser um array com as colunas onde colocar os valores no Calc. Podem ser letras ou
números.
targetrow é o número da row no Calc onde começar a colocar os dados
Importar dados do Calc para uma datawindow, datastore ou datawindowchild
of_import ( dataobject, sourcecolumns, startrow, endrow, targetcolumns, targetrow)
dataobject deve ser uma datawindow, um datastore ou uma datawindowchild
sourcecolumns deve ser um array com as colunas de onde ler os valores no Calc. Podem ser letras ou
números.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 96
startrow e endrow devem indicar as rows de inicio e fim da exportação no Calc
targetcolumns deve ser um array com os nomes das colunas do dataobject para onde se pretende importar
targetrow é o número da row no dataobject onde começar a colocar os dados. Caso a row não exista é
criada uma em rowcount + 1 e quantas mais forem necessárias.
Exportar o valor ou o displayvalue das colunas tipo “dddw” ou ddlb”
of_setexportdisplayvalues(TRUE/FALSE) // Default é FALSE
Exportar primeiro os headers dos campos
of_setexportheaders(TRUE/FALSE) // Default é FALSE
Os headers são colocados na primeira linha de exportação.
Não importar linhas com células todas a null
of_setimportemptylines(TRUE/FALSE) // Default é FALSE
Comportamentos impróprios: Os comportamentos impróprios foram enunciados nas notas junto à função em causa. Alguns detalhes de
implementação podem também ser lá encontrados.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 97
ANEXO B – Product Backlog e Sprint
Backlog
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 98
Tarefas
Responsável Sprint Estado Prioridade Horas
Estimadas
OpenOffice Calc
50
Analisar documento "Ligação ao Excel.doc" Ivo Santos 6 Concluído Alta 1
Criar janela de testes que permita invocar funções do objecto de ligação ao Excel e as suas correspondentes para OpenOffice Calc Ivo Santos 6 Concluído Alta 1
Criar objecto de ligação ao OpenOffice Calc Ivo Santos 6 Concluído Alta 1
Implementação de funções básicas de ligação ao OpenOffice Calc (ligar, desligar, activar, etc.) Ivo Santos 6 Concluído Alta 2
Implementação de funções básicas de manipulação de livros (guardar, abrir, fechar, criar novo, etc.) Ivo Santos 6 Concluído Alta 5
Implementação de funções de importação de informação de objectos PB (datawindow, datawindowchild, datastore) Ivo Santos 6 Concluído Alta 6
Implementação de funções de exportação de informação para objectos PB (datawindow, datawindowchild, datastore) Ivo Santos 6 Concluído Alta 5
Implementação de funções de colocação e obtenção de informação no livro. (getcellvalue, setcellvalue, setcelltext, etc.) Ivo Santos 6 Concluído Alta 8
Implementação de funções de definição de formato dos dados. (@ - Texto, ###.#00 - duas casas decimais, etc.) Ivo Santos 6 Concluído Alta 7
Implementação de funções de configuração do ambiente (Maximizar janela, etc) Ivo Santos 6 Concluído Alta 2
Implementação de funções complementares de manipulação de livros e folhas (renamesheet, activatesheet, getbookcount, etc.) Ivo Santos 6 Concluído Alta 4
Implementação de funções diversas (Outras funções) Ivo Santos 6 Concluído Alta 4
Criação de documentação sobre o objecto de ligação ao OpenOffice Calc Ivo Santos 6 Concluído Alta 4
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 99
Criar camada de abstracção para permitir o funcionamento das aplicações Office ou OpenOffice de forma transparente
21
Análise inicial e definição de lógica de criação de objectos de ligação Ivo Santos 6 Concluído Alta 14
Definição e criação da hierarquia para os objectos de ligação (objectos pai para albergar objectos filhos Word/Writer e Excel/Calc) Ivo Santos 6 Concluído Alta 7
Implementação de funções que visam a obtenção coerente de informação relativa à criação, abertura e gravação de modelos, documentos e livros
32
Implementar função que verifica a aplicação associada a uma dada extensão. Ivo Santos 6 Concluído Alta 5
Implementar conjunto de funções que detectam que ferramentas específicas por pacote de produtividade estão instaladas Ivo Santos 6 Concluído Alta 3
Implementar função que preenche uma dropdown com as extensões compatíveis com o que está instalado Ivo Santos 6 Concluído Alta 2
Guardar a preferência de extensão de documento da dropdown por aplicação. Ivo Santos 6 Concluído Alta 2
Implementar função que devolve a preferência de extensão de documento da dropdown. Ivo Santos 6 Concluído Alta 0,5
Implementar função que devolve a preferência para extensão de modelo tendo como base a extensão de documento da dropdown Ivo Santos 6 Concluído Alta 0,5
Implementar função que devolve as extensões de documentos possíveis para abertura ordenadas pela Ivo Santos 6 Concluído Alta 2
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 100
preferência da dropdown, de acordo com o que está instalado
Implementar função que devolve as extensões de modelo possíveis para abertura ordenadas pela preferência da extensão de modelo, de acordo com o que está instalado Ivo Santos 6 Concluído Alta 2
Implementar função que devolve as extensões de documento possíveis de guardar com base na extensão de modelo que recebe, de acordo com o que está instalado Ivo Santos 6 Concluído Alta 2
Implementar função que devolve as extensões de documento possíveis de guardar, de acordo com o que está instalado Ivo Santos 6 Concluído Alta 2
Implementar função que devolve as extensões de modelo possíveis de guardar ordenadas pela preferência de modelo, de acordo com o que está instalado Ivo Santos 6 Concluído Alta 2
Implementar funções que usam a of_getfileopenname e alimentam automaticamente as extensões possíveis para abertura (documentos ou modelos), usando as novas funções acima. Ivo Santos 6 Concluído Alta 2
Implementar funções que usam a of_getfilesavename e alimentam automaticamente as extensões possíveis para guardar (documentos ou modelos), usando as novas funções acima. Ivo Santos 6 Concluído Alta 2
Implementar funções equivalentes para o Excel e Calc Ivo Santos 6 Concluído Alta 4
Implementar função que verifica se estão instalados pacotes de produtividade compatíveis com a extensão de modelo .dotx (para proteger a limitação de abrir/guardar do MS Office Word 2003 e anteriores com o pacote de compatibilidade) Ivo Santos 6 Concluído Alta 1
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 101
Continuar camada de abstracção para permitir o funcionamento das aplicações Office ou OpenOffice de forma transparente
28
Alteração da função de criação do objecto de ligação a documentos para suportar as alterações realizadas (f_setoledoc) Ivo Santos 6 Concluído Alta 7
Implementação da função que visa a criação do objecto de ligação ao Excel/Calc. Ivo Santos 6 Concluído Alta 7
Implementação da função de criação do objecto de ligação adequado à informação de modelo e documento passada por argumento Ivo Santos 6 Concluído Alta 14
Mecanismo de obtenção de informação de associação de pacotes de produtividade a ficheiro do registo
14
Analisar função of_getaplicationpath do objecto afc_n_cst_registry Ivo Santos 7 Concluído Alta 2
Implementar a alteração dinâmica da informação presente na tabpage de Aplicações para reflectir o estado actual da instalação dos pacotes de produtividade Ivo Santos 7 Concluído Alta 12
Criar possibilidade de guardar documentos/livros em modo de compatibilidade
7
Alterar tabpage de Aplicações para reflectir essa necessidade Ivo Santos 7 Concluído Alta 1
Criação de mecanismo de gravação dos documentos/livros(docx, odt, xlsx, ods) em modo de compatibilidade Ivo Santos 7 Concluído Alta 6
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 102
Mecanismo de guardar em docx em Office’s antigos que tenham o Pack de compatibilidade com 2007 instalado
28
Investigação para obtenção do SaveFormat dinâmico resultante da instalação do FileConverter para Office’s anteriores ao 2007 Ivo Santos 7 Concluído Alta 14
Implementação da solução no objecto de ligação ao Word (filho) Ivo Santos 7 Concluído Alta 14
Reformulação Colocar Marca com dispatcher’s para resolver problema de colocação de marcadores em tabelas, caixas de texto e molduras no OpenOffice Writer
Ivo Santos 7 Concluído Alta 14
Criação de extensões para OpenOffice Writer que facilitam a visibilidade de marcadores em modelos Word (.dot,.dotx) convertidos para .ott. Essencial para os utilizadores de Office passar a usar OpenOffice com o mínimo impacto.
35
Definição e implementação do algoritmo que detecte a posição dos marcadores presentes nos modelos convertidos e coloque identificadores laterais visualmente evidentes com a possibilidade de serem ocultáveis. Ivo Santos 7 Concluído Alta 21
Definição e implementação do algoritmo que detecte a posição dos marcadores presentes nos modelos convertidos e elimine os identificadores laterais anteriormente colocados pela Ivo Santos 7 Concluído Alta 14
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 103
extensão acima.
Criação de Webservice que, para o modelo associado a uma dada acção, devolva informação sobre as marcas que estão presentes nesse modelo e se estão na BD
39
Criação do Webservice. Ivo Santos 7 Concluído Alta 7
Implementação de função que devolve todos os marcadores presentes no modelo. Ivo Santos 7 Concluído Alta 7
Implementação de função que devolve todos os marcadores de uma acção (ERP) (grlomacc) e todos os marcadores do modelo (sem repetições) Ivo Santos 7 Concluído Alta 21
Documentação e testes. Ivo Santos 7 Concluído Alta 4
Validar a existência dos marcadores definidos como obrigatórios para cada acção nos modelos definidos para essa mesma acção
14
Validar marcadores num modelo (se estão os obrigatórios ou não) argumentos(ficheiro, acção) Ivo Santos 7 Concluído Alta 7
Validar marcadores num modelo (se estão os obrigatórios ou não) argumentos(ficheiro,marcadores) Ivo Santos 7 Concluído Alta 7
Criação de Webservice que recebe, acção ou para um path de modelo, e um array de marcadores. Deve devolver os marcadores, do array que não estão presentes no modelo
14
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 104
Implementação de função que recebe os critérios de pesquisa do Webservice. (acção,arraymarcadores) ou (pathmodelo,arraymarcadores) e devolve todos os marcadores do array não presentes no modelo. Ivo Santos 8 Concluído Alta 14
Criação de mecanismo de sincronização que permita registar na Base de dados do ERP, os marcadores presentes em cada modelo de documento.
Ivo Santos 8 Concluído Alta 35
Criação de função na janela de acções que verifica se os marcadores obrigatórios definidos para uma dada acção estão presentes no modelo definido para essa mesma acção. Ivo Santos 8 Concluído Alta 14
Uniformizar sistemas de actualização de marcadores (Sistema do ACE e sistema do ERP)
Ivo Santos 8 Suspenso Alta 90
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 105
ANEXO C – Documentação Webservice
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 106
ACE Consultas Dinâmicas
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 107
Consultas Dinâmicas
Introdução
Objectivo
O objectivo deste teste é validar o funcionamento das consultas dinâmicas do ACE (Agente de Comunicações Externas).
Âmbito
O âmbito deste teste incide sobre o funcionamento das consultas dinâmicas a funcionar na aplicação ACE.
Visão global
Este documento está organizado em duas partes:
1ª Parte – Identificação do autor e do sistema onde o mesmo está a ser realizado.
2ª Parte – Passos e verificações que devem ser percorridos pelo utilizador, preenchendo o resultado dos
mesmos.
Execução do teste
Data: 03/08/2009
Responsável: Ivo Santos
Computador e configuração: Quad 2.6Ghz 4Gb ram
Base de dados: ace_gondomar
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 108
Scripts de teste
São realizados vários testes sobre a mesma área visto que é possível fazer diferentes pesquisas sobre ela.
Podem ser feitas diversas pesquisas sobre GRLMRC através da combinação dos diferentes critérios de
pesquisa. Neste documento são apresentadas as três pesquisas mais frequentes.
A chave é obrigatória para cada pesquisa.
1- Saber os marcadores não obrigatórios e que estejam na base de dados:
<filter name='CHAVECACC' oper='=' >7</filter>
<filter name='REQUIREDOMACC' oper='=' >0</filter>
<filter name='MARCADORBD' oper='=' >1</filter>
2- Saber os marcadores obrigatórios e se estão presentes no modelo ou não:
<filter name='CHAVECACC' oper='=' >7</filter>
<filter name='REQUIREDOMACC' oper='=' >1</filter>
3- Saber os marcadores que estão no modelo e não são iguais a nenhum da base de dados:
<filter name='CHAVECACC' oper='=' >7</filter>
<filter name='MARCADORBD' oper='=' >2</filter>
<filter name='MARCADORMODELO' oper='=' >1</filter>
Nota: 1 significa sim, 2 significa não.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 109
Área de pesquisa de marcadores obrigatórios em modelo GRLMRC
Pedido (1)
<?xml version='1.0' encoding='ISO-8859-1'?><requests id='2'><fields aplic='GRLMRC' ><filter
name='CHAVECACC' oper='=' >7</filter>
<filter name='REQUIREDOMACC' oper='=' >0</filter>
<filter name='MARCADORBD' oper='=' >1</filter></fields></requests>
Resposta (1)
<?xml version="1.0" encoding="UTF-16LE" standalone="no"?>
<requests><GRLMRC><DESIGFMARC><![CDATA[Chave
Fabricante]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></REQUIREDOMACC><DESIGCACC><![CDA
TA[Pedido de Registo de Nova Máquina de
Diversão]]></DESIGCACC><CODCAPLI><![CDATA[MDV]]></CODCAPLI><CHAVECACC><![CDATA[7]]></CHAVE
CACC><CODIGOFMARC><![CDATA[MDVCHAVEFAB]]></CODIGOFMARC><CHAVEFMARC><![CDATA[38790]]>
</CHAVEFMARC><MARCADORMODELO><![CDATA[2]]></MARCADORMODELO><MARCADORBD><![CDATA[
1]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[Registo de Máquina de
Diversão.dot]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[\\srvwst02\Documentos_estrela\MDV -
Documentos]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[326]]></MODDEFFMTDA></GRLMRC></re
quests>
Considerações (1)
Nada a apontar.
Pedido (2)
<?xml version='1.0' encoding='ISO-8859-1'?><requests id='2'><fields aplic='GRLMRC' ><filter
name='CHAVECACC' oper='=' >7</filter>
<filter name='REQUIREDOMACC' oper='=' >1</filter></fields></requests>
Resposta (2)
<?xml version="1.0" encoding="UTF-16LE" standalone="no"?>
<requests><GRLMRC><DESIGFMARC><![CDATA[Nº Entidade
(Prop.)]]></DESIGFMARC><REQUIREDOMACC><![CDATA[1]]></REQUIREDOMACC><DESIGCACC><![CDATA[P
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 110
edido de Registo de Nova Máquina de
Diversão]]></DESIGCACC><CODCAPLI><![CDATA[MDV]]></CODCAPLI><CHAVECACC><![CDATA[7]]></CHAVE
CACC><CODIGOFMARC><![CDATA[MDVNUMFENTI]]></CODIGOFMARC><CHAVEFMARC><![CDATA[38757]]>
</CHAVEFMARC><MARCADORMODELO><![CDATA[2]]></MARCADORMODELO><MARCADORBD><![CDATA[
1]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[Registo de Máquina de
Diversão.dot]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[\\srvwst02\Documentos_estrela\MDV -
Documentos]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[326]]></MODDEFFMTDA></GRLMRC><GR
LMRC><DESIGFMARC><![CDATA[Chave Tipo de
Jogo]]></DESIGFMARC><REQUIREDOMACC><![CDATA[1]]></REQUIREDOMACC><DESIGCACC><![CDATA[Ped
ido de Registo de Nova Máquina de
Diversão]]></DESIGCACC><CODCAPLI><![CDATA[MDV]]></CODCAPLI><CHAVECACC><![CDATA[7]]></CHAVE
CACC><CODIGOFMARC><![CDATA[MDVCHAVETPJG]]></CODIGOFMARC><CHAVEFMARC><![CDATA[38818]]
></CHAVEFMARC><MARCADORMODELO><![CDATA[2]]></MARCADORMODELO><MARCADORBD><![CDATA
[1]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[Registo de Máquina de
Diversão.dot]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[\\srvwst02\Documentos_estrela\MDV -
Documentos]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[326]]></MODDEFFMTDA></GRLMRC><GR
LMRC><DESIGFMARC><![CDATA[Nº de
Fabrico]]></DESIGFMARC><REQUIREDOMACC><![CDATA[1]]></REQUIREDOMACC><DESIGCACC><![CDATA[
Pedido de Registo de Nova Máquina de
Diversão]]></DESIGCACC><CODCAPLI><![CDATA[MDV]]></CODCAPLI><CHAVECACC><![CDATA[7]]></CHAVE
CACC><CODIGOFMARC><![CDATA[TAX2009]]></CODIGOFMARC><CHAVEFMARC><![CDATA[38759]]></CHA
VEFMARC><MARCADORMODELO><![CDATA[1]]></MARCADORMODELO><MARCADORBD><![CDATA[1]]></
MARCADORBD><NOMEFICHFMTDA><![CDATA[Registo de Máquina de
Diversão.dot]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[\\srvwst02\Documentos_estrela\MDV -
Documentos]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[326]]></MODDEFFMTDA></GRLMRC><GR
LMRC><DESIGFMARC><![CDATA[Ano de
Fabrico]]></DESIGFMARC><REQUIREDOMACC><![CDATA[1]]></REQUIREDOMACC><DESIGCACC><![CDATA[
Pedido de Registo de Nova Máquina de
Diversão]]></DESIGCACC><CODCAPLI><![CDATA[MDV]]></CODCAPLI><CHAVECACC><![CDATA[7]]></CHAVE
CACC><CODIGOFMARC><![CDATA[TAX2010]]></CODIGOFMARC><CHAVEFMARC><![CDATA[38761]]></CHA
VEFMARC><MARCADORMODELO><![CDATA[2]]></MARCADORMODELO><MARCADORBD><![CDATA[1]]></
MARCADORBD><NOMEFICHFMTDA><![CDATA[Registo de Máquina de
Diversão.dot]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[\\srvwst02\Documentos_estrela\MDV -
Documentos]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[326]]></MODDEFFMTDA></GRLMRC><GR
LMRC><DESIGFMARC><![CDATA[Chave
Modelo]]></DESIGFMARC><REQUIREDOMACC><![CDATA[1]]></REQUIREDOMACC><DESIGCACC><![CDATA[
Pedido de Registo de Nova Máquina de
Diversão]]></DESIGCACC><CODCAPLI><![CDATA[MDV]]></CODCAPLI><CHAVECACC><![CDATA[7]]></CHAVE
CACC><CODIGOFMARC><![CDATA[MDVCHAVEMODELO]]></CODIGOFMARC><CHAVEFMARC><![CDATA[388
08]]></CHAVEFMARC><MARCADORMODELO><![CDATA[2]]></MARCADORMODELO><MARCADORBD><![CD
ATA[1]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[Registo de Máquina de
Diversão.dot]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[\\srvwst02\Documentos_estrela\MDV -
Documentos]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[326]]></MODDEFFMTDA></GRLMRC><GR
LMRC><DESIGFMARC><![CDATA[Chave
MArca]]></DESIGFMARC><REQUIREDOMACC><![CDATA[1]]></REQUIREDOMACC><DESIGCACC><![CDATA[P
edido de Registo de Nova Máquina de
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 111
Diversão]]></DESIGCACC><CODCAPLI><![CDATA[MDV]]></CODCAPLI><CHAVECACC><![CDATA[7]]></CHAVE
CACC><CODIGOFMARC><![CDATA[MDVCHAVEMARCA]]></CODIGOFMARC><CHAVEFMARC><![CDATA[3880
6]]></CHAVEFMARC><MARCADORMODELO><![CDATA[2]]></MARCADORMODELO><MARCADORBD><![CDA
TA[1]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[Registo de Máquina de
Diversão.dot]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[\\srvwst02\Documentos_estrela\MDV -
Documentos]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[326]]></MODDEFFMTDA></GRLMRC></re
quests>
Considerações (2)
Nada a apontar.
Pedido (3)
<?xml version='1.0' encoding='ISO-8859-1'?><requests id='2'><fields aplic='GRLMRC' ><filter
name='CHAVECACC' oper='=' >7</filter>
<filter name='MARCADORBD' oper='=' >2</filter>
<filter name='MARCADORMODELO' oper='=' >1</filter></fields></requests>
Resposta (3)
<?xml version="1.0" encoding="UTF-16LE" standalone="no"?>
<requests><GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></RE
QUIREDOMACC><DESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVECA
CC><![CDATA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[TAX20_R1]]></CODIGOFMARC><CHAVEFMAR
C><![CDATA[0]]></CHAVEFMARC><MARCADORMODELO><![CDATA[1]]></MARCADORMODELO><MARCAD
ORBD><![CDATA[2]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDOCUM
CAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA></GRLMRC><G
RLMRC><DESIGFMARC><![CDATA[]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></REQUIREDOMAC
C><DESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVECACC><![CDATA[
0]]></CHAVECACC><CODIGOFMARC><![CDATA[TAX21_R1]]></CODIGOFMARC><CHAVEFMARC><![CDATA[0
]]></CHAVEFMARC><MARCADORMODELO><![CDATA[1]]></MARCADORMODELO><MARCADORBD><![CDAT
A[2]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDAT
A[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA></GRLMRC><GRLMRC><DESI
GFMARC><![CDATA[]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></REQUIREDOMACC><DESIGCAC
C><![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVECACC><![CDATA[0]]></CHAVE
CACC><CODIGOFMARC><![CDATA[TAX22_R1]]></CODIGOFMARC><CHAVEFMARC><![CDATA[0]]></CHAVEF
MARC><MARCADORMODELO><![CDATA[1]]></MARCADORMODELO><MARCADORBD><![CDATA[2]]></MA
RCADORBD><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRD
OCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA></GRLMRC><GRLMRC><DESIGFMARC><![
CDATA[]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></REQUIREDOMACC><DESIGCACC><![CDATA[
]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVECACC><![CDATA[0]]></CHAVECACC><CODI
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 112
GOFMARC><![CDATA[TAX24_R1]]></CODIGOFMARC><CHAVEFMARC><![CDATA[0]]></CHAVEFMARC><MAR
CADORMODELO><![CDATA[1]]></MARCADORMODELO><MARCADORBD><![CDATA[2]]></MARCADORBD><
NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI>
<MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA></GRLMRC><GRLMRC><DESIGFMARC><![CDATA[]]></
DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></REQUIREDOMACC><DESIGCACC><![CDATA[]]></DESIGC
ACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVECACC><![CDATA[0]]></CHAVECACC><CODIGOFMARC><
![CDATA[TAX25_R1]]></CODIGOFMARC><CHAVEFMARC><![CDATA[0]]></CHAVEFMARC><MARCADORMOD
ELO><![CDATA[1]]></MARCADORMODELO><MARCADORBD><![CDATA[2]]></MARCADORBD><NOMEFICHF
MTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFF
MTDA><![CDATA[0]]></MODDEFFMTDA></GRLMRC><GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFMAR
C><REQUIREDOMACC><![CDATA[0]]></REQUIREDOMACC><DESIGCACC><![CDATA[]]></DESIGCACC><CODC
APLI><![CDATA[]]></CODCAPLI><CHAVECACC><![CDATA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[TA
X26_R1]]></CODIGOFMARC><CHAVEFMARC><![CDATA[0]]></CHAVEFMARC><MARCADORMODELO><![CDA
TA[1]]></MARCADORMODELO><MARCADORBD><![CDATA[2]]></MARCADORBD><NOMEFICHFMTDA><![CD
ATA[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CD
ATA[0]]></MODDEFFMTDA></GRLMRC><GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFMARC><REQUIRE
DOMACC><![CDATA[0]]></REQUIREDOMACC><DESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![CDA
TA[]]></CODCAPLI><CHAVECACC><![CDATA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[TAX27_R1]]></
CODIGOFMARC><CHAVEFMARC><![CDATA[0]]></CHAVEFMARC><MARCADORMODELO><![CDATA[1]]></M
ARCADORMODELO><MARCADORBD><![CDATA[2]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[]]></N
OMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></
MODDEFFMTDA></GRLMRC><GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFMARC><REQUIREDOMACC><
![CDATA[0]]></REQUIREDOMACC><DESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]></CO
DCAPLI><CHAVECACC><![CDATA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[TAX32_R1]]></CODIGOFM
ARC><CHAVEFMARC><![CDATA[0]]></CHAVEFMARC><MARCADORMODELO><![CDATA[1]]></MARCADORM
ODELO><MARCADORBD><![CDATA[2]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHF
MTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MODDEFF
MTDA></GRLMRC><GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0
]]></REQUIREDOMACC><DESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAPLI><C
HAVECACC><![CDATA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[TAX33_R1]]></CODIGOFMARC><CHA
VEFMARC><![CDATA[0]]></CHAVEFMARC><MARCADORMODELO><![CDATA[1]]></MARCADORMODELO><
MARCADORBD><![CDATA[2]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><DI
RDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA></GR
LMRC><GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></REQUI
REDOMACC><DESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVECACC>
<![CDATA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[TAX34_R1]]></CODIGOFMARC><CHAVEFMARC><
![CDATA[0]]></CHAVEFMARC><MARCADORMODELO><![CDATA[1]]></MARCADORMODELO><MARCADORB
D><![CDATA[2]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDOCUMCAP
LI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA></GRLMRC><GRL
MRC><DESIGFMARC><![CDATA[]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></REQUIREDOMACC>
<DESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVECACC><![CDATA[0]
]></CHAVECACC><CODIGOFMARC><![CDATA[TAX35_R1]]></CODIGOFMARC><CHAVEFMARC><![CDATA[0]]
></CHAVEFMARC><MARCADORMODELO><![CDATA[1]]></MARCADORMODELO><MARCADORBD><![CDATA
[2]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA
[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA></GRLMRC><GRLMRC><DESIG
FMARC><![CDATA[]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></REQUIREDOMACC><DESIGCACC
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 113
><![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVECACC><![CDATA[0]]></CHAVEC
ACC><CODIGOFMARC><![CDATA[TAX36_R1]]></CODIGOFMARC><CHAVEFMARC><![CDATA[0]]></CHAVEF
MARC><MARCADORMODELO><![CDATA[1]]></MARCADORMODELO><MARCADORBD><![CDATA[2]]></MA
RCADORBD><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRD
OCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA></GRLMRC><GRLMRC><DESIGFMARC><![
CDATA[]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></REQUIREDOMACC><DESIGCACC><![CDATA[
]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVECACC><![CDATA[0]]></CHAVECACC><CODI
GOFMARC><![CDATA[TAX37_R1]]></CODIGOFMARC><CHAVEFMARC><![CDATA[0]]></CHAVEFMARC><MAR
CADORMODELO><![CDATA[1]]></MARCADORMODELO><MARCADORBD><![CDATA[2]]></MARCADORBD><
NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI>
<MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA></GRLMRC><GRLMRC><DESIGFMARC><![CDATA[]]></
DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></REQUIREDOMACC><DESIGCACC><![CDATA[]]></DESIGC
ACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVECACC><![CDATA[0]]></CHAVECACC><CODIGOFMARC><
![CDATA[TAX41_R1]]></CODIGOFMARC><CHAVEFMARC><![CDATA[0]]></CHAVEFMARC><MARCADORMOD
ELO><![CDATA[1]]></MARCADORMODELO><MARCADORBD><![CDATA[2]]></MARCADORBD><NOMEFICHF
MTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFF
MTDA><![CDATA[0]]></MODDEFFMTDA></GRLMRC><GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFMAR
C><REQUIREDOMACC><![CDATA[0]]></REQUIREDOMACC><DESIGCACC><![CDATA[]]></DESIGCACC><CODC
APLI><![CDATA[]]></CODCAPLI><CHAVECACC><![CDATA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[TA
X38_R1]]></CODIGOFMARC><CHAVEFMARC><![CDATA[0]]></CHAVEFMARC><MARCADORMODELO><![CDA
TA[1]]></MARCADORMODELO><MARCADORBD><![CDATA[2]]></MARCADORBD><NOMEFICHFMTDA><![CD
ATA[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CD
ATA[0]]></MODDEFFMTDA></GRLMRC><GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFMARC><REQUIRE
DOMACC><![CDATA[0]]></REQUIREDOMACC><DESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![CDA
TA[]]></CODCAPLI><CHAVECACC><![CDATA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[TAX43_R1]]></
CODIGOFMARC><CHAVEFMARC><![CDATA[0]]></CHAVEFMARC><MARCADORMODELO><![CDATA[1]]></M
ARCADORMODELO><MARCADORBD><![CDATA[2]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[]]></N
OMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></
MODDEFFMTDA></GRLMRC><GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFMARC><REQUIREDOMACC><
![CDATA[0]]></REQUIREDOMACC><DESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]></CO
DCAPLI><CHAVECACC><![CDATA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[TAX39_R1]]></CODIGOFM
ARC><CHAVEFMARC><![CDATA[0]]></CHAVEFMARC><MARCADORMODELO><![CDATA[1]]></MARCADORM
ODELO><MARCADORBD><![CDATA[2]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHF
MTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MODDEFF
MTDA></GRLMRC><GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0
]]></REQUIREDOMACC><DESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAPLI><C
HAVECACC><![CDATA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[TAX40_R1]]></CODIGOFMARC><CHA
VEFMARC><![CDATA[0]]></CHAVEFMARC><MARCADORMODELO><![CDATA[1]]></MARCADORMODELO><
MARCADORBD><![CDATA[2]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><DI
RDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA></GR
LMRC><GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></REQUI
REDOMACC><DESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVECACC>
<![CDATA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[TAX2001_R1]]></CODIGOFMARC><CHAVEFMARC
><![CDATA[0]]></CHAVEFMARC><MARCADORMODELO><![CDATA[1]]></MARCADORMODELO><MARCADO
RBD><![CDATA[2]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDOCUMC
APLI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA></GRLMRC><G
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 114
RLMRC><DESIGFMARC><![CDATA[]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></REQUIREDOMAC
C><DESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVECACC><![CDATA[
0]]></CHAVECACC><CODIGOFMARC><![CDATA[TAX2002_R1]]></CODIGOFMARC><CHAVEFMARC><![CDATA
[0]]></CHAVEFMARC><MARCADORMODELO><![CDATA[1]]></MARCADORMODELO><MARCADORBD><![CD
ATA[2]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CD
ATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA></GRLMRC><GRLMRC><DE
SIGFMARC><![CDATA[]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></REQUIREDOMACC><DESIGCA
CC><![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVECACC><![CDATA[0]]></CHAV
ECACC><CODIGOFMARC><![CDATA[TAX2003_R1]]></CODIGOFMARC><CHAVEFMARC><![CDATA[0]]></CHA
VEFMARC><MARCADORMODELO><![CDATA[1]]></MARCADORMODELO><MARCADORBD><![CDATA[2]]></
MARCADORBD><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]></D
IRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA></GRLMRC><GRLMRC><DESIGFMARC
><![CDATA[]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></REQUIREDOMACC><DESIGCACC><![CDA
TA[]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVECACC><![CDATA[0]]></CHAVECACC><C
ODIGOFMARC><![CDATA[TAX2004_R1]]></CODIGOFMARC><CHAVEFMARC><![CDATA[0]]></CHAVEFMARC
><MARCADORMODELO><![CDATA[1]]></MARCADORMODELO><MARCADORBD><![CDATA[2]]></MARCADO
RBD><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUM
CAPLI><MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA></GRLMRC><GRLMRC><DESIGFMARC><![CDATA
[]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></REQUIREDOMACC><DESIGCACC><![CDATA[]]></D
ESIGCACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVECACC><![CDATA[0]]></CHAVECACC><CODIGOFM
ARC><![CDATA[TAX2005_R1]]></CODIGOFMARC><CHAVEFMARC><![CDATA[0]]></CHAVEFMARC><MARCA
DORMODELO><![CDATA[1]]></MARCADORMODELO><MARCADORBD><![CDATA[2]]></MARCADORBD><NO
MEFICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI><M
ODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA></GRLMRC><GRLMRC><DESIGFMARC><![CDATA[]]></DESI
GFMARC><REQUIREDOMACC><![CDATA[0]]></REQUIREDOMACC><DESIGCACC><![CDATA[]]></DESIGCACC>
<CODCAPLI><![CDATA[]]></CODCAPLI><CHAVECACC><![CDATA[0]]></CHAVECACC><CODIGOFMARC><![CD
ATA[TAX2006_R1]]></CODIGOFMARC><CHAVEFMARC><![CDATA[0]]></CHAVEFMARC><MARCADORMODEL
O><![CDATA[1]]></MARCADORMODELO><MARCADORBD><![CDATA[2]]></MARCADORBD><NOMEFICHFMT
DA><![CDATA[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMT
DA><![CDATA[0]]></MODDEFFMTDA></GRLMRC><GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFMARC><
REQUIREDOMACC><![CDATA[0]]></REQUIREDOMACC><DESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI
><![CDATA[]]></CODCAPLI><CHAVECACC><![CDATA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[TAX200
7_R1]]></CODIGOFMARC><CHAVEFMARC><![CDATA[0]]></CHAVEFMARC><MARCADORMODELO><![CDATA
[1]]></MARCADORMODELO><MARCADORBD><![CDATA[2]]></MARCADORBD><NOMEFICHFMTDA><![CDAT
A[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDAT
A[0]]></MODDEFFMTDA></GRLMRC><GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFMARC><REQUIREDO
MACC><![CDATA[0]]></REQUIREDOMACC><DESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[
]]></CODCAPLI><CHAVECACC><![CDATA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[TAX2008_R1]]></C
ODIGOFMARC><CHAVEFMARC><![CDATA[0]]></CHAVEFMARC><MARCADORMODELO><![CDATA[1]]></MA
RCADORMODELO><MARCADORBD><![CDATA[2]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[]]></NO
MEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></M
ODDEFFMTDA></GRLMRC><GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFMARC><REQUIREDOMACC><![
CDATA[0]]></REQUIREDOMACC><DESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODC
APLI><CHAVECACC><![CDATA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[TAX2009_R1]]></CODIGOFM
ARC><CHAVEFMARC><![CDATA[0]]></CHAVEFMARC><MARCADORMODELO><![CDATA[1]]></MARCADORM
ODELO><MARCADORBD><![CDATA[2]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHF
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 115
MTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MODDEFF
MTDA></GRLMRC><GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0
]]></REQUIREDOMACC><DESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAPLI><C
HAVECACC><![CDATA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[TAX2010_R1]]></CODIGOFMARC><C
HAVEFMARC><![CDATA[0]]></CHAVEFMARC><MARCADORMODELO><![CDATA[1]]></MARCADORMODELO>
<MARCADORBD><![CDATA[2]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><
DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA></
GRLMRC><GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></REQ
UIREDOMACC><DESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVECAC
C><![CDATA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[TAX2011_R1]]></CODIGOFMARC><CHAVEFMA
RC><![CDATA[0]]></CHAVEFMARC><MARCADORMODELO><![CDATA[1]]></MARCADORMODELO><MARCA
DORBD><![CDATA[2]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDOCU
MCAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA></GRLMRC>
<GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></REQUIREDOM
ACC><DESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVECACC><![CDA
TA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[TAX2012_R1]]></CODIGOFMARC><CHAVEFMARC><![CD
ATA[0]]></CHAVEFMARC><MARCADORMODELO><![CDATA[1]]></MARCADORMODELO><MARCADORBD><!
[CDATA[2]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><!
[CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA></GRLMRC><GRLMRC>
<DESIGFMARC><![CDATA[]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></REQUIREDOMACC><DESI
GCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVECACC><![CDATA[0]]></C
HAVECACC><CODIGOFMARC><![CDATA[TAX2013_R1]]></CODIGOFMARC><CHAVEFMARC><![CDATA[0]]></
CHAVEFMARC><MARCADORMODELO><![CDATA[1]]></MARCADORMODELO><MARCADORBD><![CDATA[2]]
></MARCADORBD><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]>
</DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA></GRLMRC><GRLMRC><DESIGFM
ARC><![CDATA[]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></REQUIREDOMACC><DESIGCACC><![
CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVECACC><![CDATA[0]]></CHAVECACC
><CODIGOFMARC><![CDATA[TAX2020_R1]]></CODIGOFMARC><CHAVEFMARC><![CDATA[0]]></CHAVEFM
ARC><MARCADORMODELO><![CDATA[1]]></MARCADORMODELO><MARCADORBD><![CDATA[2]]></MARC
ADORBD><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRDO
CUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA></GRLMRC><GRLMRC><DESIGFMARC><![C
DATA[]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></REQUIREDOMACC><DESIGCACC><![CDATA[]]
></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVECACC><![CDATA[0]]></CHAVECACC><CODIG
OFMARC><![CDATA[TAX2021_R1]]></CODIGOFMARC><CHAVEFMARC><![CDATA[0]]></CHAVEFMARC><MA
RCADORMODELO><![CDATA[1]]></MARCADORMODELO><MARCADORBD><![CDATA[2]]></MARCADORBD>
<NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI
><MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA></GRLMRC><GRLMRC><DESIGFMARC><![CDATA[]]></
DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></REQUIREDOMACC><DESIGCACC><![CDATA[]]></DESIGC
ACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVECACC><![CDATA[0]]></CHAVECACC><CODIGOFMARC><
![CDATA[TAX2022_R1]]></CODIGOFMARC><CHAVEFMARC><![CDATA[0]]></CHAVEFMARC><MARCADORM
ODELO><![CDATA[1]]></MARCADORMODELO><MARCADORBD><![CDATA[2]]></MARCADORBD><NOMEFIC
HFMTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODDE
FFMTDA><![CDATA[0]]></MODDEFFMTDA></GRLMRC><GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFM
ARC><REQUIREDOMACC><![CDATA[0]]></REQUIREDOMACC><DESIGCACC><![CDATA[]]></DESIGCACC><CO
DCAPLI><![CDATA[]]></CODCAPLI><CHAVECACC><![CDATA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[
TAX2023_R1]]></CODIGOFMARC><CHAVEFMARC><![CDATA[0]]></CHAVEFMARC><MARCADORMODELO><!
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 116
[CDATA[1]]></MARCADORMODELO><MARCADORBD><![CDATA[2]]></MARCADORBD><NOMEFICHFMTDA>
<![CDATA[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><
![CDATA[0]]></MODDEFFMTDA></GRLMRC><GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFMARC><REQ
UIREDOMACC><![CDATA[0]]></REQUIREDOMACC><DESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![
CDATA[]]></CODCAPLI><CHAVECACC><![CDATA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[TAX2024_R
1]]></CODIGOFMARC><CHAVEFMARC><![CDATA[0]]></CHAVEFMARC><MARCADORMODELO><![CDATA[1]]
></MARCADORMODELO><MARCADORBD><![CDATA[2]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[]
]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]
]></MODDEFFMTDA></GRLMRC><GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFMARC><REQUIREDOMA
CC><![CDATA[0]]></REQUIREDOMACC><DESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]><
/CODCAPLI><CHAVECACC><![CDATA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[TAX2025_R1]]></CODI
GOFMARC><CHAVEFMARC><![CDATA[0]]></CHAVEFMARC><MARCADORMODELO><![CDATA[1]]></MARCA
DORMODELO><MARCADORBD><![CDATA[2]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[]]></NOME
FICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MOD
DEFFMTDA></GRLMRC><GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFMARC><REQUIREDOMACC><![CD
ATA[0]]></REQUIREDOMACC><DESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAP
LI><CHAVECACC><![CDATA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[TAX2030_R1]]></CODIGOFMAR
C><CHAVEFMARC><![CDATA[0]]></CHAVEFMARC><MARCADORMODELO><![CDATA[1]]></MARCADORMOD
ELO><MARCADORBD><![CDATA[2]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTD
A><DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA
></GRLMRC><GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></R
EQUIREDOMACC><DESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVEC
ACC><![CDATA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[TAX2031_R1]]></CODIGOFMARC><CHAVEF
MARC><![CDATA[0]]></CHAVEFMARC><MARCADORMODELO><![CDATA[1]]></MARCADORMODELO><MAR
CADORBD><![CDATA[2]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDO
CUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA></GRLMR
C><GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></REQUIREDO
MACC><DESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVECACC><![CD
ATA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[TAX2040_R1]]></CODIGOFMARC><CHAVEFMARC><![C
DATA[0]]></CHAVEFMARC><MARCADORMODELO><![CDATA[1]]></MARCADORMODELO><MARCADORBD>
<![CDATA[2]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI>
<![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA></GRLMRC><GRLMR
C><DESIGFMARC><![CDATA[]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></REQUIREDOMACC><D
ESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVECACC><![CDATA[0]]><
/CHAVECACC><CODIGOFMARC><![CDATA[TAX2041_R1]]></CODIGOFMARC><CHAVEFMARC><![CDATA[0]]>
</CHAVEFMARC><MARCADORMODELO><![CDATA[1]]></MARCADORMODELO><MARCADORBD><![CDATA[
2]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[
]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA></GRLMRC><GRLMRC><DESIGF
MARC><![CDATA[]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></REQUIREDOMACC><DESIGCACC>
<![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVECACC><![CDATA[0]]></CHAVECA
CC><CODIGOFMARC><![CDATA[TAX2032_R2]]></CODIGOFMARC><CHAVEFMARC><![CDATA[0]]></CHAVEF
MARC><MARCADORMODELO><![CDATA[1]]></MARCADORMODELO><MARCADORBD><![CDATA[2]]></MA
RCADORBD><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRD
OCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA></GRLMRC><GRLMRC><DESIGFMARC><![
CDATA[]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></REQUIREDOMACC><DESIGCACC><![CDATA[
]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVECACC><![CDATA[0]]></CHAVECACC><CODI
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 117
GOFMARC><![CDATA[TAX2033_R1]]></CODIGOFMARC><CHAVEFMARC><![CDATA[0]]></CHAVEFMARC><M
ARCADORMODELO><![CDATA[1]]></MARCADORMODELO><MARCADORBD><![CDATA[2]]></MARCADORBD
><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAP
LI><MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA></GRLMRC><GRLMRC><DESIGFMARC><![CDATA[]]>
</DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></REQUIREDOMACC><DESIGCACC><![CDATA[]]></DESIG
CACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVECACC><![CDATA[0]]></CHAVECACC><CODIGOFMARC>
<![CDATA[TAX2034_R1]]></CODIGOFMARC><CHAVEFMARC><![CDATA[0]]></CHAVEFMARC><MARCADOR
MODELO><![CDATA[1]]></MARCADORMODELO><MARCADORBD><![CDATA[2]]></MARCADORBD><NOMEF
ICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODD
EFFMTDA><![CDATA[0]]></MODDEFFMTDA></GRLMRC><GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFM
ARC><REQUIREDOMACC><![CDATA[0]]></REQUIREDOMACC><DESIGCACC><![CDATA[]]></DESIGCACC><CO
DCAPLI><![CDATA[]]></CODCAPLI><CHAVECACC><![CDATA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[
TAX2035_R1]]></CODIGOFMARC><CHAVEFMARC><![CDATA[0]]></CHAVEFMARC><MARCADORMODELO><!
[CDATA[1]]></MARCADORMODELO><MARCADORBD><![CDATA[2]]></MARCADORBD><NOMEFICHFMTDA>
<![CDATA[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><
![CDATA[0]]></MODDEFFMTDA></GRLMRC><GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFMARC><REQ
UIREDOMACC><![CDATA[0]]></REQUIREDOMACC><DESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![
CDATA[]]></CODCAPLI><CHAVECACC><![CDATA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[TAX2036_R
1]]></CODIGOFMARC><CHAVEFMARC><![CDATA[0]]></CHAVEFMARC><MARCADORMODELO><![CDATA[1]]
></MARCADORMODELO><MARCADORBD><![CDATA[2]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[]
]></NOMEFICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]
]></MODDEFFMTDA></GRLMRC><GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFMARC><REQUIREDOMA
CC><![CDATA[0]]></REQUIREDOMACC><DESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]><
/CODCAPLI><CHAVECACC><![CDATA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[TAX2037_R1]]></CODI
GOFMARC><CHAVEFMARC><![CDATA[0]]></CHAVEFMARC><MARCADORMODELO><![CDATA[1]]></MARCA
DORMODELO><MARCADORBD><![CDATA[2]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[]]></NOME
FICHFMTDA><DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MOD
DEFFMTDA></GRLMRC><GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFMARC><REQUIREDOMACC><![CD
ATA[0]]></REQUIREDOMACC><DESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAP
LI><CHAVECACC><![CDATA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[TAX2038_R1]]></CODIGOFMAR
C><CHAVEFMARC><![CDATA[0]]></CHAVEFMARC><MARCADORMODELO><![CDATA[1]]></MARCADORMOD
ELO><MARCADORBD><![CDATA[2]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTD
A><DIRDOCUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA
></GRLMRC><GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></R
EQUIREDOMACC><DESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVEC
ACC><![CDATA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[TAX2039_R1]]></CODIGOFMARC><CHAVEF
MARC><![CDATA[0]]></CHAVEFMARC><MARCADORMODELO><![CDATA[1]]></MARCADORMODELO><MAR
CADORBD><![CDATA[2]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDO
CUMCAPLI><![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA></GRLMR
C><GRLMRC><DESIGFMARC><![CDATA[]]></DESIGFMARC><REQUIREDOMACC><![CDATA[0]]></REQUIREDO
MACC><DESIGCACC><![CDATA[]]></DESIGCACC><CODCAPLI><![CDATA[]]></CODCAPLI><CHAVECACC><![CD
ATA[0]]></CHAVECACC><CODIGOFMARC><![CDATA[TAX2060_R1]]></CODIGOFMARC><CHAVEFMARC><![C
DATA[0]]></CHAVEFMARC><MARCADORMODELO><![CDATA[1]]></MARCADORMODELO><MARCADORBD>
<![CDATA[2]]></MARCADORBD><NOMEFICHFMTDA><![CDATA[]]></NOMEFICHFMTDA><DIRDOCUMCAPLI>
<![CDATA[]]></DIRDOCUMCAPLI><MODDEFFMTDA><![CDATA[0]]></MODDEFFMTDA></GRLMRC></reques
ts>
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 118
Considerações (3)
Nada a apontar.
Configurações para teste
Devido ao facto de se querer usar OLE Automation com o OpenOffice, é necessário configurar o
componente DCOM correspondente ao OpenOffice no servidor, visto que a criação do objecto de ligação
não é similar à realizada num computador local.
Para que seja possível executar o OpenOffice e utilizar a sua API foi necessário realizar a seguinte
configuração no servidor.
Acedendo ao servidor Windows Server 2003 R2: Iniciar Programas Administrative Tools
Component Services. Na janela que abre Expandir Component Services Computers My Computer
DCOM Config.
Em Documento de texto do OpenOffice.org 1.1 Identity definir o utilizador que é administrador da
máquina e é utilizador do domínio.
Desta forma, verifica-se que é necessário ter em atenção as características do utilizador que usa/cria o
objecto de ligação ao OpenOffice.
Tem que ser administrador da máquina, para poder criar o objecto de ligação correctamente, e para
aceder a documentos remotos tem que ser um utilizador do domínio.
As próximas figuras demonstram esses requisitos:
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 119
Figura 1 – Configuração do componente do OpenOffice no DCOM
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 120
Figura 2 – Grupo de administradores do servidor
Como se vê na figura acima airc\ivo.santos e airc\jose.saraiva encaixam nos dois requisitos, tendo, por
conseguinte, capacidade de executar a consulta à GRLMRC com sucesso.
Se não for definido um utilizador administrador da máquina no DCOM os processos são criados, mas não
passam o teste isalive do PB e os acessos à API do OpenOffice não têm sucesso.
Se for definido um utilizador administrador da máquina, mas não sendo simultaneamente utilizador do domínio
de rede, no DCOM os processos são criados correctamente, passam o teste isalive do PB e os acessos à API do
OpenOffice têm sucesso. No entanto, se se quiser aceder a um documento numa pasta partilhada dá excepção na
chamada à loadcomponentfromurl.
Se for definido um utilizador administrador da máquina, sendo simultaneamente utilizador do domínio de rede,
no DCOM os processos são criados correctamente, passam o teste isalive do PB e os acessos à API do OpenOffice
têm sucesso. Os acessos a um documento numa pasta partilhada são bem sucedidos.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 121
Testes de funcionalidade e de carga – Acessos simultâneos
1 – É suportada a reutilização dos objectos de ligação ao OO para as várias chamadas (consulta) à GRLMRC?
Sim.
O tempo de utilização antes da reutilização era de 4.5 segundos. (Este tempo inclui obtenção de sessão, criação
do objecto de ligação, abertura do documento, obtenção dos marcadores lá presentes, fecho do documento e
término dos processos do OpenOffice)
O tempo de utilização com reutilização é de 1 segundo. (Este tempo inclui obtenção de sessão, reutilização do
objecto de ligação já criado, abertura do documento, obtenção dos marcadores lá presentes e fecho do
documento)
A melhoria do tempo de consulta deve-se ao tempo que se poupa por não se criar o objecto de ligação sempre
que se consulta.
2 – Qual a memória utilizada pelo OpenOffice em chamadas dispersas no tempo?
A utilização oscila entre os 56 megabytes e os 57 megabytes durante a utilização. No final da utilização fica a 56
megabytes.
3 – Qual o comportamento em 7 chamadas concorrentes com a mesma pesquisa com o objecto de ligação
existente no servidor?
A utilização da memória oscila entre os 56 megabytes e os 58 megabytes durante a utilização. No final da
utilização fica a 56 megabytes.
Não ficam documentos abertos apesar das diferentes pesquisas se realizarem todas sobre o mesmo modelo.
O tempo de retorno da resposta neste teste de 7 chamadas simultâneas oscilou entre 0,8 segundos e 1,1
segundos.
4 – Qual o comportamento em 7 chamadas concorrentes com a mesma pesquisa com o objecto de ligação
inexistente no servidor?
A utilização da memória oscila entre os 0 megabytes (devido à criação) e os 60 megabytes durante a utilização.
No final da utilização fica a 60 megabytes.
Não ficam documentos abertos apesar das diferentes pesquisas se realizarem todas sobre o mesmo modelo.
O tempo de retorno da resposta neste teste de 7 chamadas simultâneas oscilou entre 0,6 segundos e 4,3
segundos.
5 – Qual o comportamento em 7 chamadas concorrentes com 3 diferentes pesquisas, em que algumas são iguais,
com o objecto de ligação já existente no servidor?
A utilização da memória oscila entre os 56 megabytes e os 58 megabytes durante a utilização. No final da
utilização fica a 56 megabytes.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 122
Não ficam documentos abertos apesar das diferentes pesquisas se realizarem todas sobre o mesmo modelo.
O tempo de retorno da resposta neste teste de 7 chamadas simultâneas oscilou entre 0.6 segundos e 1,1
segundos.
6 – Qual o comportamento em 7 chamadas concorrentes com 3 diferentes pesquisas, em que algumas são iguais,
com o objecto de ligação inexistente no servidor?
A utilização da memória oscila entre os 0 megabytes (devido à criação) e os 57 megabytes durante a utilização.
No final da utilização fica a 56 megabytes.
Não ficam documentos abertos apesar das diferentes pesquisas se realizarem todas sobre o mesmo modelo.
O tempo de retorno da resposta neste teste de 7 chamadas simultâneas oscilou entre 0,7 segundos e 4,3
segundos.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 123
ANEXO D – Informação Online
Consultada
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 124
Pesquisa para o módulo Calc:
Geral:
http://www.oooforum.org/forum/viewtopic.phtml?t=342&highlight=calc
http://www.oooforum.org/forum/viewtopic.phtml?t=759&highlight=calc
http://www.oooforum.org/forum/viewtopic.phtml?t=15548&highlight=number+sheets+document
Activar livro:
http://www.oooforum.org/forum/viewtopic.phtml?t=1615&highlight=calc
Optimal Column Width:
http://www.oooforum.org/forum/viewtopic.phtml?t=2296&highlight=calc
Copiar Sheet para outro Livro:
http://www.oooforum.org/forum/viewtopic.phtml?t=2131&highlight=calc
Filtrar dados numa Sheet:
http://www.oooforum.org/forum/viewtopic.phtml?t=2368&highlight=calc
Saber número de Sheets existentes num livro:
http://api.openoffice.org/servlets/Search?resultsPerPage=40&query=number+of+sheets+many&scope=domain&a
rtifact=picayune+ALL&artifact=wedge+ALL&artifact=nidaba+ALL&artifact=apache+help-
docs&artifact=apache+content&artifact=issuezilla+ALL&artifact=eyebrowse+ALL&artifact=scarab+ALL&artifact=hel
m+project&Button=Search
http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/Spreadsheets/Working_With_Spreadsheet_Do
cuments#Spreadsheet_Document
http://api.openoffice.org/docs/common/ref/com/sun/star/sheet/XSpreadsheetDocument.html
http://www.oooforum.org/forum/viewtopic.phtml?t=69343&highlight=number+sheets+document
http://www.oooforum.org/forum/viewtopic.phtml?t=15548&highlight=number+sheets+document
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 125
Tornar folhas de cálculo do livro invisíveis:
http://www.oooforum.org/forum/viewtopic.phtml?t=57446&highlight=visible+document
http://www.oooforum.org/forum/viewtopic.phtml?t=39354&highlight=visible+document
Visibilidade do livro:
http://www.oooforum.org/forum/viewtopic.phtml?t=50832&highlight=visible+document
Tornar visível um livro invisível - problemas:
http://www.oooforum.org/forum/viewtopic.phtml?t=34726&highlight=visible+document
http://www.oooforum.org/forum/viewtopic.phtml?t=27567&highlight=isvisible
Abrir livro como invisível ou tornar invisível/visível:
http://www.oooforum.org/forum/viewtopic.phtml?t=4816&highlight=l]http://www.oooforum.org/forum/viewtop
ic.phtml?t=4816&highlight=
Nomes/Paths de livros abertos:
http://www.oooforum.org/forum/viewtopic.phtml?t=34665&highlight=visible+document
Saber se o livro está visível:
http://www.oooforum.org/forum/viewtopic.phtml?t=28657&highlight=visible+document
http://api.openoffice.org/docs/common/ref/com/sun/star/awt/XWindow2.html
http://api.openoffice.org/docs/common/ref/com/sun/star/sheet/Spreadsheet.html
Saber visibilidade de uma folha:
http://www.oooforum.org/forum/viewtopic.phtml?t=59601&highlight=isvisible
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 126
Visibilidade de colunas e linhas:
http://www.oooforum.org/forum/viewtopic.phtml?t=73711&highlight=isvisible
http://www.oooforum.org/forum/viewtopic.phtml?t=56920&highlight=isvisible
Saber folha activa:
http://www.oooforum.org/forum/viewtopic.phtml?t=75726&highlight=number+sheets+document
Saber qual é a última folha:
http://www.oooforum.org/forum/viewtopic.phtml?t=69343&highlight=number+sheets+document
Activar folha:
http://www.oooforum.org/forum/viewtopic.phtml?t=54537&highlight=number+sheets+document
http://api.openoffice.org/docs/common/ref/com/sun/star/sheet/XSpreadsheetView.html
Inserir nova linha na folha de cálculo:
http://www.oooforum.org/forum/viewtopic.phtml?t=764
Definir valor (inteiro) de célula:
http://api.openoffice.org/docs/common/ref/com/sun/star/form/binding/XValueBinding.html#setValue
http://www.oooforum.org/forum/viewtopic.phtml?t=18119&highlight=setvalue+setstring
http://www.oooforum.org/forum/viewtopic.phtml?t=5399&highlight=setvalue+setstring
http://codesnippets.services.openoffice.org/Calc/Calc.CellAccess.snip
Definir valor (string) de célula:
http://www.oooforum.org/forum/viewtopic.phtml?t=52559&highlight=setvalue+setstring
http://www.oooforum.org/forum/viewtopic.phtml?t=28150&highlight=setvalue+setstring
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 127
http://www.oooforum.org/forum/viewtopic.phtml?t=58928&highlight=setvalue+setstring
http://www.oooforum.org/forum/viewtopic.phtml?t=4996&highlight=setvalue+setstring
http://www.oooforum.org/forum/viewtopic.phtml?t=7638&highlight=setvalue+setstring
Detecção do que se está a inserir e escolher tipo de inserção (inteiro ou string):
http://www.oooforum.org/forum/viewtopic.phtml?t=66913&highlight=setvalue+setstring
Criar e aplicar formato de número específico:
http://www.oooforum.org/forum/viewtopic.phtml?t=75169&highlight=numberformat
http://www.oooforum.org/forum/viewtopic.phtml?t=74789&highlight=numberformat
http://www.oooforum.org/forum/viewtopic.phtml?t=74753&highlight=numberformat
http://www.oooforum.org/forum/viewtopic.phtml?t=42758&highlight=numberformat
http://www.oooforum.org/forum/viewtopic.phtml?t=71252&highlight=numberformat
http://www.oooforum.org/forum/viewtopic.phtml?t=65868&highlight=numberformat
http://www.oooforum.org/forum/viewtopic.phtml?t=66131&highlight=numberformat
http://www.oooforum.org/forum/viewtopic.phtml?t=60770&highlight=numberformat
http://www.oooforum.org/forum/viewtopic.phtml?t=34867&highlight=numberformat
http://www.oooforum.org/forum/viewtopic.phtml?t=24825&highlight=numberformat
http://download.openoffice.org/servlets/Search?resultsPerPage=40&query=numberformat&scope=domain&artifa
ct=picayune+ALL&artifact=wedge+ALL&artifact=nidaba+ALL&artifact=apache+help-
docs&artifact=apache+content&artifact=issuezilla+ALL&artifact=eyebrowse+ALL&artifact=scarab+ALL&artifact=hel
m+project&Button=Search
http://api.openoffice.org/docs/common/ref/com/sun/star/i18n/NumberFormatIndex.html
http://www.google.pt/search?hl=pt-PT&safe=strict&q=excel+numberformat&btnG=Pesquisar&meta=
http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/OfficeDev/Applying_Number_Formats#XNumb
erformatPreviewer
http://api.openoffice.org/servlets/ReadMsg?list=dev&msgNo=8435
http://api.openoffice.org/servlets/Search?resultsPerPage=40&query=formats&scope=project&artifact=picayune+
ALL&artifact=wedge+ALL&artifact=nidaba+ALL&artifact=apache+help-
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 128
docs&artifact=apache+content&artifact=issuezilla+ALL&artifact=eyebrowse+ALL&artifact=scarab+ALL&artifact=hel
m+project&Button=Search
http://api.openoffice.org/docs/common/ref/com/sun/star/util/NumberFormat.html
http://api.openoffice.org/servlets/ReadMsg?listName=dev&msgNo=13148
http://api.openoffice.org/servlets/ReadMsg?listName=dev&msgNo=13152
http://api.openoffice.org/servlets/ReadMsg?listName=dev&msgNo=13149
http://api.openoffice.org/docs/common/ref/com/sun/star/util/XNumberFormats.html
http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/OfficeDev/Managing_Number_Formats
http://www.oooforum.org/forum/viewtopic.phtml?p=264305#264305
Guardar em XLS:
http://doc.services.openoffice.org/wiki/Framework/Article/Filter/FilterList_OOo_2_1
Pesquisa para várias correcções:
Obtenção do conteúdo da titlebar para activação do documento:
http://msdn.microsoft.com/en-us/library/ms633539(VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms633499(VS.85).aspx
http://msdn.microsoft.com/pt-pt/library/bb258015(en-us).aspx
http://msdn.microsoft.com/pt-pt/library/bb257531(en-us).aspx
Detectar posição do cursor no documento (corpo do documento, cabeçalho, rodapé, etc.):
http://msdn.microsoft.com/pt-pt/library/bb148332(en-us).aspx
http://msdn.microsoft.com/pt-pt/library/bb178821(en-us).aspx
http://msdn.microsoft.com/pt-pt/library/bb257687(en-us).aspx
http://msdn.microsoft.com/pt-pt/library/bb255868(en-us).aspx
http://msdn.microsoft.com/pt-pt/library/bb258011(en-us).aspx
http://msdn.microsoft.com/pt-pt/library/bb148273(en-us).aspx
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 129
Pesquisa para guardar documentos em docx em Office’s anteriores ao
2007 com o pack de compatibilidade instalado, através da API:
http://www.microsoft.com/communities/newsgroups/en-
us/default.aspx?dg=microsoft.public.word.oleinterop&tid=04647fbc-785c-4250-afeb-
ee3d6635c940&cat=&lang=en&cr=US&sloc=&p=1
http://msdn.microsoft.com/en-us/library/bb257579.aspx
http://msdn.microsoft.com/en-us/library/bb215525.aspx
http://msdn.microsoft.com/en-us/library/aa662193(office.10).aspx
http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.fileconverter(VS.80).aspx
http://support.microsoft.com/kb/224066/pt-br
http://support.microsoft.com/kb/932127
http://blogs.msdn.com/microsoft_office_word/archive/2006/09/27/774087.aspx
http://beta.blogs.msdn.com/microsoft_office_word/default.aspx?p=7
http://blogs.msdn.com/microsoft_office_word/archive/2006/10/30/programmatically-opening-saving-the-new-
default-file-formats-in-previous-versions-of-office.aspx
http://www.microsoft.com/communities/newsgroups/en-
us/default.aspx?dg=microsoft.public.word.oleinterop&tid=04647fbc-785c-4250-afeb-
ee3d6635c940&cat=en_US_95e0d20c-e614-46d3-8f07-1ec5d3f03035&lang=en&cr=US&sloc=&p=1
http://msdn.microsoft.com/en-us/library/bb288731.aspx
http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.fileconverter_members(VS.80).aspx
http://groups.google.com/group/microsoft.public.office.developer.automation/browse_thread/thread/9345dfb0f
d519084/7d55993579d4c910?lnk=raot&fwc=1
http://support.microsoft.com/kb/209186/pt
http://support.microsoft.com/kb/185052/pt
Pesquisa para as extensões OpenOffice:
Macros de OpenOffice que percorrem os modelos OpenOffice numa directoria e coloca
nonbreakingspace com estilo antes e depois dos marcadores:
http://api.openoffice.org/servlets/ReadMsg?listName=dev&msgNo=9111
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 130
http://codesnippets.services.openoffice.org/Writer/Writer.MergeDocs.snip
http://www.oooforum.org/forum/viewtopic.phtml?t=7945&view=previous
http://www.oooforum.org/forum/viewtopic.phtml?t=7631
Pesquisa para Webservice:
ConnectToObject em servidor:
http://www.google.pt/search?hl=pt-PT&safe=strict&q=easerver+connecttoobject&btnG=Pesquisar&meta=
http://www.experts-exchange.com/Programming/Editors_IDEs/PowerBuilder/Q_20772143.html
ClassID do OpenOffice (uso em ConnectToObject e ConnectToNewObject):
http://www.oooforum.org/forum/viewtopic.phtml?t=81229
http://www.techno-kitten.com/Changes_to_PowerBuilder/New_In_PowerBuilder_7/PB7New_-
_Using_a_CLSID_to_conn/pb7new_-_using_a_clsid_to_conn.html
http://www.dominux.co.uk/index.php/2007/09/10/the-notes-productivity-editors-just-got-a-heap-more-
interesting/
Resolução questão da entrada OpenOffice no DCOM no servidor:
http://www.oooforum.org/forum/viewtopic.phtml?t=26366
http://www.oooforum.org/forum/viewtopic.phtml?t=30120
http://translate.google.pt/translate?u=http%3A%2F%2Fwww.gotdotnet.ru%2FForums%2FWeb%2F596038.aspx&s
l=ru&tl=pt&hl=pt-PT&ie=UTF-8
http://www.mail-archive.com/[email protected]/msg00859.html
http://www.mail-archive.com/[email protected]/msg00858.html
http://www.mail-archive.com/[email protected]/msg00861.html
http://msdn.microsoft.com/en-us/library/ms686587(VS.85).aspx
http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/ProUNO/Bridge/DCOM
http://www.oooforum.org/forum/viewtopic.phtml?p=335121
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 131
Problema loadcomponentfromurl no acesso a documentos por rede (a outro servidor):
http://www.oooforum.org/forum/viewtopic.phtml?t=41663
http://www.oooforum.org/forum/viewtopic.phtml?t=85727
http://www.oooforum.org/forum/viewtopic.phtml?t=21113
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 132
ANEXO E – Documentação Extensões
OpenOffice
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 133
OpenOffice Conversão de Modelos e Extensões para manutenção da
Visibilidade de Marcadores Versão 1
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 134
Extensões OpenOffice para Marcadores
Assunto Para agilizar a utilização do OpenOffice é necessária a conversão de modelos já existentes do Word para
modelos do OpenOffice. Este documento específica os procedimentos a realizar para a conversão dos
modelos, bem como acções a ter em conta para a visibilidade dos marcadores no OpenOffice.
Conversor de Documentos
O OpenOffice disponibiliza um assistente para automatização de conversão de documentos. Este
possibilita a conversão de modelos do Word de extensão .dotx e .dot para modelos do OpenOffice. Os
modelos do Word devem estar desprotegidos (sem palavra-chave) para agilizar a conversão.
Para executar o Conversor de Documentos vá a Ficheiro » Assistentes » Conversor de Documentos, no
OpenOffice, como indica a figura abaixo.
Figura 1 – Menu para Conversor de Documentos
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 135
Após carregar na opção Conversor de Documentos surge a seguinte figura.
Figura 2 – Menu para escolha de Documentos Word para conversão
Marque a opção Microsoft Office juntamente com a opção Documentos do Word. Carregue “Seguinte”
e aparecerá a figura abaixo.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 136
Figura 3 – Pastas para conversão dos modelos Word e para gravação dos modelos OpenOffice resultantes
Desmarque a opção Documentos do Word. Seleccione os caminhos correspondentes para os respectivos
campos “Importar de:” e “Guardar em:” através dos botões 3 pontos correspondentes.
Nota: Se tiver a opção “A incluir subdirectórios” seleccionada, tem em conta os subdirectórios da
directoria escolhida para “Importar de:” para a conversão dos modelos de Word presentes.
De seguida, surgirá a confirmação de definições realizadas como se apresenta na figura seguinte.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 137
Figura 4 – Confirmação de definições
Seleccione o botão “Converter” para conversão de modelos Word para modelos do OpenOffice e aparecerá a figura abaixo.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 138
Figura 5 – Fim de conversão
Para terminar a conversão basta seleccionar o botão Fechar. A conversão terminou e os modelos
resultantes da conversão estão na pasta que escolheu em cima em “Guardar em:”.
Instalação das extensões
VisibilidadeMarcador
Faça duplo clique sobre o ficheiro VisibilidadeMarcador_v1.1.oxt. A seguinte figura surge:
Figura 6 – Instalação da extensão VisibilidadeMarcador
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 139
Após instalação surge a seguinte figura:
Figura 7 – Gestor de extensões
ApagaVisibilidadeMarcador
Faça duplo clique sobre o ficheiro ApagaVisibilidade Marcador_v1.1.oxt. A seguinte figura surge:
Figura 8 – Instalação da extensão ApagaVisibilidade do Marcador
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 140
Após instalação surge a figura abaixo descrita. Pode fechar a respectiva janela.
Figura 9 – Gestor de extensões
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 141
Utilização das Extensões
Em seguida é descrita a forma de utilização das extensões desenvolvidas para minimizar o facto de os
marcadores não estarem visíveis nos modelos de OpenOffice.
VisibilidadeMarcador
Com o OpenOffice aberto ir a Ferramentas » Macros » Executar Macro, como mostra a figura seguinte.
Figura 10 – Janela de selecção de macros a executar
Proceder à expansão de “As minhas macros”.
Expandir “VisibilidadeMarcador” totalmente e seleccione VisibilidadeMarcador do lado direito na zona
abaixo de “Nome da macro” como a figura abaixo refere.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 142
Figura 11 – Execução da extensão VisibilidadeMarcador
Carregue “Executar”.
É aberta uma janela “Seleccionar Caminho” para indicação de uma pasta com os modelos do OpenOffice
convertidos dos modelos do Word (Ver figura seguinte). Essa pasta é a resultante da conversão dos modelos
descrita acima.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 143
Figura 12 – Janela para escolha de pasta dos modelos OpenOffice resultantes da conversão dos modelos Word existentes
Após seleccionada a pasta carregue no botão OK.
Surge a seguinte janela:
Figura 13 – Informação antes da conversão
A conversão é neste momento executada com êxito:
Figura 14 – Informação após conversão
Os marcadores dos modelos do OpenOffice presentes na pasta pretendida foram alterados para terem
uma indicação visual da sua presença como se indica abaixo.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 144
Exemplo:
marcador
Nota: Se tiver os modelos convertidos do Word para modelos do OpenOffice em várias pastas terá de
repetir este procedimento para cada uma das pastas.
ApagaVisibilidade
Se por algum motivo for necessário apagar as modificações que a Extensão VisibilidadeMarcador executa
sobre os modelos do OpenOffice é disponibilizada a Extensão ApagaVisibilidade Marcador_v1.1.oxt.
Com o OpenOffice aberto ir a Ferramentas » Macros » Executar Macro. Surge a janela Selector de
Macros, como mostra a figura seguinte.
Figura 15 - Janela de selecção de macros a executar
Proceder à expansão de “As minhas macros”.
Expandir “ApagaVisibilidade” totalmente e seleccione ApagaVisibilidade do lado direito na zona abaixo
de “Nome da macro” como a figura abaixo indica:
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 145
Figura 16 – Execução da extensão ApagaVisibilidade
Seleccione o botão “Executar”.
É aberta uma janela “Seleccionar Caminho” para indicação de uma pasta com os modelos do
OpenOffice, resultantes da conversão dos modelos Word, e que já foram convertidos com a extensão
VisibilidadeMarcador (ver figura abaixo). Essa pasta é a resultante da conversão dos modelos descrita
acima.
Integração de Aplicações AIRC com Ferramentas Office
Relatório de Estágio 146
Figura 17 – Janela para escolha de pasta dos modelos OpenOffice com marcadores visualmente alterados pela extensão VisibilidadeMarcador
Após escolha da pasta carregue no botão OK, como mostra a figura:
Figura 18 – Informação antes da conversão
A conversão é executada e após finalizar surge a seguinte figura:
Figura 19 – Informação após conversão
Os marcadores dos modelos do OpenOffice presentes na pasta escolhida foram alterados para ser
retirada a indicação visual da sua presença.