Neste
tutorial vamos ver como o Flash pode receber dados de um banco de
dados que por questões de facilidade e que provavelmente todos têm
acesso à ele, será o Access. O objetivo é buscar uma listagem de nomes
e URLs de alguns sites que estão armazenados neste BDs, sendo que
as URLs destes sites estão formatadas com tags HTML. (As tags que
o Flash pode reconhecer). O middleware usado é o Coldfusion.
Porquê
o Coldfusion?
Boa
e importante pergunta: o Coldfusion possui um tempo de desenvolvimento
reduzido à aproximadamente 2/3 em relação às demais tecnologias, bem
como uma facilidade de uso e curto tempo de aprendizagem. Após testá-lo
durante 2 ou 3 dias e fazer algumas comparações com outras soluções,
resolvi adotá-lo como minha solução de middleware. Existe também o
fato da incorporação da Allaire pela Macromedia que só trouxe vantagens
no uso do Coldfusion, mas esta é uma opinião pessoal e acredito que
cada um deve tirar as suas próprias conclusões de acordo com gostos,
afinidades e necessidades.
Como
usar o ColdFusion?
Estou
considerando para este tutorial que a pessoa que o leia já tenha um
conhecimento básico do Coldfusion, porém resolvi abrir um pequeno
parágrafo aqui para falar sobre os requisitos necessários para se
usar o Coldfusion caso você ainda não o conheça.
Vamos começar este pequeno briefing com uma analogia com o ASP que
acredito que a maioria o conheçe : o ASP é uma pequena DLL que utiliza
o poder do IIS e funciona como o middleware e deste modo as instruções
passadas para o ASP são processadas em sua maioria via o IIS que também
é o webServer. (O assunto é bem mais complexo que isso, mas serve
como tempero). O Coldfusion também funciona em conjunto com um webServer,
mas ele também é um webServer. Como assim? Como o Coldfusion possui
um script proprietário que é o CFML - Coldfusion Markup Language,
ele usa o seu próprio webServer (Coldfusion Server) para processar
o que é específico do CFML e aproveita para deixar o IIS ou outro
webServer para processar o que é comum aos dois, como por exemplo
as variáveis CGI.
Então
preciso instalar o Coldfusion Server?
Sim,
mas não se assuste: atualmente existem algumas versões para o CF Server
sendo que uma delas é gratuita e é a que utilizo: o Coldfusion Express
que pode ser baixado no site da Allaire: http://www.allaire.com.
Como
instalá-lo?
O
procedimento de instalação é semelhante á qualquer pacote de software,
mas lembre-se que você precisa ter um webServer previamente instalado
e funcionando em seu computador : pode ser o IIS, PWS, Apache, etc.
Como
configurá-lo?
A
configuração básica para seu funcionamento já vem 'presetada', a única
coisa que você precisará fazer é criar um DSN, pois estaremos usando
um banco de dados neste tutorial.
Como
criar a DSN e o que é isso?
Quando
queremos acessar um banco de dados, seja com o Coldfusion, ASP, PHP,
etc precisamos nos conectar à este BDs primeiro. Existem vários modos
de se fazer esta conexão, via strings de conexão aonde você indica
o caminho físico até o arquivo do BDs ou via uma DSN - Data Source
Name onde você cria um 'alias' até o BDs, isto é, você indica o caminho
até este BDs, mas o acessa através de um nome(alias), deste modo você
oculta o caminho ao BDs. Existe uma grande controvérsia sobre qual
opção é melhor, pois muitos dizem que strings de conexões são mais
rápidas do que DSNs, mas isto é um outro assunto.
Para criar a DSN :
1.
menu Start
2. Coldfusion Express / Coldfusion Express Administrator
3. entre com a sua senha
4. escolha o ítem de menu 'ODBC'. A tela aonde você criará o DSN aparecerá
5. digite 'myDSN' para o Data Source Name, pois é este o nome que
utilizei
neste tutorial e click no botão 'ADD'
6. na tela seguinte click no botão 'Browse Server' do campo Data Base
File,
um tipo de Explorer aparecerá aonde você irá direcionar até o local
onde
se localiza o arquivo 'db1.mdb'. Click 'OK' e retorne a tela inicial.
7. pronto, seu DSN está criado e toda vez que você quiser abrir o
BDs
em um arquivo CFM, isto será feito ao se referir à esta DSN.
Aonde
codificar em CFML?
CFML
é texto puro, então podemos usar um Notepad, mas o Coldfusion possui
um editor específico chamado Coldfusion Studio. Alternativamente você
pode usar o Homesite ou o Ultradev que possui extensões e um dicionário
CFML. Já testei todos e na minha opinião o Coldfusion Studio é o melhor.
Finalmente estamos prontos para iniciar o tutorial e para facilitar
o entendimento vamos dividir o processo em etapas:
Primeira
Etapa.
Vamos
analisar o Banco de Dados e sua informação:
o
arquivo do BDs chama-se db1.mdb.
Ele
é formado por uma tabela chamada 'favorites' que contém os campos
id, name e url, sendo id a chave primária e name e url campos de textos.
O campo 'name' receberá o nome do site e o campo 'url' receberá o
link para este site e estará formatado com tags HTML. Exemplo:
A
fig01 mostra um screenshot da tabela favorites do banco de
dados db1.mdb :
Lembrando
que a tag HTML <u> é o underline, a tag <a href="link">
é a que cria o link sendo o atributo Target='_blank' responsável por
abrir este link em uma nova página do Browser. Portanto todos os registros
desta tabelas são construídos de forma análoga.
Segunda Etapa.
Vamos
analisar o arquivo Coldfusion que vai pegar as informações contidas
no BDs e enviá-las ao Flash. Abaixo temos a listagem do código do arquivo
favorites.cfm:
Listagem
do código do arquivo: favorites.cfm
">
Este
comando exclusivo da linguagem CFML do Coldfusion garante que somente
informações entre as tags </CFOUTPUT> são
mostradas.
Nesta
etapa é feita a conexão com o BDs através da DSN
= myDSN. Através do uso da linguagem SQL utilizamos um Select
para selecionar os campos 'name e url' da tabela 'favorites' e ordenamos
a saída por 'name'. Neste momento o Coldfusion já está
apto para enviar as informações contidas no BD, porém
se criássemos uma variável, por exemplo : var01 para receber
a dupla 'name e url' teríamos a seguinte situação:
<cfquery>
lê o primeiro registro da tabela 'favorites' e joga a informação
à variável var01. <cfquery> lê o segundo
registro e torna a jogar a informação na mesma variável
var01.
E a cada leitura de <cfquery> a variável var01 é
sobre-escrita e no final da leitura de toda a tabela somente o último
registro estaria armazenado em var01.
Para resolver este problema podemos armazenar todos os registros de
'favorites' em um vetor e depois passá-los para uma 'list' é
assim teremos todos os registros de uma só vez.
<CFSET
myArray = ArrayNew(1)> : é o constructor para o nosso
array.
<CFLOOP
query="resultsQRY">: é um loop para que a nossa
query percorra todos os registros do BDs e os armazene no array
A
variável 'flag' : se flag for 0 nosso array receberá o
registro com a cor de texto default(preto) e se flag for 1 a cor do
texto será um Azul Claro. Desta forma ao apresentarmos todos
os registros no Flash, eles serão intercalados entre as cores
preto e azul facilitando a leitura para o cliente.
Uma
vez terminado o loop passamos todo conteúdo do array para uma
'list' sendo que as tags "<p></p><p></p>"
são usadas para fazer a quebra de linha entre um registro e outro
e finalmente passamos esta 'list' para o Flash. As variáveis
CFresponse e CFfavs serão explicadas na etapa a seguir que é
a análise do que acontece no arquivo Flash.
Terceira
Etapa
Finalmente
vamos ver o que o Flash deve fazer para receber estas informações.
Primeiramente vamos verificar os objetos utilizados no arquivo 'favorites.fla'
Este
arquivo Flash possui 3 movieClips:
txtField
mc: possui um campo de texto dinâmico chamado 'records' que receberá
o conteúdo do BDs. Ver fig02 abaixo :
scroller
mc: que fará o scroll do conteúdo.
loading
mc: usado durante o processo de recebimento dos dados, que pode
levar algum tempo dependendo do congestionamento do BDs ou da conexão
Internet. Este movieClip serve como um sinal visual ao cliente de
que as informações estão sendo processadas e a parte mais importante
está no final da timeline deste mc onde é feito a verificação se os
dados já foram recebidos e caso positivo são mostratos no campo de
texto dinâmico do MC txtField e o MC loading é descarregado do stage.
A fig03 abaixo ilustra este caso:
É
justamente aqui que aquelas variáveis no final do código do arquivo
coldfusion entram em ação:
Note
que o MC loading tem o seguinte código:
Se
o Flash recebeu a variável Coldfusion 'CFresponse=ok' então está garantido
que o conteúdo do BDs também foi recebido e como este conteúdo está
armazenado na variável 'Cffavs' que recebeu o conteúdo da 'list' devemos
passar este conteúdo para o campo de texto dinâmico chamado 'records'
que está no MC txtFields : _root.txtField.records = _root.CFfavs.
E após isto podemos remover o MC loading do stage completando assim
o processo.
Por último vamos verificar os comandos que estão na timeline principal
no frame1 da layer actions. A fig04 ilustra esta etapa:
Como o código acima está no frame1, no momento
que o arquivo 'favorites.fla/swf' é executado o arquivo Coldfusion
'favorites.cfm' é chamado através da função loadVariablesNum utilizando
o método POST que envia e recebe dados através de um http separado.
(GET enviaria as variáveis via URL). Ao ser chamado, 'favorites.cfm'
processará todo seu código (já analisado na segunda etapa), ao mesmo
tempo anexamos ao stage do Flash o movieClip 'loading' (cuja função
já foi discutida) e também anexamos ao stage o MC 'txtField' que
receberá os dados provenientes do banco de dados. Deste modo chegamos
ao final do processo.
Conclusão.
A
noção de actionScript necessária para integrar o Flash com Banco
de Dados é relativamente simples, ficando a parte mais pesada no
lado servidor. Esta é somente uma aplicação dentre inúmeras que
podemos fazer para integrar o Flash com banco de dados e scripts
server-side, mas creio que é o suficiente para você ter uma idéia
do poder do Flash em relação à integrações à tecnologias externas.
Lembre-se que usamos também a formatação dos dados com tags HTML
que não deixa de ser um tipo de integração do Flash.
Onde
posso aprender mais sobre ColdFusion?
Existe
uma grande literatura sobre Coldfusion. No Brasil atualmente existem
uns 4 livros sobre Coldfusion sendo que para quem está começando
eu indicaria o livro chamado : Coldfusion - A Ferramenta Profissional
para a Criação de Páginas Dinâmicas, da Editora Érica e do autor
: Wanderlei Cristiano A. Souza. É um livro bem básico, mas bom para
começar. E utilizar o help do Coldfusion Studio que é completo e
muito bem elaborado.
Mais uma vez vale lembrar que no meu site: www.kencwb.com
você pode encontrar mais exemplos e também em www.flashcfm.com
que é um portal especializado em integração Flash e Coldfusion.
Devido à reformulação implementada no site, pode ser que você encontre alguns links quebrados. Por favor, ajude-nos a corrigir eventuais problemas nos informando links quebrados