camilo carromeu [email protected]. sumário histórico o framework arquitetura características...
TRANSCRIPT
Sumário Histórico O Framework Arquitetura Características Instanciando Conceitos
Sistema de SegurançaÁrvore de DiretóriosArquivos de Configuração
Customizando Titan Roadmap
Em DesenvolvimentoFuncionalidades Futuras
Documentação
Histórico Desenvolvido no Laboratório de Engenharia
de Software (LEDES / DCT / UFMS)Desde 2004, mas somente em meados de 2007
assumiu caráter de um projeto colaborativo Necessidade de um framework em PHP que
possibilitasse reaproveitamento de código e, assim, rápida instanciação de portais institucionais com requisitos semelhantes
Requisito: fácil manutenção e extensibilidade
Histórico Atualmente é utilizado em diversos projetos do
LEDES e do NIN/UFMS:Projeto Medusa
○ DCT○ DEA○ PROPP○ PREAE○ etc
Escola de ConselhosPAIRProjeto e-SAPIProjeto ColosusSIADetc
O Framework
O Titan é um framework para geração de CMSs (Content Management Systems)
Possibilita a construção de sistemas CRUD através da simples configuração de XMLs ou de sistemas complexos através do uso de sua API
Reproveitamento de código e de configurações
Arquitetura: Seções e Ações Conceito lógico de navegação:
Seções: Área com contexto definido.○ Ex.: notícias, agenda, contato, etc
Ações: Define uma ação que pode ser executada em uma seção.○ Ex.: criar, editar, apagar, listar, etc
Seções podem ser organizadas visualmente em um conceito de pais e filhosSeções-falsas (fake) podem ser criadas
Arquitetura: Componentes e Engines
Define a arquitetura física Código fonte executável que,
devidamente configurado, instancia uma seção
Um componente pode gerar diversas seções similares em uma aplicaçãoXML + Entidades SQL
Componentes estão para seções assim como engines estão para ações
Arquitetura: Componentes e Engines Dentro do componente, que é uma
pasta, estão as engines Cada engine é um conjunto de 3
arquivosprepareviewcommit
Objetivo: separar a visualização da camada de negócios (MVC)
Arquitetura
Núcleo (Core) independente e imutável em função de instânciasDesenvolvimento e aprimoramento
constante, mas legado Repositório:
1. Componentes
2. Tipos
3. Templates de código
4. Skins
5. Packages
Arquitetura
Camada de PersistênciaCamada de Persistência
Repositóriode Componentes
Repositóriode TiposCamada de
Segurança
Núcleo Repositório
Log Chat
CV Skins
Gráficos RSS
Arquitetura
XMLXML
Camada de PersistênciaCamada de Persistência
Repositóriode Componentes
Repositóriode TiposCamada de
Segurança
Núcleo Repositório
SQL
Log Chat
CV Skins
Gráficos RSS
Arquitetura
XMLXML
XMLXML
Camada de PersistênciaCamada de Persistência
Repositóriode Componentes
Repositóriode TiposCamada de
Segurança
Núcleo Repositório
SQL SQL
Log Chat
CV Skins
Gráficos RSS
Arquitetura
XMLXML
XMLXML
XMLXMLCamada de PersistênciaCamada de Persistência
Repositóriode Componentes
Repositóriode TiposCamada de
Segurança
Núcleo Repositório
SQL SQL SQL
Log Chat
CV Skins
Gráficos RSS
Características Listas com:
BuscaPaginaçãoOrdenação
Sistema de upload de arquivos completo Criação de páginas ricas (FCK) RSS para monitoramento Sistema de Cache (XMLs parseados) Chat Gráficos quantitativos automáticos Uso extensivo de XML
Cache para performance
Características
Controle de versões Criação de repositórios privados
Permite a criação de seus próprios componentes, tipos e templates
Sistema de alertas Sistema de Log Ajax Totalmente OO (PHP 5) Lançamento de exceções para controle
de regras de negócios, validação e erros
Instanciando Para tudo! Instanciando sua primeira
aplicação:1. Criar uma pasta no seu “htdocs” do Apache
2. Criar as seguintes pasta dentro desta:○ core/○ repos/○ file/○ cache/
3. Fazer checkout do núcleo do Titan na pasta “core”:
○ https://service.ledes.net/svn/architect/core/
4. Repetir o procedimento para o repositório do Titan na pasta “repos”:
○ https://service.ledes.net/svn/architect/repository
Instanciando
5. Exportar código-base para a pasta criadao https://service.ledes.net/svn/architect/repository/
component/architect.creator/_base/basic/
6. Criar BD a partir do db.sql do código-base
7. Editar o arquivo “configure/titan.xml” de acordo com as configurações locais
8. Executar a instância:o http://localhost/my_instance/titan.phpo Criação de cache (necessita de internet)o Login: admin / Senha: admino Configuração de grupos e permissões
Conceito: Sistema de Segurança Controle de navegação Tipos de usuários:
Definição de metadados de usuários Grupos de usuários:
Recebem permissõesUsuários herdam as permissões por união de
conjuntos de todos os grupos aos quais estão vinculados
Administrador (conceito): usuários pertencentes a algum grupo administrador possuem acesso irrestrito às seções marcadas com admin=“true” no business.xml
Conceito: Árvore de Diretórios Diretórios e arquivos:
Configuração (mandatório): configure/Seções (mandatório): section/Upload: file/Cache: cache/Inicializador: titan.php
Banco de Dados:Colunas mandatóriasTrabalhando com esquemas
Conceito:Arquivos de Configuração
Configuração Geral:Principal: titan.xmlCamada de negócios: business.xmlTipos de usuários: security.xmlArquivos aceitos (upload): archive.xml
Configuração de Seções:config.inc.xmlFormulários (padrão)
Customizando a Aplicação Básico
Instanciando seçõesInstanciando açõesInstanciando tipos de usuários
AvançadoImplementando componentes
○ Diretórios: _script, _menu, _icon, _resource, _i18n
Implementando engines (motores)Implementando tipos
Em Desenvolvimento
LocaleInternacionalization (i18n)Localization (l10n)
Sistema de Log (SQLite) Titan Desktop Sistema de Atualização (Subversion) Suporte a pacotes PHAR Titan Architect Wizard Centauro (Pantaneiro)
Novas Funcionalidades
Geração de cache HTML Interoperabilidade de instâncias através
de webservices Titan Mobile Sistema de busca global (Lucene) Suporte a bibliotecas JAR API para uso externo Integração do PHPDocumentor
Documentação
Wiki do Titan em http://wiki.ledes.net/ Paradigma de desenvolvimento de
software livre: baseado no conceito de comunidade
Lista de discussão:http://groups.google.com.br/group/titan-framework
“Nada melhor do que um programador preguiçoso. Você usa
coisas que já estão prontas e tudo fica mais simples”Vinton Cerf
Evangelista-chefe de internet do Google.