INTEGRAÇÃO DE APLICAÇÕES AIRC COM FERRAMENTAS OFFICE

Tamanho: px
Começar a partir da página:

Download "INTEGRAÇÃO DE APLICAÇÕES AIRC COM FERRAMENTAS OFFICE"

Transcrição

1 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

2

3 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

4

5 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 ( 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. Relatório de Estágio i

6

7 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. Relatório de Estágio ii

8

9 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. Relatório de Estágio iii

10

11 Definições, Acrónimos e Abreviaturas Abreviatura ACE AIRC AIRC2000 AFC API CLSID COM DCOM DEIS EDAFC EPI ERP GUI IBM IDE IPC ISEC MIS OLE OO PB Definição Agente de Comunicações Externas Associação de Informática da Região Centro 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. AIRC Foundation Classes Application Programming Interface ou Interface de Programação de Aplicativos CLasS IDentifier - A identificação de um objecto COM Component Object Model Distributed Component Object Model Departamento de Engenharia Informática e de Sistemas Equipa de Desenvolvimento das AFC Estágio/Projecto Industrial Enterprise Resource Planning Graphical User Interface ou Interface Gráfica do Utilizador International Business Machines Integrated Development Environment ou Ambiente Integrado de Desenvolvimento Instituto Politécnico de Coimbra Instituto Superior de Engenharia de Coimbra Mestrado em Informática e Sistemas Object Linking and Embedding OpenOffice - Pacote de produtividade OpenSource 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. Relatório de Estágio iv

12 PBL PFC PFE SCE SDK SGD STA URL XML Marcador Modelo Livro Folha de Cálculo PowerBuilder Library PowerBuilder Foundation Classes PowerBuilder Foundation Extension Sistema de Controlo de Empreitadas Software Development Kit Sistema de Gestão Documental Sistema de Tratamento de Actas Uniform Resource Locator ou Localizador de Recursos Universal extensible Markup Language 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. 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. 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. 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. Relatório de Estágio v

13 Í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 Contextualização do Problema Objectivos Estrutura do Documento 2 2 Enquadramento AIRC ISEC/DEIS/MIS ISEC DEIS MIS Proposta de Estágio Processo de Software Tecnologia Adoptada PowerBuilder Microsoft Office Word/Excel 2000, XP (2002), 2003 e OpenOffice 3.0, Microsoft Virtual PC IHMC CmapTools Notepad XVI32 e Hex Editor Neo WinMerge Trabalho realizado Metodologia de Desenvolvimento Plano de Desenvolvimento Requisitos 11 Relatório de Estágio vi

14 3.4 Plano de Arquitectura Implementação Criação do módulo Calc Tarefas de Suporte Criar e conectar o objecto de ligação à API do OpenOffice Calc Variável Desktop Desligar ou desconectar do Objecto OLE remoto da API Tarefas de Operação sobre Livros Abrir Livros PropertyValue Filename2url Abertura Activar Livros Activar Folha de Cálculo Guardar Livros Saber Livro Activo Saber Nome Folha de Cálculo Activa Fechar Livros Criar Novo Livro Saber Número de Livros Abertos Saber Número de Folhas Saber se está Aberto Saber se é Livro Activo Alterar Nome da Folha de Cálculo Activa no Livro Activo Saber se a Janela está Visível Devolver Estado da Janela do OpenOffice Definir Visibilidade da Janela do Livro Definir Estado da Janela do Livro Obtenção do Conteúdo de uma Célula (Linha, Coluna) Obtenção do Conteúdo de uma Célula (Endereço) Definir Conteúdo de uma Célula (Linha, Coluna) Definir Conteúdo de uma Célula (Endereço) Definir Formato de uma Célula (Linha, Coluna) Definir Formato de uma Célula (Endereço) Insere Linha Testes Camada de Abstracção Criar camada de abstracção para permitir o funcionamento das aplicações Office ou OpenOffice de forma transparente 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 Verifica se o OpenOffice Writer se encontra instalado Verifica se o Microsoft Office Word se encontra instalado Verifica se o OpenOffice Calc se encontra instalado Verifica se o Microsoft Office Excel se encontra instalado Obtém a aplicação associada a uma dada extensão Preenchimento de dropdown com as extensões compatíveis com o que está instalado 42 Relatório de Estágio vii

15 Restantes funções que compõem a camada de abstracção Criação de objectos de ligação Tarefas auxiliares Guardar documentos/livros em modo de compatibilidade Guardar documentos no formato docx em Office s antigos que tenham o Pack de compatibilidade com 2007 instalado Extensões para OpenOffice Writer que facilitam a visibilidade de marcadores em modelos Word (.dot,.dotx) convertidos para.ott Coloca Visibilidade Marcador Apaga Visibilidade Marcador Correcção dos problemas existentes nas funcionalidades já criadas pela AIRC que interagem com pacotes de produtividade Reformulação Colocar Marca com dispatcher s para resolver problema de colocação de marcadores em tabelas e molduras no OpenOffice Writer Outras correcções WebServices 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 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 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 Integração com o SCE Funcionalidades do SCE Exportar Orçamentação Importar Orçamentação Exportação de mapas Efeito do funcionamento da camada de abstracção no SCE 79 5 Conclusões Resultados do Estágio Versão Alfa 1.0 do Módulo de Integração com OpenOffice Calc Camada de Abstracção Webservices Janela de acções Principais Dificuldades Apreciação Crítica do Estágio Trabalho Futuro 84 Relatório de Estágio viii

16 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 Relatório de Estágio ix

17 Índice de Figuras Figura Descrição da Metodologia Scrum 10 Figura Mapa de Gantt 10 Figura Esquema de Heranças da Framework da AIRC 12 Figura Hierarquia de Operações 14 Figura Processo de Desligar 16 Figura Conversão de Caminhos para Livros 18 Figura Abertura de Livros 18 Figura Activar Livros 19 Figura Activar Folha de Cálculo 19 Figura Saber Livro Activo 20 Figura Saber Nome Folha de Cálculo Activa 20 Figura Fechar Livros 21 Figura Criar Novo Livro 21 Figura Saber Número de Livros Abertos 22 Figura Saber Número de Folhas 23 Figura Saber se está Aberto 24 Figura Saber se é Livro Activo 25 Figura Alterar Nome da Folha de Cálculo Activa no Livro Activo 26 Figura Devolver Estado da Janela do OpenOffice 27 Figura Definir Estado da Janela do Livro 28 Figura Obtenção do Conteúdo de uma Célula (Linha, Coluna) 29 Figura Definir Conteúdo de uma Célula (Linha, Coluna) 30 Figura Definir Conteúdo de uma Célula (Linha, Coluna) 31 Figura Insere Linha 32 Figura Hierarquia dos objectos de ligação 34 Figura Definição no registo do Windows para.doc 36 Figura Definição no registo do Windows para.doc 37 Figura Verifica se o OpenOffice Writer se encontra instalado 38 Figura Verifica se o Microsoft Office Word se encontra instalado 39 Figura Verifica se o OpenOffice Calc se encontra instalado 40 Figura Verifica se o Microsoft Office Excel se encontra instalado 41 Figura TabPage de Preferências 43 Relatório de Estágio x

18 Figura TabPage de Preferências com definição de gravação em modo de compatibilidade 44 Figura Guardar documentos no formato docx em Office s antigos que tenham o Pack de compatibilidade com 2007 instalado 46 Figura Marcador após colocação no Word 47 Figura Visual de um marcador normal após colocação no OpenOffice 47 Figura Solução - Visual do marcador visível no OpenOffice 47 Figura Primeiro passo Conversão de Modelos Word em Modelos OpenOffice Writer 47 Figura Primeiro passo A realizar a conversão 48 Figura Coloca Visibilidade Marcador 50 Figura Apaga Visibilidade Marcador 52 Figura Dispatch Framework do OpenOffice [6] 55 Figura Colocação de Marcador Primeira Versão 56 Figura Colocação de Marcador Segunda Versão 57 Figura Documento aberto em modo de compatibilidade 59 Figura Documento aberto sem estar em modo de compatibilidade 59 Figura Pesquisa realizada à base de dados 61 Figura Template de XML dos dados devolvidos 62 Figura Webservice Marcadores Obrigatórios (Algoritmo) 63 Figura Webservice Marcadores Obrigatórios (Arquitectura) 64 Figura Configuração na DCOM 65 Figura Webservice verifica presença marcadores (primeira forma de pesquisa) 70 Figura Webservice verifica presença marcadores (segunda forma de pesquisa) 71 Figura Webservice verifica presença marcadores (primeira e segunda forma de pesquisa) Diferenças de Arquitectura 72 Figura Janela de Acções 73 Figura Janela de Acções com verificação de marcadores obrigatórios (funcionalidade) 74 Figura Janela de Acções com verificação de marcadores obrigatórios (funcionamento) 75 Figura Exportar Orçamentação 77 Figura Importar Orçamentação 78 Relatório de Estágio xi

19 Índice de Tabelas Integração de Aplicações AIRC com Ferramentas Office Tabela Calendarização das Tarefas 5 Tabela Constituição da Team de Scrum 9 Tabela Sumário de tratamento de documentos com os diferentes pacotes de produtividade 34 Relatório de Estágio xii

20

21 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 Relatório de Estágio 1

22 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. Relatório de Estágio 2

23 2 Enquadramento Integração de Aplicações AIRC com Ferramentas Office 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 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 Relatório de Estágio 3

24 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 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 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. Relatório de Estágio 4

25 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 Calendarização das Tarefas INI Início dos trabalhos M1 (INI + 4 Semanas) Tarefa T1 terminada M2 (INI + 6 Semanas) Tarefa T2 terminada Relatório de Estágio 5

26 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 tornase 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 Processos e ferramentas Documentação detalhada Negociação de contratos Seguir um plano Mais Importante Indivíduos e interacção Software que funciona Colaboração com o cliente Capacidade de adaptação a mudanças Relatório de Estágio 6

27 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 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 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. Relatório de Estágio 7

28 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 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 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 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 XVI32 e Hex Editor Neo O XVI32 e Hex Editor Neo foram utilizados para verificar a assinatura hexadecimal dos documentos e livros criados 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. Relatório de Estágio 8

29 3 - Trabalho realizado Integração de Aplicações AIRC com Ferramentas Office 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 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 Relatório de Estágio 9

30 Figura 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 Mapa de Gantt Relatório de Estágio 10

31 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; Relatório de Estágio 11

32 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 Esquema de Heranças da Framework da AIRC Relatório de Estágio 12

33 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 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: Relatório de Estágio 13

34 Figura Hierarquia de Operações 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. Relatório de Estágio 14

35 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 encontramse 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 FBF-11d AB4. 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 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 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 Relatório de Estágio 15

36 "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 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 Processo de Desligar O Objecto OpenOffice é uma variável OleObject que se quer desconectar de um objecto OLE remoto 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 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 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. Relatório de Estágio 16

37 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. Relatório de Estágio 17

38 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 Conversão de Caminhos para Livros 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 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. Relatório de Estágio 18

39 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 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 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 Activar Folha de Cálculo 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 Relatório de Estágio 19

40 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 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 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 representa o processo efectuado. Figura Saber Livro Activo 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 representa o processo efectuado. Figura Saber Nome Folha de Cálculo Activa Relatório de Estágio 20

41 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 O processo de Fechar Livros é em seguida ilustrado: Figura Fechar Livros Para haver sempre um livro/componente activo após o fecho do livro, outro livro existente é automaticamente activado 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 Criar Novo Livro Relatório de Estágio 21

42 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 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 representa como o processo é realizado. Figura Saber Número de Livros Abertos Relatório de Estágio 22

43 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 representa o processo realizado. Figura Saber Número de Folhas Relatório de Estágio 23

44 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 Saber se está Aberto Relatório de Estágio 24

45 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 representa todo o processo. Figura Saber se é Livro Activo Relatório de Estágio 25

46 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 representa todo o processo. Figura Alterar Nome da Folha de Cálculo Activa no Livro Activo 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. Relatório de Estágio 26

47 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 representa o processo. Figura Devolver Estado da Janela do OpenOffice 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. Relatório de Estágio 27

48 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 representa o processo. Figura Definir Estado da Janela do Livro Relatório de Estágio 28

49 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 representa o processo. Figura Obtenção do Conteúdo de uma Célula (Linha, Coluna) 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). Relatório de Estágio 29

50 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 representa o processo. Figura Definir Conteúdo de uma Célula (Linha, Coluna) 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). Relatório de Estágio 30

51 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 A figura representa o processo. Figura Definir Conteúdo de uma Célula (Linha, Coluna) Relatório de Estágio 31

52 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) 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 representa o processo. Figura 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 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 Relatório de Estágio 32

53 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 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? 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 representa a organização lógica criada. Relatório de Estágio 33

54 Figura 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 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 revelouse essencial. A tabela pretende responder a perguntas como as seguintes: Relatório de Estágio 34

55 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 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. Relatório de Estágio 35

56 Figura 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 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\@. Relatório de Estágio 36

57 Figura Definição no registo do Windows para.doc Na figura acima o campo Predefinição (também conhecido 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 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. Relatório de Estágio 37

58 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 representa o processo. Figura Verifica se o OpenOffice Writer se encontra instalado Relatório de Estágio 38

59 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 representa o processo realizado. Figura Verifica se o Microsoft Office Word se encontra instalado Relatório de Estágio 39

60 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 representa o processo realizado. Figura Verifica se o OpenOffice Calc se encontra instalado Relatório de Estágio 40

61 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 representa o processo realizado. Figura Verifica se o Microsoft Office Excel se encontra instalado 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. Relatório de Estágio 41

62 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 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 representa o processo realizado. Relatório de Estágio 42

63 Figura TabPage de Preferências 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 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. Relatório de Estágio 43

64 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 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 representa o processo realizado. Figura TabPage de Preferências com definição de gravação em modo de compatibilidade 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 Relatório de Estágio 44

65 pudessem gravar documentos nesse formato e também para ser respeitada a tabela 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. Relatório de Estágio 45

66 Figura Guardar documentos no formato docx em Office s antigos que tenham o Pack de compatibilidade com 2007 instalado 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. Relatório de Estágio 46

67 Figura Marcador após colocação no Word Figura Visual de um marcador normal após colocação no OpenOffice Figura 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 e ) Figura Primeiro passo Conversão de Modelos Word em Modelos OpenOffice Writer Relatório de Estágio 47

68 Figura 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 Ao abrir o modelo Word e o modelo OpenOffice Writer resultante da conversão, verifica-se que neste último o mesmo marcador estará como 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? Relatório de Estágio 48

69 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 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 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. Relatório de Estágio 49

70 Figura Coloca Visibilidade Marcador Relatório de Estágio 50

71 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 representa o processo realizado. Relatório de Estágio 51

72 Figura Apaga Visibilidade Marcador Relatório de Estágio 52

73 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 ) 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 Os restantes problemas (subcapítulo ) 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 Relatório de Estágio 53

74 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, e ) é 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. Relatório de Estágio 54

75 Figura Dispatch Framework do OpenOffice [6] Relatório de Estágio 55

76 Figura Colocação de Marcador Primeira Versão Relatório de Estágio 56

77 Figura Colocação de Marcador Segunda Versão Relatório de Estágio 57

78 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 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 Relatório de Estágio 58

79 Figura Documento aberto em modo de compatibilidade Figura 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 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. Relatório de Estágio 59

80 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. Relatório de Estágio 60

81 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 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 Relatório de Estágio 61

82 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 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: Relatório de Estágio 62

83 Figura Webservice Marcadores Obrigatórios (Algoritmo) Relatório de Estágio 63

84 Figura Webservice Marcadores Obrigatórios (Arquitectura) Relatório de Estágio 64

85 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 Configuração na DCOM Relatório de Estágio 65

86 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: Relatório de Estágio 66

87 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. Relatório de Estágio 67

88 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 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> Relatório de Estágio 68

89 <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: Relatório de Estágio 69

90 Figura Webservice verifica presença marcadores (primeira forma de pesquisa) Relatório de Estágio 70

91 Figura Webservice verifica presença marcadores (segunda forma de pesquisa) Relatório de Estágio 71

92 Figura 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. Relatório de Estágio 72

93 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 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 considerados obrigatórios. está uma lista de marcadores. Os marcadores assinalados com um visto serão 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. Relatório de Estágio 73

94 Figura Janela de Acções com verificação de marcadores obrigatórios (funcionalidade) Relatório de Estágio 74

95 A figura seguinte apresenta o funcionamento da funcionalidade detalhada em Figura 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. Relatório de Estágio 75

96

97 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 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. Relatório de Estágio 76

98 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 Exportar Orçamentação Relatório de Estágio 77

99 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 Importar Orçamentação 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. Relatório de Estágio 78

100 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: Relatório de Estágio 79

101 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. Relatório de Estágio 80

102 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. Relatório de Estágio 81

103 5 Conclusões 5.1 Resultados do Estágio 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 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 ), 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 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 , e Anexo C - Documentação Webservice) Relatório de Estágio 82

104 Os WebServices foram criados com sucesso 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. Relatório de Estágio 83

105 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. Relatório de Estágio 84

106

107 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 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] 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] 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] permite a consulta do código fonte do OpenOffice. Acedido várias vezes no decorrer da fase implementação. [14] Word 2007 Developer Reference, permite a investigação dos membros e propriedades dos objectos da API do Word. [15] Limitação do OpenOffice presente no seu próprio Issue Tracker relativa a não colocar os marcadores visíveis no OpenOffice. Relatório de Estágio 85

108

109 Anexos Relatório de Estágio 86

110

111 ANEXO A Objecto de ligação ao OpenOffice Calc Especificação de implementação e funcionalidades Relatório de Estágio 87

112 Objecto de ligação ao OpenOffice Calc Objecto(s) Problema Descrição n_oleoocalc 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. 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 Criação do documento e explicação das funções equivalentes ao objecto Excel que foram implementadas através de chamadas à API do OpenOffice. Acrescentar novas funcões ( as of_setcelltext( ) e a of_setformato(row,column,formato)) Autor Ivo Santos 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. Relatório de Estágio 88

113 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á. Relatório de Estágio 89

114 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 Relatório de Estágio 90

115 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 Relatório de Estágio 91

116 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 Relatório de Estágio 92

117 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 Relatório de Estágio 93

118 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, 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 Relatório de Estágio 94

119 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 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. Relatório de Estágio 95

120 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. Relatório de Estágio 96

121 ANEXO B Product Backlog e Sprint Backlog Relatório de Estágio 97

122 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 Relatório de Estágio 98

123 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 Relatório de Estágio 99

124 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 Relatório de Estágio 100

125 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 Relatório de Estágio 101

126 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 Relatório de Estágio 102

127 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 Relatório de Estágio 103

128 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 Relatório de Estágio 104

129 ANEXO C Documentação Webservice Relatório de Estágio 105

130 ACE Consultas Dinâmicas Relatório de Estágio 106

131 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 Relatório de Estágio 107

132 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. Relatório de Estágio 108

133 Área de pesquisa de marcadores obrigatórios em modelo GRLMRC Pedido (1) <?xml version='1.0' encoding='iso '?><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 '?><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 Relatório de Estágio 109

134 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 Relatório de Estágio 110

135 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 '?><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 Relatório de Estágio 111

136 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 Relatório de Estágio 112

137 ><![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 Relatório de Estágio 113

138 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 Relatório de Estágio 114

139 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><! Relatório de Estágio 115

140 [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 Relatório de Estágio 116

141 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> Relatório de Estágio 117

142 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: Relatório de Estágio 118

143 Figura 1 Configuração do componente do OpenOffice no DCOM Relatório de Estágio 119

144 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. Relatório de Estágio 120

145 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. Relatório de Estágio 121

146 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. Relatório de Estágio 122

147 ANEXO D Informação Online Consultada Relatório de Estágio 123

148 Pesquisa para o módulo Calc: Geral: Activar livro: Optimal Column Width: Copiar Sheet para outro Livro: Filtrar dados numa Sheet: Saber número de Sheets existentes num livro: rtifact=picayune+all&artifact=wedge+all&artifact=nidaba+all&artifact=apache+helpdocs&artifact=apache+content&artifact=issuezilla+all&artifact=eyebrowse+all&artifact=scarab+all&artifact=hel m+project&button=search cuments#spreadsheet_document Relatório de Estágio 124

149 Tornar folhas de cálculo do livro invisíveis: Visibilidade do livro: Tornar visível um livro invisível - problemas: Abrir livro como invisível ou tornar invisível/visível: ic.phtml?t=4816&highlight= Nomes/Paths de livros abertos: Saber se o livro está visível: Saber visibilidade de uma folha: Relatório de Estágio 125

150 Visibilidade de colunas e linhas: Saber folha activa: Saber qual é a última folha: Activar folha: Inserir nova linha na folha de cálculo: Definir valor (inteiro) de célula: Definir valor (string) de célula: Relatório de Estágio 126

151 Detecção do que se está a inserir e escolher tipo de inserção (inteiro ou string): Criar e aplicar formato de número específico: ct=picayune+all&artifact=wedge+all&artifact=nidaba+all&artifact=apache+helpdocs&artifact=apache+content&artifact=issuezilla+all&artifact=eyebrowse+all&artifact=scarab+all&artifact=hel m+project&button=search erformatpreviewer ALL&artifact=wedge+ALL&artifact=nidaba+ALL&artifact=apache+help- Relatório de Estágio 127

152 docs&artifact=apache+content&artifact=issuezilla+all&artifact=eyebrowse+all&artifact=scarab+all&artifact=hel m+project&button=search Guardar em XLS: Pesquisa para várias correcções: Obtenção do conteúdo da titlebar para activação do documento: Detectar posição do cursor no documento (corpo do documento, cabeçalho, rodapé, etc.): Relatório de Estágio 128

153 Pesquisa para guardar documentos em docx em Office s anteriores ao 2007 com o pack de compatibilidade instalado, através da API: d519084/7d d4c910?lnk=raot&fwc=1 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: Relatório de Estágio 129

154 Pesquisa para Webservice: ConnectToObject em servidor: ClassID do OpenOffice (uso em ConnectToObject e ConnectToNewObject): _Using_a_CLSID_to_conn/pb7new_-_using_a_clsid_to_conn.html Resolução questão da entrada OpenOffice no DCOM no servidor: l=ru&tl=pt&hl=pt-pt&ie=utf Relatório de Estágio 130

155 Problema loadcomponentfromurl no acesso a documentos por rede (a outro servidor): Relatório de Estágio 131

156

157 ANEXO E Documentação Extensões OpenOffice Relatório de Estágio 132

158 OpenOffice Conversão de Modelos e Extensões para manutenção da Visibilidade de Marcadores Versão 1 Relatório de Estágio 133

159 Assunto Extensões OpenOffice para Marcadores 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 Relatório de Estágio 134

160 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. Relatório de Estágio 135

161 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. Relatório de Estágio 136

162 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. Relatório de Estágio 137

163 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 Relatório de Estágio 138

164 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 Relatório de Estágio 139

165 Após instalação surge a figura abaixo descrita. Pode fechar a respectiva janela. Figura 9 Gestor de extensões Relatório de Estágio 140

166 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. Relatório de Estágio 141

167 Carregue Executar. Figura 11 Execução da extensão VisibilidadeMarcador É 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. Relatório de Estágio 142

168 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: A conversão é neste momento executada com êxito: Figura 13 Informação antes da conversão 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. Relatório de Estágio 143

169 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: Relatório de Estágio 144

170 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. Relatório de Estágio 145

Base de Dados para Administrações de Condomínios

Base de Dados para Administrações de Condomínios Base de Dados para Administrações de Condomínios José Pedro Gaiolas de Sousa Pinto: ei03069@fe.up.pt Marco António Sousa Nunes Fernandes Silva: ei03121@fe.up.pt Pedro Miguel Rosário Alves: alves.pedro@fe.up.pt

Leia mais

PHC Serviços CS. A gestão de processos de prestação de serviços

PHC Serviços CS. A gestão de processos de prestação de serviços PHC Serviços CS A gestão de processos de prestação de serviços A solução que permite controlar diferentes áreas de uma empresa: reclamações e respectivo tratamento; controlo de processos e respectivos

Leia mais

Tarefa Orientada 2 Criar uma base de dados

Tarefa Orientada 2 Criar uma base de dados Tarefa Orientada 2 Criar uma base de dados Objectivos: Criar uma base de dados vazia. O Sistema de Gestão de Bases de Dados MS Access Criar uma base dados vazia O Access é um Sistema de Gestão de Bases

Leia mais

GereComSaber. Desenvolvimento de Sistemas de Software. Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática

GereComSaber. Desenvolvimento de Sistemas de Software. Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática Desenvolvimento de Sistemas de Software Ano Lectivo de 2009/10 GereComSaber Ana Duarte, André Guedes, Eduardo

Leia mais

Procedimento de Gestão PG 02 Controlo de Documentos e Registos

Procedimento de Gestão PG 02 Controlo de Documentos e Registos Índice 1.0. Objectivo. 2 2.0. Campo de aplicação 2 3.0. Referências e definições....... 2 4.0. Responsabilidades... 3 5.0. Procedimento... 3 5.1. Generalidades 3 5.2. Controlo de documentos... 4 5.3. Procedimentos

Leia mais

Manual do GesFiliais

Manual do GesFiliais Manual do GesFiliais Introdução... 3 Arquitectura e Interligação dos elementos do sistema... 4 Configuração do GesPOS Back-Office... 7 Utilização do GesFiliais... 12 Outros modos de utilização do GesFiliais...

Leia mais

5. Métodos ágeis de desenvolvimento de software

5. Métodos ágeis de desenvolvimento de software Engenharia de Software 5. Métodos ágeis de desenvolvimento de software Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt Desenvolver e entregar software o mais rapidamente possível é hoje em dia um dos

Leia mais

Rock In Rio - Lisboa

Rock In Rio - Lisboa Curso de Engenharia Informática Industrial Rock In Rio - Lisboa Elaborado por: Ano Lectivo: 2004/05 Tiago Costa N.º 4917 Turma: C Gustavo Graça Patrício N.º 4757 Turma: C Docente: Professora Maria Estalagem

Leia mais

Mestrado em Sistemas Integrados de Gestão (Qualidade, Ambiente e Segurança)

Mestrado em Sistemas Integrados de Gestão (Qualidade, Ambiente e Segurança) Mestrado em Sistemas Integrados de Gestão (Qualidade, Ambiente e Segurança) 1 - Apresentação Grau Académico: Mestre Duração do curso: : 2 anos lectivos/ 4 semestres Número de créditos, segundo o Sistema

Leia mais

Manual SAGe Versão 1.2 (a partir da versão 12.08.01)

Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Submissão de Relatórios Científicos Sumário Introdução... 2 Elaboração do Relatório Científico... 3 Submissão do Relatório Científico... 14 Operação

Leia mais

Curso de Especialização Tecnológica em Aplicações Informáticas de Gestão (CET-AIG)

Curso de Especialização Tecnológica em Aplicações Informáticas de Gestão (CET-AIG) Curso de Especialização Tecnológica em Aplicações Informáticas de Gestão (CET-AIG) 1. Plano Curricular do curso O curso de especialização tecnológica em Aplicações Informáticas de Gestão integra as componentes

Leia mais

Programa de Parcerias e Submissão de Propostas 2014/15

Programa de Parcerias e Submissão de Propostas 2014/15 DEPARTAMENTO DE INFORMÁTICA Programa de Parcerias e Submissão de Propostas 2014/15 O Departamento de Informática (DI) da Faculdade de Ciências da Universidade de Lisboa (FCUL) procura criar e estreitar

Leia mais

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO. SISTEMAS DE GESTÃO DE BASE DE DADOS Microsoft Access TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO. SISTEMAS DE GESTÃO DE BASE DE DADOS Microsoft Access TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO Microsoft Access TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO CONCEITOS BÁSICOS 1 Necessidade das base de dados Permite guardar dados dos mais variados tipos; Permite

Leia mais

Serviço a Pedido ( On Demand ) da CA - Termos e Política de Manutenção Em vigor a partir de 1 de Setembro de 2010

Serviço a Pedido ( On Demand ) da CA - Termos e Política de Manutenção Em vigor a partir de 1 de Setembro de 2010 Serviço a Pedido ( On Demand ) da CA - Termos e Política de Manutenção Em vigor a partir de 1 de Setembro de 2010 A Manutenção do Serviço a Pedido ( On Demand ) da CA consiste numa infra-estrutura de disponibilidade

Leia mais

DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS

DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS Planificação Anual da Disciplina de TIC Módulos 1,2,3-10.ºD CURSO PROFISSIONAL DE TÉCNICO DE APOIO À GESTÃO DESPORTIVA Ano Letivo 2015-2016 Manual adotado:

Leia mais

RECOLHA DE INFORMAÇÃO DE REMUNERAÇÕES, SUPLEMENTOS E DOS PONTOS DECORRENTES DA AVALIAÇÃO DE DESEMPENHO

RECOLHA DE INFORMAÇÃO DE REMUNERAÇÕES, SUPLEMENTOS E DOS PONTOS DECORRENTES DA AVALIAÇÃO DE DESEMPENHO RECOLHA DE INFORMAÇÃO DE REMUNERAÇÕES, SUPLEMENTOS E DOS PONTOS DECORRENTES DA AVALIAÇÃO DE DESEMPENHO MANUAL DO UTILIZADOR 1 RECOLHA DE INFORMAÇÃO DE REMUNERAÇÕES E DE DESEMPENHO MANUAL DO UTILIZADOR

Leia mais

Apresentação. Serviço de Apoio às Bibliotecas Escolares. Oliveira de Azeméis Novembro 2007

Apresentação. Serviço de Apoio às Bibliotecas Escolares. Oliveira de Azeméis Novembro 2007 Apresentação Serviço de Apoio às Bibliotecas Escolares Oliveira de Azeméis Novembro 2007 Apresentação SABE 12-11-2007 2 Apresentação O conceito de Serviço de Apoio às Bibliotecas Escolares (SABE) que se

Leia mais

GUIA PARA O PREENCHIMENTO DOS FORMULÁRIOS ENTIDADE GESTORA ERP PORTUGAL

GUIA PARA O PREENCHIMENTO DOS FORMULÁRIOS ENTIDADE GESTORA ERP PORTUGAL GUIA PARA O PREENCHIMENTO DOS FORMULÁRIOS ENTIDADE GESTORA ERP PORTUGAL Versão: 1.0 Data: 05-06-2009 Índice Acesso e estados dos Formulários... 3 Escolha do Formulário e submissão... 4 Bases para a navegação

Leia mais

Componente de Formação Técnica. Disciplina de

Componente de Formação Técnica. Disciplina de CURSOS PROFISSIONAIS DE NÍVEL SECUNDÁRIO Técnico de Multimédia PROGRAMA Componente de Formação Técnica Disciplina de Projecto e Produção Multimédia Escolas Proponentes / Autores Direcção-Geral de Formação

Leia mais

Desenvolvimento Ágil de Software

Desenvolvimento Ágil de Software Desenvolvimento Ágil de Software Métodos ágeis (Sommerville) As empresas operam em um ambiente global, com mudanças rápidas. Softwares fazem parte de quase todas as operações de negócios. O desenvolvimento

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 13 Web Services Web Services

Leia mais

2 Diagrama de Caso de Uso

2 Diagrama de Caso de Uso Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Caso de Uso (Use Case) Autoria:Aristófanes Corrêa

Leia mais

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO - TIC 10º C. Planificação de. Curso Profissional de Técnico de Secretariado

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO - TIC 10º C. Planificação de. Curso Profissional de Técnico de Secretariado Escola Básica e Secundária de Velas Planificação de TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO - TIC Curso Profissional de Técnico de Secretariado 10º C MÓDULO 1 FOLHA DE CÁLCULO Microsoft Excel Conteúdos

Leia mais

Regulamento de Vigilâncias de Provas Escritas de Avaliação do DEEC

Regulamento de Vigilâncias de Provas Escritas de Avaliação do DEEC Regulamento de Vigilâncias de Provas Escritas de Avaliação do DEEC Autores: Aprovação: Comissão Executiva do DEEC Comissão Executiva do DEEC Data: 3 de Fevereiro de 2011 Distribuição: Docentes do DEEC

Leia mais

Certificação da Qualidade dos Serviços Sociais. Procedimentos

Certificação da Qualidade dos Serviços Sociais. Procedimentos Certificação da Qualidade dos Serviços Sociais EQUASS Assurance Procedimentos 2008 - European Quality in Social Services (EQUASS) Reservados todos os direitos. É proibida a reprodução total ou parcial

Leia mais

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas Microsoft Power Point 2003 No Microsoft PowerPoint 2003, você cria sua apresentação usando apenas um arquivo, ele contém tudo o que você precisa uma estrutura para sua apresentação, os slides, o material

Leia mais

COMPETÊNCIAS BÁSICAS EM TIC NAS EB1

COMPETÊNCIAS BÁSICAS EM TIC NAS EB1 COMPETÊNCIAS BÁSICAS EM TIC NAS EB1 Oficina do Correio Para saber mais sobre Correio electrónico 1. Dicas para melhor gerir e organizar o Correio Electrónico utilizando o Outlook Express Criar Pastas Escrever

Leia mais

GereComSaber. Disciplina de Desenvolvimento de Sistemas de Software. Sistema de Gestão de Serviços em Condomínios

GereComSaber. Disciplina de Desenvolvimento de Sistemas de Software. Sistema de Gestão de Serviços em Condomínios Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática 3ºAno Disciplina de Desenvolvimento de Sistemas de Software Ano Lectivo de 2009/2010 GereComSaber Sistema de

Leia mais

PEDIDO DE ACREDITAÇÃO PRÉVIA DE NOVO CICLO DE ESTUDOS (PAPNCE) (Ensino Universitário e Politécnico) Guião de apresentação

PEDIDO DE ACREDITAÇÃO PRÉVIA DE NOVO CICLO DE ESTUDOS (PAPNCE) (Ensino Universitário e Politécnico) Guião de apresentação PEDIDO DE ACREDITAÇÃO PRÉVIA DE NOVO CICLO DE ESTUDOS (PAPNCE) (Ensino Universitário e Politécnico) Guião de apresentação Versão de Setembro de 2013 APRESENTAÇÃO DO PEDIDO A1. Instituição de ensino superior

Leia mais

GESTÃO de PROJECTOS. Gestor de Projectos Informáticos. Luís Manuel Borges Gouveia 1

GESTÃO de PROJECTOS. Gestor de Projectos Informáticos. Luís Manuel Borges Gouveia 1 GESTÃO de PROJECTOS Gestor de Projectos Informáticos Luís Manuel Borges Gouveia 1 Iniciar o projecto estabelecer objectivos definir alvos estabelecer a estratégia conceber a estrutura de base do trabalho

Leia mais

Sistema de Controle de Solicitação de Desenvolvimento

Sistema de Controle de Solicitação de Desenvolvimento Sistema de Controle de Solicitação de Desenvolvimento Introdução O presente documento descreverá de forma objetiva as principais operações para abertura e consulta de uma solicitação ao Setor de Desenvolvimento

Leia mais

Modelo Cascata ou Clássico

Modelo Cascata ou Clássico Modelo Cascata ou Clássico INTRODUÇÃO O modelo clássico ou cascata, que também é conhecido por abordagem top-down, foi proposto por Royce em 1970. Até meados da década de 1980 foi o único modelo com aceitação

Leia mais

ICORLI. INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET

ICORLI. INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET 2010/2011 1 Protocolo TCP/IP É um padrão de comunicação entre diferentes computadores e diferentes sistemas operativos. Cada computador deve

Leia mais

Engenharia de Software Sistemas Distribuídos

Engenharia de Software Sistemas Distribuídos Engenharia de Software Sistemas Distribuídos 2 o Semestre de 2009/2010 FEARSe Requisitos para a 1 a entrega 18 de Março de 2010 1 Introdução O projecto conjunto das disciplinas de Engenharia de Software

Leia mais

PROJECTO DE RESOLUÇÃO N.º 255/IX RECOMENDA AO GOVERNO A TOMADA DE MEDIDAS COM VISTA AO DESENVOLVIMENTO DO SOFTWARE LIVRE EM PORTUGAL

PROJECTO DE RESOLUÇÃO N.º 255/IX RECOMENDA AO GOVERNO A TOMADA DE MEDIDAS COM VISTA AO DESENVOLVIMENTO DO SOFTWARE LIVRE EM PORTUGAL PROJECTO DE RESOLUÇÃO N.º 255/IX RECOMENDA AO GOVERNO A TOMADA DE MEDIDAS COM VISTA AO DESENVOLVIMENTO DO SOFTWARE LIVRE EM PORTUGAL 1 O software desempenha, cada vez mais, um papel fulcral nas actividades

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

Guia de Utilização. Acesso Universal

Guia de Utilização. Acesso Universal Guia de Utilização Índice PREÂMBULO...3 ACESSO À PLATAFORMA...3 ÁREA DE TRABALHO...4 APRESENTAR PROPOSTAS...9 RECEPÇÃO DE ADJUDICAÇÃO...18 PARAMETRIZAÇÃO DA EMPRESA...19 Acesso universal Proibida a reprodução.

Leia mais

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA RESUMO Ricardo Della Libera Marzochi A introdução ao Service Component Architecture (SCA) diz respeito ao estudo dos principais fundamentos

Leia mais

WebSphere_Integration_Developer_D_Jan06 Script

WebSphere_Integration_Developer_D_Jan06 Script WebSphere_Integration_Developer_D_Jan06 Script 1a Nesta demonstração, Will Dunlop, um programador de integração da JK, utiliza o IBM, [ IBM], ou WID para construir um novo serviço orientado para os processos

Leia mais

MANUAL DO USUÁRIO SORE Sistema Online de Reservas de Equipamento. Toledo PR. Versão 2.0 - Atualização 26/01/2009 Depto de TI - FASUL Página 1

MANUAL DO USUÁRIO SORE Sistema Online de Reservas de Equipamento. Toledo PR. Versão 2.0 - Atualização 26/01/2009 Depto de TI - FASUL Página 1 MANUAL DO USUÁRIO SORE Sistema Online de Reservas de Equipamento Toledo PR Página 1 INDICE 1. O QUE É O SORE...3 2. COMO ACESSAR O SORE... 4 2.1. Obtendo um Usuário e Senha... 4 2.2. Acessando o SORE pelo

Leia mais

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia. 1 Introdução aos Sistemas de Informação 2002 Aula 4 - Desenvolvimento de software e seus paradigmas Paradigmas de Desenvolvimento de Software Pode-se considerar 3 tipos de paradigmas que norteiam a atividade

Leia mais

Microsoft Office FrontPage 2003

Microsoft Office FrontPage 2003 Instituto Politécnico de Tomar Escola Superior de Gestão Área Interdepartamental de Tecnologias de Informação e Comunicação Microsoft Office FrontPage 2003 1 Microsoft Office FrontPage 2003 O Microsoft

Leia mais

Explorar os comandos no friso Cada friso tem grupos e cada grupo tem um conjunto de comandos relacionados.

Explorar os comandos no friso Cada friso tem grupos e cada grupo tem um conjunto de comandos relacionados. Guia de Introdução O Microsoft Project 2013 tem um aspeto diferente das versões anteriores, pelo que criámos este guia para o ajudar a minimizar a curva de aprendizagem. Barra de Ferramentas de Acesso

Leia mais

Direcção Regional de Educação do Algarve

Direcção Regional de Educação do Algarve MÓDULO 1 Folha de Cálculo 1. Introdução à folha de cálculo 1.1. Personalização da folha de cálculo 1.2. Estrutura geral de uma folha de cálculo 1.3. O ambiente de da folha de cálculo 2. Criação de uma

Leia mais

Mestrado em Segurança da Informação e Direito no Ciberespaço. Segurança da informação nas organizações Gestão de Configuração

Mestrado em Segurança da Informação e Direito no Ciberespaço. Segurança da informação nas organizações Gestão de Configuração Escola Naval Mestrado em Segurança da Informação e Direito no Ciberespaço Segurança da informação nas organizações Gestão de Configuração Fernando Correia Capitão-de-fragata EN-AEL 14 de Dezembro de 2013

Leia mais

Manual de Utilizador. Disciplina de Projecto de Sistemas Industriais. Escola Superior de Tecnologia. Instituto Politécnico de Castelo Branco

Manual de Utilizador. Disciplina de Projecto de Sistemas Industriais. Escola Superior de Tecnologia. Instituto Politécnico de Castelo Branco Escola Superior de Tecnologia Instituto Politécnico de Castelo Branco Departamento de Informática Curso de Engenharia Informática Disciplina de Projecto de Sistemas Industriais Ano Lectivo de 2005/2006

Leia mais

Acronis Servidor de Licença. Manual do Utilizador

Acronis Servidor de Licença. Manual do Utilizador Acronis Servidor de Licença Manual do Utilizador ÍNDICE 1. INTRODUÇÃO... 3 1.1 Descrição geral... 3 1.2 Política de licenças... 3 2. SISTEMAS OPERATIVOS SUPORTADOS... 4 3. INSTALAR O SERVIDOR DE LICENÇA

Leia mais

Índice. Como aceder ao serviço de Certificação PME? Como efectuar uma operação de renovação da certificação?

Índice. Como aceder ao serviço de Certificação PME? Como efectuar uma operação de renovação da certificação? Índice Como aceder ao serviço de Certificação PME? Como efectuar uma operação de renovação da certificação? Como efectuar uma operação de confirmação de estimativas? Como aceder ao Serviço de Certificação

Leia mais

P HC XL - Nem calcula o produto que temos para si...

P HC XL - Nem calcula o produto que temos para si... P HC XL - Nem calcula o produto que temos para si... Documento FAQs Poderão ser contemplados campos de utilizadores da ML? Essa possibilidade não existe. Os campos disponíveis são os campos base da tabela

Leia mais

III PROGRAMA DE ESTÁGIOS DE VERÃO AEFFUL

III PROGRAMA DE ESTÁGIOS DE VERÃO AEFFUL III PROGRAMA DE ESTÁGIOS DE VERÃO AEFFUL 1 Enquadramento O Gabinete de Estágios e Saídas Profissionais (GESP) tem o objectivo de estabelecer uma plataforma de comunicação entre estagiários e recém-mestres

Leia mais

OFICIAL DA ORDEM MILITAR DE CRISTO MEDALHA DE EDUCAÇÃO FÍSICA E BONS SERVIÇOS. Circular n.º 023-A/2014 Portal F.P.T. - Inscrições (Aditamento)

OFICIAL DA ORDEM MILITAR DE CRISTO MEDALHA DE EDUCAÇÃO FÍSICA E BONS SERVIÇOS. Circular n.º 023-A/2014 Portal F.P.T. - Inscrições (Aditamento) Circular n.º 023-A/2014 Portal F.P.T. - Inscrições (Aditamento) Exmo. Sr. Presidente, A Direcção da F.P.T. tem emitido, ao longo dos últimos meses, diversas Circulares, com o objectivo de ir informando,

Leia mais

Expresso Livre Módulo de Projetos Ágeis

Expresso Livre Módulo de Projetos Ágeis Expresso Livre Módulo de Projetos Ágeis Desenvolvedor / Orientador Rafael Raymundo da Silva Guilherme Lacerda Out / 2010 1 Sumário 1.Conhecendo a ferramenta...3 2.Gerência de projetos ágeis...3 2.1Product

Leia mais

A VISTA BACKSTAGE PRINCIPAIS OPÇÕES NO ECRÃ DE ACESSO

A VISTA BACKSTAGE PRINCIPAIS OPÇÕES NO ECRÃ DE ACESSO DOMINE A 110% ACCESS 2010 A VISTA BACKSTAGE Assim que é activado o Access, é visualizado o ecrã principal de acesso na nova vista Backstage. Após aceder ao Access 2010, no canto superior esquerdo do Friso,

Leia mais

Aprend.e Sistema integrado de formação e aprendizagem

Aprend.e Sistema integrado de formação e aprendizagem Aprend.e Sistema integrado de formação e aprendizagem Pedro Beça 1, Miguel Oliveira 1 e A. Manuel de Oliveira Duarte 2 1 Escola Aveiro Norte, Universidade de Aveiro 2 Escola Aveiro Norte, Departamento

Leia mais

Aplicação Administrativa de Gestão

Aplicação Administrativa de Gestão Aplicação Administrativa de Gestão DIAGNIMAGEM, Sociedade Unipessoal, Lda Clínica de Exames e Diagnósticos de Imagiologia A Empresa é constituída por 4 departamentos: Gerência (1) Administrativo/ Contabilidade

Leia mais

PHC dcontroldoc. O acesso a diversos tipos de ficheiros

PHC dcontroldoc. O acesso a diversos tipos de ficheiros PHC dcontroldoc O acesso a diversos tipos de ficheiros A possibilidade de consultar e introduzir documentos, imagens e outro tipo de ficheiros, a partir de um local com acesso à Internet. BUSINESS AT SPEED

Leia mais

Engenharia de Software

Engenharia de Software Engenharia de Software 2º Semestre de 2006/2007 Terceiro enunciado detalhado do projecto: Portal OurDocs ic-es+alameda@mega.ist.utl.pt ic-es+tagus@mega.ist.utl.pt 1. Introdução O terceiro enunciado do

Leia mais

Caracterização dos cursos de licenciatura

Caracterização dos cursos de licenciatura Caracterização dos cursos de licenciatura 1. Identificação do ciclo de estudos em funcionamento Os cursos de 1º ciclo actualmente em funcionamento de cuja reorganização resultam os novos cursos submetidos

Leia mais

Computadores Portáteis. Regulamento de utilização

Computadores Portáteis. Regulamento de utilização Computadores Portáteis Regulamento de utilização 1 Introdução Os computadores portáteis estão disponíveis para: a) a utilização individual e profissional por professores; b) a utilização por professores,

Leia mais

Relatório SHST - 2003

Relatório SHST - 2003 Relatório da Actividade dos Serviços de Segurança, Higiene e Saúde no Trabalho Relatório SHST - 2003 Programa de Validação e Encriptação Manual de Operação Versão 1.1 DEEP Departamento de Estudos, Estatística

Leia mais

II EDIÇÃO DO CONCURSO GESTÃO DE IDEIAS PARA ECONOMIZAR

II EDIÇÃO DO CONCURSO GESTÃO DE IDEIAS PARA ECONOMIZAR II EDIÇÃO DO CONCURSO GESTÃO DE IDEIAS PARA ECONOMIZAR APRESENTAÇÃO DO CONCURSO: O concurso Gestão de Ideias para Economizar representa uma oportunidade para os estudantes se prepararem, em pequenos grupos,

Leia mais

PLANIFICAÇÃO MODULAR ANO LECTIVO 2015 / 2016

PLANIFICAÇÃO MODULAR ANO LECTIVO 2015 / 2016 PLANIFICAÇÃO MODULAR ANO LECTIVO 2015 / 2016 CURSO/CICLO DE FORMAÇÃO Técnico de Eletrotecnia e Técnico de Gestão de Equipamentos Informáticos / 2015/2018 DISCIPLINA: Tecnologias da Informação e Comunicação

Leia mais

Um sistema SMS 1 simplificado

Um sistema SMS 1 simplificado 1 Introdução Um sistema SMS 1 simplificado Projecto de Redes de Computadores I - 2007/2008 LEIC IST, Tagus Park 10 de Setembro de 2007 Pretende-se com este projecto que os alunos implementem um sistema

Leia mais

Curso de Eng. Informática Linguagens de Programação. C Sharp University Data Processing. (C Sharp Universidade de Processamento de Dados) Docente:

Curso de Eng. Informática Linguagens de Programação. C Sharp University Data Processing. (C Sharp Universidade de Processamento de Dados) Docente: Trabalho elaborado por: Carlos Palma nº5608 Curso de Eng. Informática Linguagens de Programação C Sharp University Data Processing (C Sharp Universidade de Processamento de Dados) Docente: José Jasnau

Leia mais

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador>

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador> FACULDADE DE ENGENHARIA DE COMPUTAÇÃO PROJETO FINAL I e II PLANO DE TRABALHO O Trabalho de Conclusão de Curso (TCC) a ser desenvolvido

Leia mais

Gescom isales. Aplicação Mobile Profissional para Vendedores

Gescom isales. Aplicação Mobile Profissional para Vendedores Aplicação Mobile Profissional para Vendedores Indíce Introdução... 3 Aplicação... 4 Produtos... 4 Categorias... 4 Produtos... 5 Carrinho de Vendas... 6 Encomendas... 7 Clientes... 10 Sincronização... 11

Leia mais

SAFT para siscom. Manual do Utilizador. Data última versão: 07.11.2008 Versão: 1.01. Data criação: 21.12.2007

SAFT para siscom. Manual do Utilizador. Data última versão: 07.11.2008 Versão: 1.01. Data criação: 21.12.2007 Manual do Utilizador SAFT para siscom Data última versão: 07.11.2008 Versão: 1.01 Data criação: 21.12.2007 Faro R. Dr. José Filipe Alvares, 31 8005-220 FARO Telf. +351 289 899 620 Fax. +351 289 899 629

Leia mais

PLANEAMENTO DA INSTALAÇÃO DO WINDOWS SERVER 2003

PLANEAMENTO DA INSTALAÇÃO DO WINDOWS SERVER 2003 PLANEAMENTO DA INSTALAÇÃO DO WINDOWS SERVER 2003 1 PLANEAMENTO DA INSTALAÇÃO Instalar o Windows Server 2003 requer alguma preparação, devido à sua complexidade: Ao correr o programa de setup (configuração)

Leia mais

Cláusula 1.º Objecto. Cláusula 2.º Especificação da prestação

Cláusula 1.º Objecto. Cláusula 2.º Especificação da prestação CADERNO DE ENCARGOS CONTRATAÇÃO DE SERVIÇOS DE PARA A IMPLEMENTAÇÃO DE UM PROJECTO DE ARQUIVO DIGITAL DE INFRA-ESTRUTURAS DE IT O presente Caderno de Encargos compreende as cláusulas a incluir no contrato

Leia mais

Gestão Pessoal. Relatório Único. Manual preparação do software para o relatório único

Gestão Pessoal. Relatório Único. Manual preparação do software para o relatório único Gestão Pessoal Relatório Único Manual preparação do software para o relatório único Wincode, 30 Março de 2011 Introdução Este manual tem como principal objectivo ajudar o utilizador a preparar o software

Leia mais

O Manual do Desktop Sharing. Brad Hards Tradução: Pedro Morais

O Manual do Desktop Sharing. Brad Hards Tradução: Pedro Morais Brad Hards Tradução: Pedro Morais 2 Conteúdo 1 Introdução 5 2 O protocolo do Remote Frame Buffer 6 3 Utilizar o Desktop Sharing 7 3.1 Gerir convites do Desktop Sharing............................ 9 3.2

Leia mais

Referencial do Módulo B

Referencial do Módulo B 1 Referencial do Módulo B Liga, desliga e reinicia correctamente o computador e periféricos, designadamente um scanner; Usa o rato: aponta, clica, duplo-clique, selecciona e arrasta; Reconhece os ícones

Leia mais

Regulamento da Creditação

Regulamento da Creditação Regulamento da Creditação Por decisão do Director, ouvido o Conselho Técnico-Científico, é aprovado o presente Regulamento da Creditação, que visa disciplinar o processo de creditação, nos termos definidos

Leia mais

PHC dteamcontrol Interno

PHC dteamcontrol Interno O módulo PHC dteamcontrol Interno permite acompanhar a gestão de todos os projectos abertos em que um utilizador se encontra envolvido. PHC dteamcontrol Interno A solução via Internet que permite acompanhar

Leia mais

Múltiplos Estágios processo com três estágios Inquérito de Satisfação Fase II

Múltiplos Estágios processo com três estágios Inquérito de Satisfação Fase II O seguinte exercício contempla um processo com três estágios. Baseia-se no Inquérito de Satisfação Fase II, sendo, por isso, essencial compreender primeiro o problema antes de começar o tutorial. 1 1.

Leia mais

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS)

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS) Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS) Definição Geral: Disciplina de Compiladores Prof. Jorge Bidarra (UNIOESTE) A especificação de requisitos tem como objetivo

Leia mais

Faculdade de Ciências da Universidade de Lisboa CURSO DE GPS. Módulo x. (Aula Prática) Reliance - Ashtech. Suas Aplicações Em SIG.

Faculdade de Ciências da Universidade de Lisboa CURSO DE GPS. Módulo x. (Aula Prática) Reliance - Ashtech. Suas Aplicações Em SIG. Faculdade de Ciências da Universidade de Lisboa CURSO DE GPS Módulo x (Aula Prática) Reliance - Ashtech e Suas Aplicações Em SIG (Carlos Antunes) INTODUÇÃO O Sistema Reliance baseia-se na utilização do

Leia mais

Um Driver NDIS Para Interceptação de Datagramas IP

Um Driver NDIS Para Interceptação de Datagramas IP Um Driver NDIS Para Interceptação de Datagramas IP Paulo Fernando da Silva psilva@senior.com.br Sérgio Stringari stringari@furb.br Resumo. Este artigo apresenta o desenvolvimento de um driver NDIS 1 para

Leia mais

Introdução a listas - Windows SharePoint Services - Microsoft Office Online

Introdução a listas - Windows SharePoint Services - Microsoft Office Online Page 1 of 5 Windows SharePoint Services Introdução a listas Ocultar tudo Uma lista é um conjunto de informações que você compartilha com membros da equipe. Por exemplo, você pode criar uma folha de inscrição

Leia mais

ZS Rest. Manual Profissional. BackOffice Mapa de Mesas. v2011

ZS Rest. Manual Profissional. BackOffice Mapa de Mesas. v2011 Manual Profissional BackOffice Mapa de Mesas v2011 1 1. Índice 2. Introdução... 2 3. Iniciar ZSRest Backoffice... 3 4. Confirmar desenho de mesas... 4 b) Activar mapa de mesas... 4 c) Zonas... 4 5. Desenhar

Leia mais

Base de dados I. Uma base de dados é um simples repositório de informação relacionado com um determinado assunto ou finalidade

Base de dados I. Uma base de dados é um simples repositório de informação relacionado com um determinado assunto ou finalidade Base de dados I O que é? Uma base de dados é um simples repositório de informação relacionado com um determinado assunto ou finalidade Para que serve? Serve para gerir vastos conjuntos de informação de

Leia mais

PHC Serviços CS. A gestão de processos de prestação de serviços

PHC Serviços CS. A gestão de processos de prestação de serviços PHC Serviços CS A gestão de processos de prestação de serviços A solução que permite controlar diferentes áreas de uma empresa: reclamações e respetivo tratamento; controlo de processos e respetivos passos

Leia mais

Configuração do Ambiente de Trabalho

Configuração do Ambiente de Trabalho pag. 1 Configuração do Ambiente de Trabalho 1. Utilização da Área de Trabalho Criação de Atalhos: O Windows NT apresenta um Ambiente de Trabalho flexível, adaptável às necessidades e preferências do utilizador.

Leia mais

Processo do Serviços de Manutenção de Sistemas de Informação

Processo do Serviços de Manutenção de Sistemas de Informação Processo do Serviços de Manutenção de Sistemas de Informação 070112=SINFIC HM Processo Manutencao MSI.doc, Página 1 Ex.mo(s) Senhor(es): A SINFIC agradece a possibilidade de poder apresentar uma proposta

Leia mais

TECNOLOGIAS DE INFORMAÇÃO E COMUNICAÇÃO

TECNOLOGIAS DE INFORMAÇÃO E COMUNICAÇÃO TECNOLOGIAS DE INFORMAÇÃO E COMUNICAÇÃO ACCESS 2010 Conceitos Básicos Ficha Informativa Professor : Vanda Pereira módulo didáctico Conceitos Básicos Necessidade das base de dados Permite guardar dados

Leia mais

MANUAL DE PROCEDIMENTOS PLATAFORMA DE INSCRIÇÕES ONLINE

MANUAL DE PROCEDIMENTOS PLATAFORMA DE INSCRIÇÕES ONLINE A época de 2012/2013 terá um novo recurso para a Filiação e Inscrições em Provas para os Clubes, Equipas e Agentes Desportivos, tendo sido criada para o efeito uma nova Plataforma de Inscrições Online.

Leia mais

Análise de Sistemas. Conceito de análise de sistemas

Análise de Sistemas. Conceito de análise de sistemas Análise de Sistemas Conceito de análise de sistemas Sistema: Conjunto de partes organizadas (estruturadas) que concorrem para atingir um (ou mais) objectivos. Sistema de informação (SI): sub-sistema de

Leia mais

Folha de Cálculo (Excel)

Folha de Cálculo (Excel) Tecnologias de Informação e Comunicação Folha de Cálculo (Excel) Professor: Rafael Vieira. 1. Introdução à folha de cálculo o nome folha de cálculo atribuído a este tipo de programas, deve-se, principalmente,

Leia mais

Desenvolvimento de uma Aplicação WEB para monitorização de BD Oracle

Desenvolvimento de uma Aplicação WEB para monitorização de BD Oracle Desenvolvimento de uma Aplicação WEB para monitorização de BD Oracle Luís Filipe Borges Pinto Resumo: Este projecto consiste na implementação de uma aplicação WEB para monitorização

Leia mais

Trabalhos Práticos. Programação II Curso: Engª Electrotécnica - Electrónica e Computadores

Trabalhos Práticos. Programação II Curso: Engª Electrotécnica - Electrónica e Computadores Trabalhos Práticos Programação II Curso: Engª Electrotécnica - Electrónica e Computadores 1. Objectivos 2. Calendarização 3. Normas 3.1 Relatório 3.2 Avaliação 4. Propostas Na disciplina de Programação

Leia mais

GIAE VERSÃO 2.1.1 28 JUNHO DE 2011 MUITO IMPORTANTE

GIAE VERSÃO 2.1.1 28 JUNHO DE 2011 MUITO IMPORTANTE GIAE VERSÃO 2.1.1 28 JUNHO DE 2011 MUITO IMPORTANTE Devido a um bug detectado no motor da base de dados, situação agora corrigida pelo fabricante, esta nova actualização do GIAE é disponibilizada numa

Leia mais

Universidade da Beira Interior

Universidade da Beira Interior Universidade da Beira Interior Relatório Apresentação Java Server Pages Adolfo Peixinho nº4067 Nuno Reis nº 3955 Índice O que é uma aplicação Web?... 3 Tecnologia Java EE... 4 Ciclo de Vida de uma Aplicação

Leia mais

O Manual do ssc. Peter H. Grasch

O Manual do ssc. Peter H. Grasch Peter H. Grasch 2 Conteúdo 1 Introdução 6 2 Usar o ssc 7 2.1 Gerir os utilizadores.................................... 7 2.1.1 Adicionar um utilizador.............................. 8 2.1.1.1 Associar-se

Leia mais