Professional Documents
Culture Documents
3ULPHLURSDVVR&RQVWUXLQGRD$QiOLVH
&ULDQGRXPDQRYD$QiOLVH
cuidadosamente
desenhada, visando facilitar ao
mximo
a
interao
do
programador com a ferramenta.
Na janela de componentes,
escolha o cone $QDO\VLV.
Ser aberto um $VVLVWHQWH GH
&ULDomR GH $QDO\VLV, onde,
passo a passo ser definido
como criar a modelagem dos
dados do nosso projeto.
:LQGHY3ULPHLURVSDVVRV
continuar o processo de Modelagem dos dados e acessar a prxima tela do
Assistente.
Nesta segunda tela vamos definir o nome
da nossa anlise e o diretrio onde ela
ser gravada. Preenchemos o campo
1DPH com a expresso 3ULPHLUR
indicando ser este o nosso primeiro
projeto,
de
muitos
que
vamos
desenvolver.
Em seguida, definimos o diretrio onde
nossa Modelagem ser gravada. No
nosso exemplo, preenchemos o campo
'LUHFWRU\ com a expresso:
&?0\3URMHFWV?3ULPHLURZG?
Na realidade informamos ao Assistente que desejamos que a nossa
Definio de Dados seja gravada no diretrio 0\3URMHFWVda unidade &, abaixo
de 3ULPHLURZG
No ltimo campo, (um campo multi-linhas), podemos inserir observaes sobre a
Anlise que estamos criando.
Fizemos uma observao caracterstica,
informando ser esse o nosso primeiro projeto. Clique no boto 1H[W!! para
passar para a prxima tela.
Esta terceira tela do Assistente, permite
configurar uma senha , para a nossa
Anlise, isto , se o &KHFN ER[!!
$QDO\VLVZLOOEHSDVVZRUGSURWHFWHGLQ
H[HFXWLRQ for marcado, sero habilitados
os campos para digitar e confirmar uma
senha para a Anlise, em tempo de
execuo.
Tomar cuidado com esta
senha, pois conforme mensagens que
observamos no frum da linguagem,
esquecer esta senha pode trazer srios
aborrecimentos. Se uma senha for habilitada sempre que a Anlise for aberta, a
senha ser solicitada. No vamos usar senha na nossa Anlise de Exemplo.
Na tela 4 do Assistente onde ser feita
a criao do arquivo. Voc ir optar por
criar um novo arquivo de anlise,
Selecionar um arquivo de anlise
previamente
gravada
ou
Importar
arquivos de uma base externa. Quando
se trabalha com SQL utilizamos a opo
,PSRUW ILOHV IURP DQ H[WHUQDO GDWDEDVH
(Importar os arquivos de uma base
externa) . Essa opo permite importar
dados do SQL Server, Oracle, AS/400,
OLE DB, XML, Text, etc...
:LQGHY3ULPHLURVSDVVRV
Clique no boto 1H[W!! para continuar. Em seguida, na prxima tela, ser
aberta a caixa de dilogo 'DWD6RXUFH6HOHFWLRQ, que nos permite escolher uma
fonte de dados.
Trs botes de rdio oferecem as opes:
External Database
HyperFile 7
HyperFile 5 ou 4
A 2a. e a 3a. opes so utilizadas com
arquivos do tipo ISAM, ou seja, os
arquivos proprietrios do Windev. Para
trabalhar com SQL (Oracle, SQLServer, e
semelhantes) utilizamos a primeira opo
([WHUQDO'DWDEDVHV.
O &KHFN ER[!! )LOH 6WUXFWXUH DOUHDG\ LPSRUWHG utilizado somente com
tabelas HyperFile.
Clique no boto 1H[W!!para ir prxima tela.
A prxima janela a janela de migrao de dados 'DWDPLJUDWLRQ.
Nesta janela iremos definir a forma como
os dados sero utilizados. Se forem
usados no formato em que se encontram,
no caso das tabelas SQL ou se sero
convertidos para HyperFile 7.
A converso para HyperFile 7 s
recomendada quando se convertem
dados de outros arquivos ISAM
e
se
deseja manter o padro ISAM.
Com tabelas SQL mantemos os dados no
formato em que se encontram. Clique no
boto 1H[W!! para prosseguir.
A janela aberta a seguir, o local ideal
para configurar a forma como os dados
sero acessados. O tipo de acesso
definido no campo Type, definido como
2'%& $FFHVV YLD 2/('%. A fonte de
dados definido como 3RVWJUH64/, a
partir de um drop list que nos permite
escolher entre as fontes registradas no
nosso sistema. No campo User name
preencha o nome do usurio do seu
banco, ou o usurio padro do
PostgreSQL, como foi feito na nossa tela.
Se for especificada uma senha para o banco, esta dever tambm estar
especificada na conexo ODBC previamente criada.
Se a senha for preenchida, toda vez que o banco for acessado ela ser solicitada
ao o operador ou dever ser passada via linha de cdigo.
:LQGHY3ULPHLURVSDVVRV
:LQGHY3ULPHLURVSDVVRV
Ao terminar o processo de importao ser exibido o diagrama de tabelas
importada para que se possa definir as chaves, relacionamentos e outros ajustes
do Banco.
Cada uma das tabelas setadas para importao nas telas anteriores ser colocada
como um objeto de banco de dados no Editor de Modelagem, de forma que se
pode alterar nesta estrutura visual, todas as propriedades da Modelagem. Na
figura acima, esto presentes algumas particularidades interessantes do
Modelador de dados do Windev.
<= Um campo numrico (integer) apresentar um
identificador numrico (123) no lado esquerdo de sua
definio.
<= Identifica um campo do tipo Date. Um campo do tipo Data
um campo tipo data real, no uma estrutura grupo como
acontece em algumas linguagens.
<= A seqncia (ABC) identifica um campo do tipo string, ou
um campo multilinhas, normalmente conhecido como campo
texto.
'HILQLQGRDVFKDYHVGDVWDEHODVLPSRUWDGDVQR0RGHODGRUGH
'DGRV
:LQGHY3ULPHLURVSDVVRV
Cada elemento do objeto apresentado com as suas caractersticas.
Na parte superior da tela um drop combo permite selecionar uma outra tabela
diferente daquela que foi inicializada com o duplo clique, se for de interesse do
operador.
Para cada campo apresentado na estrutura do arquivo (mostrado no list box
superior) apresentado um conjunto de 4 guias na parte inferior onde so
mostradas as propriedades. Na guia *HQHUDO so definidos o formato, o tamanho,
o valor default e se o campo ser NULL por default. No canto inferior direito de
cada campo h um grupo de botes de rdio .H\ para definir se o campo chave,
se chave nica ou chave com permisso de duplicao. Se desejar atribuir ao
campo selecionado a condio de chave nica clique no boto de rdio 8QLTXH
.H\. No campo Format voc pode escolher um dos formatos existentes ou definir
uma mscara de entrada de dados personalizada.
A guia 5DG*XL permite definir as caractersticas do campo que sero utilizadas
pelo RAD no momento da gerao da aplicao. As caractersticas definidas aqui
sero aplicadas aos itens definidos na caixa de opes ,WHPLQFOXGHGE\UDG no
lado direto da tela.
:LQGHY3ULPHLURVSDVVRV
Um drop combo permite especificar diversas qualificaes e propriedades
adicionais ao controle associado com o campo. Quanto mais especfico for o nvel
de especializao definido aqui, mais completo ser o controle criado pela
ferramenta RAD na hora da gerao do aplicativo.
Na caixa GURSOLVW!! voc poder definir o tipo de controle que ser criado para
a linha da tabela.
Existem diversas opes para
controles, e se um deles for
escolhido, diferente de 'HIDXOW
&RQWURO , a partir do boto ser
possvel definir configuraes
adicionais, inclusive sobre os
idiomas que sero utilizados no
projeto. Nesta fase, o ideal
deixar como 'HIDXOW &RQWURO, e
definir as propriedades mais tarde
no projeto, com um nvel de detalhamento maior e de acordo com as
necessidades do momento de programao.
A guia 1RWHV permite associar notas explicativas ao campo.
:LQGHY3ULPHLURVSDVVRV
Para encerrar as definies pressione o boto 9DOLGDWH!!.
Como foi visto acima, definir uma chave muito simples, basta marcar se o campo
chave ou no.
&RPRFULDUXPDFKDYHFRPSRVWD
Ser aberta a caixa &RPSRVLWH .H\ mostrando novamente duas tabelas, com a
tabela do lado esquerdo mostrando os campos e a tabela do lado direito que
receber os componentes da chave. O boto permite inserir um componente na
chave enquanto o boto retira um elemento da chave. Segundo o manual
tcnico da PCSOFT, o ideal que o campo chave nica da chave composta seja o
ltimo a ser includo, aperfeioando sensivelmente o nvel de validao dos
campos para tabelas SQL.
8
:LQGHY3ULPHLURVSDVVRV
Clique no boto 2N!! para confirmar a criao da chave composta.
Clique no campo que contm o nome da chave para alterar o nome para aquele
que voc desejar (por uma questo de padronizao dos nos de chave, por
exemplo). A chave ser criada como .H\ ZLWK 'XSOLFDWHV. Para transform0la
em uma chave nica, clique no boto de rdio 8QLNH.H\. Observe que foi criado
um cone com duas chaves com um sinal de + entre elas.
Assim que a chave for criada o boto (GLW!! estar disponvel para que as
propriedades da chave composta sejam alteradas.
:LQGHY3ULPHLURVSDVVRV
'HILQLGRRVUHODFLRQDPHQWRV
10
:LQGHY3ULPHLURVSDVVRV
Each empresas has at least one grupo
Cada empresa tem pelo menos um grupo -> est marcado como No
Each empresa can have several grupos
Cada empresa pode ter diversos grupos -> est marcado como No.
Esta combinao de opes determina o relacionamento 1 para muitos.
Pressione no boto 1H[W!!
:LQGHY3ULPHLURVSDVVRV
respeito forma como o sistema ir gerenciar as operaes de Incluso, Alterao
e Excluso de registros.
Para cada opo crtica das regras de integridade referencial com relao ao
grupo, h um controle drop com as opes. A regra para excluso apresenta as
seguintes opes:
A regra mais utilizada
a que probe a excluso
de um grupo enquanto
existir ao menos uma
empresa
nele.
Esta
opo
evita
o
aparecimento de registros no arquivo de empresa quando se deleta um grupo.
A
regra
para
modificao,
alterao
do campo grupo,
apresentada ao lado,
sendo que a mais
utilizada aquela em
que quando se modifica o grupo no arquivo pai, todos os campos de grupo ligados
no arquivo filho sero modificados.
Pressione o boto 'RQH!! na ltima tela para terminar a definio dos
relacionamentos.
Os relacionamentos para todas as tabelas so feitos sempre partindo da tabela
me para a tabela filha, onde a chave de ligao na tabela me sempre ser uma
12
:LQGHY3ULPHLURVSDVVRV
chave nica, enquanto na tabela filha a chave ser uma chave com duplicao
permitida. O diagrama de entidades mostrado abaixo:
Clique no boto Generate Analysis para gerar e gravar a anlise do seu projeto.
Podemos dizer que o processo de gerao da Anlise, ou melhor, a Modelagem
dos Dados foi concluda. A prxima etapa neste nosso manual Passo a Passo, diz
respeito construo de um aplicativo
completo utilizando a ferramenta de gerao
RAD
do
Windev.
Embora
cada
elemento/objeto do projeto Windev possa ser
gerado separadamente, a ferramenta RAD
permite
gerar
uma
aplicao
intera
rapidamente e de forma quase que
automtica.
13
:LQGHY3ULPHLURVSDVVRV
6HJXQGR3DVVR5$'
Vamos agora gerar a nossa primeira aplicao com o Windev. Ser uma
aplicao simples utilizando os recursos RAD do Windev 8.
A partir da interface IDE do Windev, escolha
no menu )LOH a opo 1HZ para criarmos um
novo projeto. No Windev, como voc j deve
ter notado, cada elemento do projeto
armazenado em lugares especficos, as
anlises, os projetos, os executveis, e assim
por diante, como convm um verdadeiro
ambiente de desenvolvimento.
Quando clicamos na opo 1HZ a caixa de elementos do
projeto aberta.
Nesta caixa escolha 3URMHFW para dar incio construo de um
novo projeto. Um Assistente de criao de projetos iniciado
para que as principais caractersticas do novo projeto sejam
definidas.
O Projeto agrupa os diversos elementos que compe uma
aplicao e o assistente ir fazer algumas perguntas para
definir o projeto.
medida que estas perguntas vo sendo respondidas pelo
desenvolvedor, isto, os campos das janelas do Assistente vo sendo
preenchidas, o projeto vai sendo montado.
A primeira janela basicamente faz uma explicao rpida de como o projeto ser
gerado. Clique no boto 1H[W!! para ter acesso segunda janela do
Assistente.
Preencha o primeiro campo desta tela,
com o nome do seu Projeto. Para o nosso
exemplo, preenchemos com primeiro
(indicando, ser este o nosso primeiro
projeto). Os demais campos desta tela
so preenchidos automaticamente pela
ferramenta com base naquilo que voc
digitou para o primeiro campo. Entretanto,
voc pode modificar estas informaes
simplesmente editando as partes que lhe
interessarem. Por exemplo, se quiser dar
um nome mais pomposo para o seu projeto, ou se quiser mudar o nome do
diretrio de armazenamento do mesmo. Em seguida pressione 1H[W!! para
passar prxima janela.
Em seguida iremos definir a Anlise utilizada pelo projeto. Um projeto no precisa
necessariamente de uma anlise. Entretanto, o nosso projeto far uso da anlise
que definimos anteriormente. Preencha o campo 8VH H[LVWLQJ DQDO\VLV EHORZ
(use uma das anlises existentes abaixo), escolhendo uma das exibidas pela
caixa GURS GRZQ!! ou escolha na rvore de diretrios utilizando o boto
!! .
14
:LQGHY3ULPHLURVSDVVRV
Todos os dados e definies da anlise que elaboramos no primeiro passo deste
manual, sero agora incorporados ao nosso projeto.
Clique no boto 1H[W!!
Ser aberta uma janela para escolha do
template. O conceito de template utilizado
pelo Windev, diferente do conceito
utilizado pela Linguagem Clarion ou
mesmo pela linguagem Visual Basic.
Template, no caso do Windev refere-se
um conjunto completo de elementos
visuais que comporo um projeto ou
mesmo uma janela do seu aplicativo. O
Windev vem com diversos templates e
voc tem a possibilidade de criar outros templates que comporo os temas visuais
do seu projeto.
Voc pode escolher um dos templates existentes navegando pelos botes e
da janela de seleo de templates.
Para o nosso projeto escolhemos o
template Eiao, apenas para termos uma
interface diferente.
Clique no boto 1H[W!! .
A prxima janela um dos recursos
interessantes do Windev, a possibilidade
de
se
construir
um
aplicativo
multilinguagem, ou seja, no nosso caso,
vamos construir um aplicativo em ingls,
espanhol e portugus, onde o portugus
ser o idioma padro.
Ao lado de cada bandeira com a
descrio do pas, marque o FKHFN
ER[!! correspondente ao pas ou pases
desejados. Aps definir o pas, pelo
GURSOLVW!! escolha o idioma padro. No
caso do nosso projeto, ser o portugus
do Brasil.
A prxima janela a janela onde iremos
definir se queremos que a nossa
aplicao ao ser gerada gere tambm os
montadores para a plataforma dot net.
Como este o nosso primeiro projeto, no vamos usar os montadores dot net.
Clique no boto 1H[W!! para configurar se o nosso aplicativo ir utilizar os
servios de um servidor XML da Web. Marque 'RQW XVH ;0/ e clique no boto
1H[W!! . O Windev permite que um projeto seja desenvolvido em equipe, isto
, diversos desenvolvedores podero acessar e desenvolver no mesmo projeto
residente em um diretrio servidor. Para habilitar este recurso o desenvolvimento
deve ser setado na prxima janela. Para este projeto inicial, marque ,ZLOOZRUNRQ
P\RQ, para que o projeto seja um projeto de desenvolvimento individual.
15
:LQGHY3ULPHLURVSDVVRV
Na etapa seguinte, a interface do assistente ir ler todos os dados da anlise e
todas as definies feitas por ns at o momento e ir iniciar a fase de gerao do
aplicativo. Ao terminar a gravao das definies ser apresentada a janela de
opes de gerao.
As opes so para a
gerao completa de um
aplicativo
usando
a
ferramenta RAD, Criar uma
Janela, ou acessar o Editor
do Windev.
No caso do nosso exemplo
escolha a opo )XOO
$SSOLFDWLRQ5$'.
Quando clicamos no boto
RAD
o
assistente
de
Gerao RAD ser aberto
trazendo novamente um
passo a passo para criao
assistida do projeto.
A primeira tela basicamente informa o que ser feito e disponibiliza a aplicao
para ser usada como framework para o desenvolvimento.
Aps o boto 1H[W!! o
gerador abre a escolha do
tipo
de
interface.
As
aplicaes mais consagradas
pelo uso, so as que utilizam
interface MDI, sendo portanto
aconselhvel o uso da
interface MDI no nosso
projeto. A interface MDI o
tipo de interface que permite
que mltiplas janelas sejam
abertas ao mesmo tempo
utilizando os conceitos de
interface de threads e janelas
livres.
Escolha a opo MDI (Multi Document Interface).
Clique no boto 1H[W!! e na prxima janela faa as escolhas do tipo de cdigo
a ser gerado entre as opes 3URFHGXUDO e 2EMHFWHG2ULHQWHG3URJUDP. Quando
se usa o 3URFHGXUDO, na realidade muito mais OOP do que pensamos. Deixe
marcada a opo 3URFHGXUDO. Em seguida escolha o tipo de usado a ser usado
escolhendo para o nosso caso 64/ FRGH LQVWUXFWLRQV e marque o FKHFN
ER[!! With authomatic update.
Confirme o template a ser utilizado e clique no boto 1H[W!! . Na prxima
janela defina a resoluo das janelas para qual ser gerado o sistema. Escolha
800 x 600 pixels, marque o FKHFN ER[!! Proportional Scroll Bar e marque o
boto de rdio $UUDQJHWKHFRQWUROVLQFROXPQV
16
:LQGHY3ULPHLURVSDVVRV
Clique em seguida no boto 1H[W!!.
Ser exibida a janela com os arquivos que sero usados pela ferramenta RAD.
Aqui eventualmente um dos arquivos pode ser retirado da gerao, se for de
interesse do desenvolvedor.
Clique em seguida no boto 1H[W!!.
Neste momento o Windev ir processar a
gerao do aplicativo. Dependendo do
tamanho do seu aplicativo este processo
poder demorar um pouco.
Finalmente o seu projeto ser gerado.
Uma rvore grfica com todas as
entidades ser mostrada. No caso do
nosso projeto a figura abaixo mostra
apenas parte do projeto . Um controle de
zoon permite mudar o ngulo da viso dos
elementos de forma que se possa ter um geral do app.
Depois que a rvore do projeto
montada voc pode navegar por elas
para acessar cada um dos objetos
criados pelo RAD com um duplo clique
sobre ele. Ao clicar sobre o objeto
este ser aberto e o desenvolvedor
ter acesso s suas principais
propriedades. Para compilar o projeto
e ver como que ele roda clique no
boto Go da barra de tarefas. Pronto,
se voc seguiu o passo a passo
corretamente sua aplicao ser
executada.
,PSRUWDQWH
Se os relacionamentos forem definidos adequadamente na anlise, a
ferramenta RAD gerar todos os elementos necessrios ao seu projeto de uma
forma que o seu trabalho manual ser bastante simplificado.
$MXVWDQGRRFyGLJR5$'
0DQLSXODQGR0HQXV
O RAD gera os menus dispostos horizontalmente na Barra de Menus.
Entretanto queremos dispor os menus verticalmente de acordo com as reas de
interesse do Sistema.
Clique na Barra de Menus com o boto direito do mouse, e no menu PopUp que
se abrir escola $''. Digite um nome para o seu novo menu, por exemplo,
&DGDVWURV%iVLFRV e tecle <Enter> . Ser criada uma nov a opo de Menu com
17
:LQGHY3ULPHLURVSDVVRV
o nome escolhido por voc. Clique com o boto direito do mouse na opo
&DGDVWURV %iVLFRV que voc acabou de criar e no menu PopUp que aparecer
escolha a opo Insert Submenu. D um nome qualquer para este tem.
Agora vamos copiar as opes dos outros Menus, para os nosso &DGDVWUR
%iVLFR.
V at o Menu *UXSR clique com o boto direito do mouse sobre ele, e escolha a
opo Cut no menu popup que aparecer. Em seguida v at o Menu &DGDVWURV
%iVLFRV, clique com o boto direito do mouse sobre aquele item de menu que
voc criou e escolha a opo 3DVWH%HIRUH(Colar antes). Seu menu Grupo ser
colocado agora, abaixo de Cadastros Bsicos e acima do item que voc criou.
Proceda da mesma maneira em relao s opes, Empresa, Filial e Unidade
/LPSDQGRWRGDVDVYDULiYHLVGH7HOD
Para limpar todas as variveis de tela, use o comando Reset(true)
/LPSDQGRXPFDPSRHVSHFtILFRQDWHOD
&ULDQGR7DEHODVHP0HPyULDSUHHQFKLGDVDSDUWLUGHXPDUTXLYR
4XHXH
Crie uma janela e nesta janela crie uma tabela cuja definio dever ser Tabela
Memria
A Querie declarado na rea global da janela, conforme o cdigo abaixo:
Qtabela is Data Source
Adicione os campos Name e FirstName, com os cabealhos Nome e CNPJ.
Ambos os campos sero do tipo Texto.
Crie os botes necessrios Manuteno da Tabela
3UHHQFKHQGRDWDEHODHP0HPyULD
&ULDQGRILOWURVHPUXQWLPH
:LQGHY3ULPHLURVSDVVRV
HExecuteSQLQuery(Qtabela,MyConnection,hQueryWithoutCorrection,("SELECT
empresa.nome,empresa.cnpj FROM empresa WHERE empresa.nome LIKE %"+
Edit1 +"%"))
IF ErrorOccurred THEN Info(ErrorInfo())
TableDeleteAll(TabelaMemoria)
HReadFirst(Qtabela)
WHILE NOT HOut
ListAdd(TabelaMemoria,Qtabela.nome+TAB+Qtabela.cnpj)
HReadNext(Qtabela)
END
HCancelDeclaration(Qtabela)
Onde:
Qtabela um Datasource, declarado globalmente no procedimento.
TabelaMemria o nome da tabela em memria (Queue) -> o prprio controle.
&ODVVLILFDQGRXPDWDEHOD
$VFHQGHQWH
'HVFHQGHQWH
$SDJDQGRXPDOLQKD
'RW1HW
Voc pode criar programas .NET (ou montadores .NET) a partir de uma
aplicao Windev.
Os montadores .NET so gerados diretamente a partir das Classes do Windev
com todos os benefcios do ambiente RAD do WINDEV.
19
:LQGHY3ULPHLURVSDVVRV
Voc tambm pode utilizar montadores .NET gerados a partir de outra
linguagem em uma aplicao Windev
Simplesmente especifique o uso de montadores .NET em aplicaes novas
diretamente no assistente de criao de aplicaes.
Em aplicaes j existentes, simplesmente selecione .NET assemblies,
para usar.
8VDQGRGRW1HWHPXPDDSOLFDomR:LQGHY
Para usar o dot net em uma aplicao Windev necessrio que sejam
atendidos os seguintes requisitos:
Instalar o Net Framework na estao onde o aplicativo ser executado
Configurar o nvel de segurana .NET
Criar as Dlls
7HFQRORJLD'RW1HW$FHVVDQGR:HE6HUYLFHV
(QWHQGHQGRR62$3
Entender o SOAP o principal conceito para entender a tecnologia de Web
Services.
Um SOAP um 6LPSOH 2EMHFW $FFHVV 3URWRFRO (Protocolo
Simplificado de Acesso Objetos). Explicou mas no disse nada!
Explicando:
um protocolo de comunicao usado para executar procedimentos em um
servidor remoto enviando e ou recebendo parmetros. Na maioria das vezes este
processo baseado em protocolos http e XML , mas em alguns casos pode ser
usado o protocolo SMTP.
Os dados so transmitidos entre o computador local e o servidor SOAP
como um texto estruturado no formato XML.
A principal vantagem disso deve-se ao fato de que a ao realizada
usando dois protocolos amplamente conhecidos:
XML para a estrutura das mensagens e,
20
:LQGHY3ULPHLURVSDVVRV
HTTP para transferncia de dados.
por causa disso que o SOAP independe de Sistema Operacional,
Linguagens de Programao. No importa se voc vai desenvolver em Windev,
Clarion, Visual Basic, C, Delphi. O protocolo XML, HTTP sempre o mesmo. Se
voc vai trabalhar no UNIX, no LINUX, no Windows ou no MAC... no tem
problema nenhum.
Alm disso, pelo fato de usar o protocolo HTTP para transferir dados, o
SOAP pode circular atravs de Firewalls sem nenhum problema. Ou seja, mesmo
que o seu cliente ou usurio final utilize um Firewall para proteger a sua rede de
ataques de Hackers e ou outros intrusos, no haver problema algum em usar
uma aplicao que utilize o um servidor SOAP.
verdade que o SOAP um pouco complexo para usar. por isso que um
servio padronizado WSDL, foi criado para fazer uma integrao mais fcil entre
os servios Web e a sua aplicao.
No Windev uma definio padro permite ao Windev importar um servio
Web XML. Em poucas palavras, acontece o seguinte:
Voc seleciona um arquivo WSDL atachado a um servio.
O Windev gera uma classe ou um conjunto de procedures que interagem
com este servio. Voc no precisa escrever nenhuma linha de cdigo, o
Windev se encarrega de fazer isto para voc. um assistente onde voc
responde algumas perguntas e pronto. No final, as classes de acesso ao
site remoto Dot Net, J2EE, etc... so geradas de forma global para voc e
voc s tem que chamar os mtodos das classes ou as procedures
includas no seu APP pelo Windev, para ter acesso a um servio WSDL.
&RPRLPSRUWDUXPVHUYLoRGD:HE
21
:LQGHY3ULPHLURVSDVVRV
:LQGHY3ULPHLURVSDVVRV
Exemplo:
A funo GetStation definida da seguinte forma:
PROCEDURE Get_Station(code)
DotNet.Name[1]="code"
DotNet.Type[1]=DotNetTypeChane
DotNet.Value[1]=code
bRes is boolean
bRes=DotNetRun("http://www11.brinkster.com/bgx/webservices/GET_Weather.as
mx", "Get_Station", "http://www11.brinkster.com/bgx/webservices/publicGET",
"http://www11.brinkster.com/bgx/webservices/publicGET/Get_Station")
IF NOT bRes THEN
IF DotNetError(DotNetErrMessage)~="" THEN
Error(ErrorInfo())
ELSE
Error(DotNetError(DotNetErrMessage))
END
END
RESULT DotNetGetResult(DotNetXMLResult)
Agora que importamos todas as funes do servio Web para o nosso aplicativo
podemos usar os mtodos e propriedades de cada uma das procedures para fazer
funcionar o nosso cliente dot Net.
Terceiro passo: Usando o conjunto de procedures
Os passos realizados anteriormente nos permitiram criar os procedimentos
globais que nos permitiro conversar com um aplicativo dot Net
No momento em que o processo encerrado todas as procedures so
transferidas para a rea de globais do nosso app.
23
:LQGHY3ULPHLURVSDVVRV
1. A partir da rea de projetos crie uma nova janela em branco.
24
:LQGHY3ULPHLURVSDVVRV
Adicione um campo de entrada chamado Temperatura cujo rtulo deve ser
7HPSHUDWXUD. tipo numrico
Adicione outro campo de entrada chamado Ponto, cujo rtulo deve ser 3RQWRGR
2UYDOKR (no me pergunte o que isso, pois no entendo nada de meteorologia).
Mas um dado que sempre aparece nas condies do tempo.- tipo numrico
Adicione um campo de entrada chamado Umidade, cujo rtulo deve ser 8PLGDGH
GRDU(aqui ser retornado o percentual de umidade relativa do ar).- tipo numrico.
Crie mais um campo de entrada chamado pressao, cujo rtulo deve ser 3UHVVmR
DWPRVIpULFD. No sei para que serve este dado, mas me parece ser um dado
importante para quem entende de meteorologia. tipo numrico.
Crie um campo de entrada chamado Ceu,cujo rtulo deve ser &RQGLo}HVGR&pX.
Clique na guia Details e marque o check box 0XOWLOLQHLQSXW. Isto vai permitir criar
um campo texto na nossa janela. Voltando janela redimensione e arranje os
campos.
Em seguida crie um boto Button1
cujo texto deve ser &RQGLo}HV GR
WHPSR . Escolha as imagens e a
configurao conforme a figura ao
lado. Se quiser pode criar um boto
simples, sem maiores frescuras.
Esse boto ser o responsvel pelo
carregamento dos dados do Servio
Web dot Net para os campos da
nossa aplicao. Prosseguindo crie
25
:LQGHY3ULPHLURVSDVVRV
um outro boto Button2 posicionando no canto inferior direito da janela, cujo texto
deve ser )HFKDU. Crie ainda um terceiro boto Button3 abaixo do Button1. Esse
boto dever ter o texto /LVWDU3DtVHVQR6HUYLGRU. A principal finalidade listar
todos os pases cadastrados no servidor.
Ao lado do campo 7HPSHUDWXUD crie um controle esttico (uma string) cujo texto
deve ser JUDXV. Ao lado do campo 8PLGDGHGRDU crie um controle esttico cujo
texto deve ser . Estes controles estticos visam principalmente dar uma esttica
melhor nossa janela.
Quarto Passo: Escrevendo o cdigo
O servio Web que estamos acessando aqui utiliza o formato XML para
retornar as informaes que sero processadas com as funes de tratamento
XML da W-Language.
De acordo com a documentao do servio Web as mensuraes de tempo
so feitas de acordo com um cdigo ICAO. O cdigo ICAO identifica a estao
meteorolgica. Pelo fato de que no conhecemos este cdigo (e mesmo que
conhecssemos, no seria possvel guardar na cabea), vamos recuperar as
informaes pelo nome da estao utilizando a funo 6HDUFKB6WDWLRQ%\1DPH.
Esta uma das funes que foram recuperadas do servido dot Net.
Clique com o boto direito do mouse no boto e insira o seguinte cdigo
fonte no evento &OLFNRQ%XWWRQ.
//Quando clicamos no boto
XMLResult is string = " "
XMLResult = Search_StationByName(Nome_da_Estaao)
ICAOCode is string = " "
ICAOCode = XMLExtractString(XMLResult,"icao")
IF ICAOCode=" " THEN
Error("Estao " + Nome_da_Estaao + " no localizada pelo servio.")
RETURN
END
IF Nome_da_Estaao = "Estancia Velha" THEN
Temperatura= -58
Ponto= -15
Umidade= -39
pressao= -25
Info("A temperatura tem que estar baixa para manter a pinga gelada")
END
//Chamando a funo Dot.net importada do servio Web
XMLResult=Get_WeatherReport(ICAOCode)
Temperatura=XMLExtractString(XMLResult, "ambient")
Ponto=XMLExtractString(XMLResult, "dewpoint")
Umidade=Val(XMLExtractString(XMLResult, "relative_humidity"))
pressao=XMLExtractString(XMLResult, "altimeter")
Tagceu, Results are strings
Ceu = Null
i is int
Tagceu= XMLExtractString(XMLResult, "sky")
26
:LQGHY3ULPHLURVSDVVRV
i=0
LOOP
i ++
Results=XMLExtractString(Tagceu, "string" ,i)
IF Results ~=" " THEN BREAK
Ceu=Ceu + Results + CR
END
Analisando as duas primeiras linhas, temos a declarao da varivel XMLResult
como uma cadeia de caracteres,
;0/5HVXOWLVVWULQJ
Na mesma linha a varivel inicializada em branco.
Na linha seguinte a varivel XMLResult recebe o retorno da funo que pega o
nome da estao.
;0/5HVXOW 6HDUFKB6WDWLRQ%\1DPH1RPHBGDB(VWDoDR
Onde 6HDUFKB6DWLRQ%\1DPH, a chamada procedure importada do servidor
WebXml e nome da estao o parmetro passado para o procedimento pela
nossa aplicao no momento em que o boto pressionado. Quando clicamos no
boto o campo 1RPHBGDB(VWDomRda nossa janela j deve estar preenchido com
o nome de uma das estaes meteorolgicas cadastradas no servidor dot Net.
;0/5HVXOW 6HDUFKB6WDWLRQ%\1DPH1RPHBGDB(VWDoDR
Recupera o cdigo ICAO da estao utilizando a funo XMLExtractString. Esse
cdigo corresponde ao tag icao da sentena XML enviada pelo servio.
ICAOCode is string = " "
ICAOCode = XMLExtractString(XMLResult,"icao")
Em seguida feita uma comparao e se a estao no for reconhecida pelo
servidor ser mostrado um aviso ao usurio.
IF ICAOCode~=" " THEN
Error("Estao " + Nome_da_Estaao + " no localizada pelo servio.")
RETURN
END
O tratamento do retorno da
funo XML precisa ser feito
utilizando o operador ~= . O
operador ~= um RSHUDGRU GH
LJXDOGDGH IOH[tYHO
e opera
unicamente
com
caracteres
strings. Ou seja uma igualdade
especial
para
cadeia
de
caracteres, diferente das igualdades (=) usada para nmeros, por exemplo. O
funcionamento totalmente diferente. Tanto que se voc usar IF ICAOCode =" ",
o procedimento no funciona e no exibe a mensagem acima. Pelo fato de se no
existir a estao no servidor no ser retornado nenhum valor, a falta da
mensagem poder desorientar o usurio final.
IF Nome_da_Estaao = "Estancia Velha" THEN
Temperatura= -58
Ponto= -15
27
:LQGHY3ULPHLURVSDVVRV
Umidade= -39
pressao= -25
Info("A temperatura tem que estar baixa para manter a pinga gelada")
END
As linhas acima constituem um teste e uma brincadeira que fizemos com o
nosso colega Eduardo Wolack, residente em Estncia Velha. Como sabido, l
no existe estao meteorolgica, mas fizemos um procedimento para que fossem
retornados valores negativos e usando a funo Info, retornamos uma mensagem
de tela. Com isto mostramos que o seu programa pode interagir com os dados
retornados do servidor dot Net e tomar decises em cima destes dados.
//Chamando a funo Dot.net importada do servio Web
XMLResult=Get_WeatherReport(ICAOCode)
Temperatura=XMLExtractString(XMLResult, "ambient")
Ponto=XMLExtractString(XMLResult, "dewpoint")
Umidade=Val(XMLExtractString(XMLResult, "relative_humidity"))
pressao=XMLExtractString(XMLResult, "altimeter")
As linhas listadas no quadro acima atribuem varivel XMLResult as
condies do tempo atravs da funo *HWB:HDWKHU5HSRUW que recebe o
parmetro ICAOCode passado quando preenchemos o campo com o nome da
estao.
O
campo
7HPSHUDWXUD
preenchido
usando
a
funo
;0/([WUDFW6WULQJ;0/5HVXOW DPELHQW onde ambient uma tag xml
enviada pelo servidor e um valor numrico para o nosso aplicativo.
O campo 3RQWR preenchido pela varivel GHZSRLQW Observe que as tags so
chamadas sempre entre aspas duplas. Como o sistema sabe destas coisas? Ele
no sabe... simplesmente pega os dados do servidor XML com uma linha
semelhante :
DotNet.Name[1]="code"
DotNet.Type[1]=DotNetStringType
DotNet.Value[1]=code
Estes dados so devolvidos pelo servidor em formato XML. O que o cdigo acima
faz pesquisar nos esquemas cada um dos parmetros necessrios para
preencher os campos do nosso aplicativo conforme as tags abaixo obtidos no site
do Web Service.
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: OHQJWK
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<Get_WeatherReportResponse
xmlns="http://www.bgxcomponents.com/webservices/publicGET">
<Get_WeatherReportResult>
<timestamp>GDWH7LPH</timestamp>
<station>
28
:LQGHY3ULPHLURVSDVVRV
<icao>VWULQJ</icao>
<wmo>VWULQJ</wmo>
<iata>VWULQJ</iata>
<elevation>GRXEOH</elevation>
<latitude>GRXEOH</latitude>
<longitude>GRXEOH</longitude>
<name>VWULQJ</name>
<region>VWULQJ</region>
<country>VWULQJ</country>
<string>VWULQJ</string>
</station>
<phenomena>
<Phenomenon>
<type>0,67 or )2* or &/28' or 72:(5,1*B&808/86 or
&808/21,0%86 or 35(&,3,7$7,21 or 6+2:(56 or '5,==/( or 5$,1 or 635$<
or ',$021'B'867 or 612: or 612:B*5$,16 or ,&(B3(//(76 or 60$//B+$,/
or /$5*(B+$,/ or +$=( or 602.( or '867 or 6$1' or 92/&$1,&B$6+ or
:+,5/6 or 648$//6 or /,*+71,1* or '86767250 or 6$1'67250 or
7+81'(567250 or 7251$',& or 81.12:1</type>
<intensity>',67$17 or 1($5%< or /,*+7 or 02'(5$7( or
+($9<</intensity>
<string>VWULQJ</string>
</Phenomenon>
<Phenomenon>
<type>0,67 or )2* or &/28' or 72:(5,1*B&808/86 or
&808/21,0%86 or 35(&,3,7$7,21 or 6+2:(56 or '5,==/( or 5$,1 or 635$<
or ',$021'B'867 or 612: or 612:B*5$,16 or ,&(B3(//(76 or 60$//B+$,/
or /$5*(B+$,/ or +$=( or 602.( or '867 or 6$1' or 92/&$1,&B$6+ or
:+,5/6 or 648$//6 or /,*+71,1* or '86767250 or 6$1'67250 or
7+81'(567250 or 7251$',& or 81.12:1</type>
<intensity>',67$17 or 1($5%< or /,*+7 or 02'(5$7( or
+($9<</intensity>
<string>VWULQJ</string>
</Phenomenon>
</phenomena>
<precipitation>
<Precipitation>
<amount>GRXEOH</amount>
<hours>LQW</hours>
<string>VWULQJ</string>
</Precipitation>
<Precipitation>
<amount>GRXEOH</amount>
<hours>LQW</hours>
<string>VWULQJ</string>
</Precipitation>
</precipitation>
<extremes>
<Extreme>
<temperature xsi:nil="true" />
<type>+,*+ or /2:</type>
<hours>LQW</hours>
<string>VWULQJ</string>
</Extreme>
<Extreme>
<temperature xsi:nil="true" />
29
:LQGHY3ULPHLURVSDVVRV
<type>+,*+ or /2:</type>
<hours>LQW</hours>
<string>VWULQJ</string>
</Extreme>
</extremes>
<pressure>
<altimeter>GRXEOH</altimeter>
<slp>GRXEOH</slp>
<delta>GRXEOH</delta>
<delta_hours>LQW</delta_hours>
<string>VWULQJ</string>
</pressure>
<sky>
<ceiling_altitude>GRXEOH</ceiling_altitude>
<layers>
<Layer xsi:nil="true" />
<Layer xsi:nil="true" />
</layers>
<string>VWULQJ</string>
</sky>
<temperature>
<ambient>GRXEOH</ambient>
<dewpoint>GRXEOH</dewpoint>
<relative_humidity>LQW</relative_humidity>
<string>VWULQJ</string>
</temperature>
<visibility>
<distance>GRXEOH</distance>
<qualifier>$7 or %(<21' or %(/2:</qualifier>
<string>VWULQJ</string>
</visibility>
<wind>
<prevailing_speed>GRXEOH</prevailing_speed>
<gust_speed>GRXEOH</gust_speed>
<prevailing_direction>
<compass>1 or 11( or 1( or (1( or ( or (6( or 6( or 66(
or 6 or 66: or 6: or :6: or : or :1: or 1: or 11:</compass>
<degrees>LQW</degrees>
<string>VWULQJ</string>
</prevailing_direction>
<varying_from_direction>
<compass>1 or 11( or 1( or (1( or ( or (6( or 6( or 66(
or 6 or 66: or 6: or :6: or : or :1: or 1: or 11:</compass>
<degrees>LQW</degrees>
<string>VWULQJ</string>
</varying_from_direction>
<varying_to_direction>
<compass>1 or 11( or 1( or (1( or ( or (6( or 6( or 66(
or 6 or 66: or 6: or :6: or : or :1: or 1: or 11:</compass>
<degrees>LQW</degrees>
<string>VWULQJ</string>
</varying_to_direction>
<string>VWULQJ</string>
</wind>
</Get_WeatherReportResult>
</Get_WeatherReportResponse>
30
:LQGHY3ULPHLURVSDVVRV
</soap:Body>
</soap:Envelope>
31
:LQGHY3ULPHLURVSDVVRV
Em seguida a varivel Results recebe o valor da tagceu, no formato string de
acordo com o valor da varivel i. Na primeira vez i = a 1, na segunda vez i = 2, at
chegar ao final da tagceu.
Um operador de igualdade flexvel ~= controla o final do Loop e atribui ao
controle de texto da tela (Ceu) o contedo da varivel Results colocando um
caractere de quebra de linha a cada vez que um contedo gravado.
Esta a tela de
resultado em tempo
de execuo quando
se pressiona o boto
condies do tempo.
Os dados da figura
correspondem
ao
Clima na cidade de
Porto Alegre no dia
01 de Setembro de
2004, as 11:45 horas.
Os
dados
de
visibilidade do cu,
ocuparam
somente
uma
linha,
mas
poderiam ocupar mais de uma conforme as condies do tempo como mostra a
figura seguinte para o clima da cidade de Salvador no mesmo dia 01 de Setembro
de 2004 s 11:48 horas.
:LQGHY3ULPHLURVSDVVRV
3962 metros, um outro tipo a 8230 metros. Estas informaes so normalmente
utilizados por pilotos de aviao e controladores de trfego areo.
A grande massa das bases de dados deste servidor, de acordo com a visita que
fiz ao site alimentada pelos operadores dos aeroportos.
Observe um extrato da tela do Site onde o servio permite acessar uma lista das
cidades onde temos a coleta das informaes do clima e se pode notar a presena
dos aeroportos.
Basta conhecer os parmetros em XML para retornar qualquer dado no seu
aplicativo usando a tecnologia dot Net.
Baseado na anlise do cdigo XML retornado pelo servidor vamos obter no
nosso sistema, uma listagem de todos os pases cadastrados no servidor. No
boto /LVWDU SDtVHV QR 6HUYLGRU, no evento &OLFN RQ EXWWRQ insira o seguinte
cdigo para retornar uma lista no campo Ceu:
XMLResult is string = " "
XMLResult = List_Countries
ICAOCode is string = " "
ICAOCode = XMLExtractString(XMLResult,"icao")
Tagceu, Results are strings
Ceu = Null
i is int
Tagceu=XMLResult
i=0
LOOP
i ++
Results=XMLExtractString(Tagceu, "string" ,i)
IF Results ~=" " THEN BREAK
Ceu=Ceu + Upper(Results) + CR
END
Primeiro igualamos a varivel XMLResult ao mtodo (tag XML) List_Countries. Em
seguida atribumos o resultado para a varivel ICAOCode.
Da mesma maneira que fizemos anteriormente declaramos Tagceu e Results
como strings.
Limpamos o controle Ceu igualando-o a Null.
Definimos um contador i como int
Recebemos o valor de XML result na varivel Tagceu
Atrbumos 0 ao contador i
33
:LQGHY3ULPHLURVSDVVRV
Iniciamos um Loop
Incrementamos o contador i em 1 com i ++
Preenchemos as linhas com
Results=XMLExtractString(Tagceu, "string" ,i)
IF Results ~=" " THEN BREAK
Ceu=Ceu + Upper(Results) + CR
Usando Upper para colocar o nome dos pases em maiscula . O resultado em
tempo de execuo apresentado abaixo:
Observe que retornamos os valores no mesmo campo texto usado para receber
os dados do cu, mas poderamos perfeitamente preencher uma tabela em
memria com estes valores.
$WULEXLQGRYDORUHVDXPFRQWUROHGHWHODHVWiWLFR
:LQGHY3ULPHLURVSDVVRV
&ULDQGRXPVHUYLoR:HE;0/DSDUWLUGHXPDDSOLFDomR:LQGHY
O Windev tambm pode ser usado para criar servios Web a partir de
aplicativos desenvolvidos por voc.
Para que estes servios sejam
disponibilizados ao pblico e a outras aplicaes voc precisar instalar o servio
gerado em um servidor que suporte SOAP.
&ULDQGRR6HUYLoR;0/
1. Crie um novo projeto Windev. Este novo projeto dever conter apenas
procedures globais (nenhuma janela, nenhum relatrio, etc...) Cada
procedure global dever ser executada pelo servidor SOAP do Windev. Se
for necessrio, entre os cdigos de inicializao e finalizao do projeto.
Estes cdigos sero executados durante a carga ou descarga da livraria do
Windev no Servidor SOAP.
2. Selecione a opo 3URMHFW...;0/ :HE 6HUYLFH *HQHUDWH 6HUYLFH IRUP
WKLV SURMHFW. Um assistente de criao de servios XML ser carregado
Responda s questes propostas pelo assistente para ter no final um
servio Web XML completo gerado a partir de uma aplicao Windev.
3. Entre as questes propostas esto: o nome do arquivo XML a ser criado.
Por default o nome deste arquivo <Projeto.xml> onde Projeto o nome do
seu projeto.
4. Em seguida entre o endereo da Internet onde o projeto ser instalado, por
exemplo http://MeuServidor/MeuServico.soap.
5. A prxima tela define os elementos que devem ser integrados livraria, tais
como imagens, cones,etc... A livraria ter o mesmo nome do projeto atual,
voc pode: Adicionar elementos, remover elementos ou criar uma livraria a
partir de uma livraria existente.
6. Para gerar uma livraria a partir de uma livraria existente:
7. Quando estiver usando uma livraria Windev, um arquivo .WDU com o
mesmo nome ser automaticamente criado. Este arquivo contm todas as
referncias para os elementos a serem integrados na livraria.
8. Clique no boto Done para criar o site.
9. Instale o servio gerado em, um Servidor Web para que possa ser
acessado por outros aplicativos.
A partir do projeto Windev escolhido para ser um servio XML o Windev ir criar
automaticamente:
Uma livraria Windev correspondente, um arquivo com a extenso .WDL.
Esta livraria conter as procedures do seu servio Web. Estas procedures
podem ser usadas por uma aplicao que utilize ou seu servio Web XML.
Um arquivo XML. Este arquivo ir conter a descrio do servio XML Web
no formato WSDL (Web Services Description Language). Linguagem de
definio de Servios Web.
Para tornar o seu servio Web disponvel, estes arquivos, bem como as
respectivas Dlls do Windev, devem ser instaladas em um computador que atue
como servidor Web. Este computador ser o computador Servidor SOAP Windev.
35
:LQGHY3ULPHLURVSDVVRV
7HVWDQGRRVHUYLoR:HEQDPiTXLQDGHGHVHQYROYLPHQWR
Para poder testar o Servio em sua mquina voc precisa configurar um
Servidor de Internet nesta mquina.
Configurando o Apache Server
Para instalar um servidor SOAP para o Apache, voc deve ter a verso 1.3
do Apache na estao.
1. Abra o arquivo httpd.conf usando o Notepad do Windows. Este arquivo
est localizado no subdiretrio conf da sua Instalao Apache. Escolha o
diretrio default de instalao: C:\PROGRAMFILES\APACHE\APACHE
GROUP\APACHE\CONF
2. Localize a seo referente ao suporte de objetos compartilhados. Para
fazer isto procure pela linha #Dynamic Shared Object (DSO) ou pela
palavra chave LoadModule.
3. Adicione a linha:
Para testes em sua estao
LoadModule windev_m odule < WinDev 8 set up direct or y> \ Dat a\ WD80sapa.dll
1RWDV
Se o diretrio especificado contiver espaos voc deve colocar aspas
(Diretorio com espaos).
Esta linha no pode comear com o sinal #
4. Localize a seo relativa aos manipuladores de queries. Para fazer isto, ou
localize a linha " $GG+DQGOHU a qual permite que se mapeie os arquivos
de extenso de manipuladores ou a palavra chave $GG+DQGOHU .
5. Adicione a seguinte linha:
$GG+DQGOHUZLQGHYPRGXOHVRDS
Nota: Esta linha no deve comear com cerquilha (#)
6. 6HYRFrHVWLYHULQVWDODQGRXPVHUYLGRU62$3FOiVVLFR, a instalao do
servidor est completa.
Configurando o IIS 5.1
Para instalar o servidor SOAP com o IIS 5.1 no Windows 2000 o Servidor
IIS deve estar instalado na sua mquina.
1. A partir do Painel de Controle, selecione, Ferramentas Administrativas e
em Seguida Gerenciador de Servios da Internet Internet Services
Manager.
2. Escolha na lista esquerda o servidor ao qual voc quer adicionar o
Servidor SOAP.
3. No painel da direita, selecione um Web site (por exemplo Default Web
site).
4. A partir do menu popup selecione Propriedades e em seguida a guia
Home directory
36
:LQGHY3ULPHLURVSDVVRV
5. Clique no boto configurar (Configuration) e em seguida no boto
Adicionar(Add).
6. Clique em Executvel (Executable e selecione o arquivo WD80SIIS.DLL
Para testar a partir
de sua estao de
trabalho,
este
arquivo deve estar
localizado
no
subdiretrio data do
Windev8.
PaRA
INSTALAR
o
servidor SOPA final,
este arquivo deve
estar localizado no
diretrio de setup de
sua aplicao.
Preencha o cam po ext ension, com .soap.
Desmarque o check box Check that the file exists.
Clique no boto OK para finalizar.
7. Se voc estiver instalando um servidor SOAP tradicional a configurao
est pronta
Se estiver instalando um Servio Web XML, realize as seguintes operaes
adicionais
8. Copie o arquivo XML contendo a descrio do Servio Web XML para o
diretrio especificado na opo Access path. Para acessar este arquivo
XML, use a seguinte linha de comandos.
KWWS1RPHGR6HUYLGRU62$3RX(QGHUHoR,3!1RPHGRDUTXLYR
;0/!;0/
1RWDVoc pode tambm copiar este arquivo XML para outro diretrio. Consulte o
help sobre o uso do Servidor HTTP.
9. A instalao do Servio Web XML no servidor SOP est concluda.
Configurando o Administrador
SOAP
1. Execute o administrador
SOAP
(Aplicao
WDSOAPConfig.EXE).
Este administrador pode
ser
encontrado
no
diretrio de sua aplicao
(ou em um diretrio
especfico se ele
j
estiver instalado).
2. Configure os seguintes
37
:LQGHY3ULPHLURVSDVVRV
parmetros :
7LPHEHIRUHXQORDGLQJQDXQXVHG:'/ ;
se diversas livrarias (arquivos .WDL) relacionados com a aplicao SOAP
server (ou servios XML) forem encontradas na estao, esta opo
permite configurar um tempo mximo para limpar uma livraria no usada na
memria. Quando uma livraria limpada da memria o cdigo de
encerramento do projeto executado.
0D[LPXPQXPEHURI:'/LQPHPRU\
se diversas livrarias (arquivos .WDL) correspondentes a aplicaes SOAP
(ou Servios Web XML) forem localizadas na estao, esta opo permite
que voc configure o nmero de WDLs carregados simultaneamente na
memria. Quando este nmero recuperado, as livrarias mais antigas no
momento, na memria, so automaticamente fechadas. Ao fechar a
livraria, o cdigo de finalizao do projeto executado.
6DYLQJDORJ/2*
Esta opo possibilita salvar em um arquivo texto, todas as operaes
realizadas no servidor SOAP. Para cada operao a data e a hora so
especificadas. Este arquivo pode por exemplo conter as seguintes
mensagens:
38
:LQGHY3ULPHLURVSDVVRV
&DUDFWHUtVWLFDVGDSURJUDPDomR:LQGHYFRP64/
$VVLVWHG,QSXW
banco de dados para cada caractere digitado no campo o que causa um trfego
de rede infernal. Para pequenas bases de dados at pode ser deixado ativo mas,
com grandes bases de dados o ideal desabilitar esta opo.
39
:LQGHY3ULPHLURVSDVVRV
3DVVDQGRSDUkPHWURVSDUDXPDMDQHOD
&RPRSDVVDUXPSDUkPHWURQDDEHUWXUDGDMDQHOD
:LQGHY3ULPHLURVSDVVRV
&RPRUHWRUQDUXPSDUkPHWURQRIHFKDPHQWRGHXPDMDQHOD
:LQGHY3ULPHLURVSDVVRV
IF ResultDate = "" THEN
Info("Nenhuma data foi selecionada")
ELSE
Info("Data Selecionada: " + ...
DateToString(ResultDate))
END
O processamento do boto 6HOHFLRQDFDOHQGiULR!! interrompido at que a
janela -DQHOD&DOHQGDULR seja fechada.
3DUkPHWURVSDVVDGRVSRUYDORU
Se os parmetros passados para uma janela so modificados nesta janela,
estas modificaews somente se aplicam a esta janela. O valor destes
parmetros no so modificados no processo chamador.
Por exemplo:
1. Uma varivel chamada MinhaData declarada no cdigo do boto
6HOHFLRQD &DOHQGiULR!! . Esta varivel contm a data de hoje (por
exemplo MinhaData = Today())
2. Esta varivel passada como um parmetro para a janela
-DQHOD&DOHQGDULR. O Parmetro sDateSel contm o valor da varivel
MinhaData.
3. O valor do parmetro sDateSel modificado na janela -DQHOD&DOHQGDULR
(por exemplo: sDateSel = 01072004 ).
4. O valor da varivel MinhaData no modificado.
&RPRID]HU"
&RPRSHUVRQDOL]DUXPDPiVFDUDGHHQWUDGD
$VPiVFDUDVHR:LQGHY
:LQGHY3ULPHLURVSDVVRV
$SOLFDo}HVTXHXVDPPDLVGHXPLGLRPDPXOWLOtQJHV
43
:LQGHY3ULPHLURVSDVVRV
mscara. De acordo com as linguagens configuradas para o projeto sero exibidas
as respectivas opes. No caso da figura acima o projeto foi setado para ingls e
francs.
&RQWUROHV7LSR7H[WR
Em janelas, por default, nenhuma mscara associada com controles do
tipo texto (strings). Voc pode escolehr ente:
Selecionar uma mscara pr definida
Criar uma mscara de entrada personalizada.
1RWD: se o controle estiver ligado a um campo de arquivo, o valor armazenado no
arquivo que ser mostrado.
Em relatrios, por default, nenhuma mscara estar associada a um controle do
tipo texto. Voc pode selecionar uma mscara pr definida. Mscaras
personalizadas no so suportadas em relatrios. Isto quer dizer que, se
quisermos usar uma mscara especial em nossos relatrios deveremos gravar o
campo com o formato que desejamos apresentar ou ento criar uma varivel para
o relatrio que receba o contedo formatado a partir do arquivo mostrando ento a
varivel ao invs do campo.
&8,'$'2 (P UHODWyULRV VRPHQWH DV VHJXLQWHV PiVFDUDV SUp GHILQLGDV VmR
VXSRUWDGDV SRU FRQWUROHV GR WLSR WH[WR &DS ILUVW OHWWHU SULPHLUD OHWUD
PDL~VFXD $OO FDSV WRGDV DV OHWUDV PDL~VFXODV FDL[D DOWD RX $OO
ORZHUFDVHWRGDVDVOHWUDVPLQ~VFXODV
7DEHODGH0iVFDUDV
Mscara
Efeito
programao
Exemplos
None
Sem mscara
Sem efeito
Como digitado
All caps
44
Ave5a8B
J4-h89
TE-55E
ABC-1429-AB
:LQGHY3ULPHLURVSDVVRV
All lowercase
Letters
Numbers
Te-55e
Somente letras(minsculas ou
maisculas) podero ser entradas.
Somente letras(minsculas
ou maisculas) podero ser
entradas
Te-55e
99999
Abc-1429-ab
Abc-1429-ab
88888
555555
Letters + numbers
Somente letras
(maisculas/minsculas) e
nmeros sero aceitos
Abc1544
ABNC875
5715A25
Uppercase letters
Uppercase letters
+ numbers
Telephone
number
MACACO
HT8I66
As letras sero
automaticamente
transformadas em
maisculas
Somente os seguintes
caractes sero aceitos
Nmeros
Nmeros
- sinal de menos
- sinal de menos
. ponto
. ponto
( parntesis esquerdo
( parntesis esquerdo
) parntesis direito
) parntesis direito
espao
espao
Somente os caracteres
permitidos pelo sistema
operacional podem ser
entrados.
PORCO
66KP35
B21AC4
(014)55-15
C:\user\arquivo.txt
INSEE number +
key
45
:LQGHY3ULPHLURVSDVVRV
Mximo 15 nmeros
sermpe 1 ou 2
Mximo 15 nmeros
Letter then
Letter/Digit
Todos os caracteres so
permitidos
QA1435
Numbers,.+-''
Todos os caracteres so
permitidos
+586,21
Nmeros
An121545
Cj1521
ACB112
,1454
-1318
Caracteres
.035
, virgula
25 12
. ponto
+ sinal de mais
- sinal de menos
espao
File name (without
its path)
E-mail address
fulano@fulano.com.br
46
:LQGHY3ULPHLURVSDVVRV
os dgit os do m s
O nm ero I NSEE pode ser com plet ado por um nm ero de 2 dgit os
cham ado key , Est a key ( chave) usada para verificar o nm ero
I NSEE.
0iVFDUDVSHUVRQDOL]DGDV
'LIHUHQoDVHQWUHWLSRVQXPpULFRVHPRQHWiULRV
As mscaras oferecidas para os valores monetrias so as mesmas que
aquelas usadas pelos tipos numricos. A diferena est na preciso dos nmeros.
Os tipos moeda possuem 17 dgitos sginficativos para a parte inteira e um mximo
de 6 dgitos para a parte decimal. Voc tambm pode adicionar o sinal de cifro
entrada de moeda.
Exemplo:
5
1RWD
Ser mostrado ++++ no controle, de acordo com as seguintes condies:
- atribuio via programao
- o nmero de dgitos da parfte inteira maior que o nmero da parte inteira da
mscara. Por exemplo, se as mcara 99,999 e o varlo atribujdo pela
programao 123456 o valor ++++ ser mostrado no controle.
47
:LQGHY3ULPHLURVSDVVRV
&RQWUROHVGRWLSR'DWD
0iVFDUDVSHUVRQDOL]DGDV
DDDD Dia da Semana exemplo: Segunda Feira
DDD Dia da semana abreviado exemplo: Seg
DD Expresso do dia usando nmeros exemplo: 25
MMMM nome do ms exemplo: Janeiro
MMM nome do ms abreviado exemplo: Jan
MM Expresso do dia usando nmero 01
YYYY Ano com 4 dgitos exemplo: 2004
YY ltimos 2 dgitos do ano exemplo: 04
HH Expresso de horas em nmeros exemplo 13
mm Expresso dos minutos em nmeros exemplo 45
SS Segundos expressados em nmeros
Estas mscaras podem ser usadas combinadas entre si, por exemplo:
''0000<<<<DV++PP66
)HYHUHLURjV
48
:LQGHY3ULPHLURVSDVVRV
&RQWUROHVGRWLSR+RUD
Uma lista de mscaras pr definidas oferecida pelo Windev.
Voc pode escollher entre:
Selecionar uma mscara pr definida
Criar uma mscara personalizada.
As seguintes mscaras pr definidas podem ser usadas:
HH:MM Hora minuto
HH:MM:SS Hora Minuto Segundo
HH:MM:SS:CC Hora minuto segundo centsimos de segundo
System time. Depende da da mscara de entrada selecionada nos parmetros
regionais do Sistema Operacional. (Opo Regional no Painel de Controle do
Windows.
0iVFDUDVSHUVRQDOL]DGDV
HH Hora
MM Minuto
SS Segundo
CC Centsimos de segundo
&RPRFDSWXUDUDMDQHODGHXPDDSOLFDomRSDUDRDPELHQWHGR
:LQGHY
Para capturar uma tela de outro programa, inclusive suas opes de menu
no momento da captura proceda da seguinte forma. Com a IDE do Windev aberta,
minimize-a e rode o aplicativo cuja tela quer capturar.
Assim que a tela estiver rodando, ative novamente o
Windev maximizando-o e clique em ,QVHUW !1HZ
:LQGRZ a partir do Menu principal do ambiente de
desenvolvimento do Windev.
Ser aberta a caixa de dilogo 1HZ :LQGRZ
apresentando as guias com as janelas disponveis
5$', que so as janelas assistidas do Windev,
6WDQGDUG, que so as janelas padronizadas do Windev
e na ltima guia ,PSRUW, estar disponvel a janela da
aplicao ativa em segundo plano sob o ambiente do
Windev.
Observe na figura abaixo que a janela em segundo plano est disponvel para ser
importada para o nosso aplicativo Windev.
49
:LQGHY3ULPHLURVSDVVRV
Est disponvel para importar a janela 602Album (alm de outras claro, mas
esta que nos interessa), a qual iremos importar para o nosso app. Marque o check
box *HQHUDWHLPDJHVIRUXQUHFRQL]HGFRQWUROV. Em seguida pressione o boto
2.!!.
Ser mostrada a imagem da janela do aplicativo em segundo plano com
uma caixa de dilogo do Windev .
Nesta janela sero mostradas normalmente 3 mensagens:
Search completed
Click OK to import the Window
Click Modify to Import Criteria
50
:LQGHY3ULPHLURVSDVVRV
Quando voc clica no boto 2.!! a janela e todos os controles disponveis
(isto aqueles que podem ser importados) sero importados para a sua aplicao,
conforme mostra a figura abaixo.
Todos os controles da janela capturada passar a constituir objetos de uma janela
Windev passando a ter as mesmas propriedades como se fosse controles criados
pela W-Language.
Voc pode agora configurar as propriedades dos controles clicando com o boto
direito do mouse sobre eles e acessar as suas 'HVFULSWLRQV bem como atribuir
&RGH a cada um deles.
51
:LQGHY3ULPHLURVSDVVRV
separadamente inclusive sendo mostrados os controles que no podem ser
importados. Detalhe, somente aplicativos 32 bit podem ter a sua interface
importada. Na realidade o Windev monta uma tabela com todos os controles da
janela importada e a partir desta tabela transforma cada um dos controles
importados em objetos que podem ser trabalhados via programao. como se
realmente a janela fosse clonada para o seu aplicativo. Na realidade o que
acontece. Uma nova janela Windev criada e a partir da tabela de controles toda
a janela clonada para o aplicativo Windev facilitando a importao da interface .
Isso permite, por exemplo, que se utilize os servios de um GHVLJQHU para
desenhar toda a interface, sem se preocupar com o cdigo que ser desenvolvido
pelos programadores.
Quando voc salvar a nova janela, vai observar que agora ela faz parte do projeto
de sua aplicao e pode ser chamada a partir de uma opo de menu, ou pode,
Janela
Importada
ser for o caso, ser uma janela principal que servir como menu para o seu
aplicativo
52