mestrado em informática e sistemas -...

172
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

Upload: ngotram

Post on 29-Jul-2018

237 views

Category:

Documents


0 download

TRANSCRIPT

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 86

Anexos

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.

Integração de Aplicações AIRC com Ferramentas Office

Relatório de Estágio 147

Exemplo:

marcador passa para marcador

Nota: Se tiver modelos do OpenOffice, com as identificações colocadas por VisibilidadeMarcador, em

várias pastas, terá de repetir este procedimento para cada uma das pastas.