Criando Componentes em CF
Para criar componentes em CF é
muito simples. Vamos levar em conta que estamos na pasta raiz do
sistema. Então para não misturar os arquivos vamos criar uma pasta
chamada de controle dentro da pasta raiz e criar nosso componente
dentro dela.
Um arquivo de componente em CF é
identificado pela extensão .cfc
e vou dar o nome do componente que vamos criar de Documentos.cfc
No DreamWeaver
você pode criar um novo componente da mesma forma que faz para criar
uma nova página em ASP, como mostra a figura abaixo:
Para criar nosso componente temos
que começar nosso arquivo com a tag <cfcomponent></cfcomponent>
No código abaixo eu chamo um serviço COBOL
nas funções criadas dentro do componente.
<cfcomponent>
<!--- Trás a quantidade e
lista de documentos --->
<cffunction
name="listarDocsRecebidosPorUsuario" access="public"
returntype="any">
<!--- Argumentos passados
para a função. Deve seguir a mesma ordem --->
<cfargument
name="codusuario" type="string" required="yes">
<cfargument
name="data_1" type="string" required="yes">
<cfargument
name="data_2" type="string" required="yes">
<cfargument name="tipo"
type="string" required="yes" default="QTD">
<cfargument
name="flaglido" type="string" required="yes"
default="">
<!--- Monta a estrutura de
parâmetros --->
<cfset parametros_serv =
StructNew()>
<cfset
StructInsert(parametros_serv,"usupesquisa",arguments.codusuario)>
<cfset
StructInsert(parametros_serv,"databusca",'')>
<cfset
StructInsert(parametros_serv,"dataini",LSDateFormat(arguments.data_1,'yyyy-mm-dd'))>
<cfset
StructInsert(parametros_serv,"datafim",LSDateFormat(arguments.data_2,'yyyy-mm-dd'))>
<cfset
StructInsert(parametros_serv,"flaglido",arguments.flaglido)>
<cfif arguments.tipo EQ
"QTD">
<cfset
StructInsert(parametros_serv,"tiposolic","07")>
<cfelse>
<cfset
StructInsert(parametros_serv,"tiposolic","08")>
</cfif>
<cfset
StructInsert(parametros_serv,"paginaqtd",0)>
<cfset
StructInsert(parametros_serv,"paginaatual",1)>
<cfset srvDocumentos =
CreateObject("component","controle.leitorServicos")>
<cfset retornoServico =
srvDocumentos.chamarServico(application.srv_regControladocumento,
variables.parametros_serv)>
<cfreturn retornoServico>
</cffunction>
<!--- Marca o documento como
lido --->
<cffunction
name="marcarLidoDoc" access="public"
returntype="any">
<cfargument name="id"
type="string" required="yes">
<cfset parametros_serv =
StructNew()>
<cfset
StructInsert(parametros_serv,"id",arguments.id)>
<cfset
StructInsert(parametros_serv,"tiposolic",9)>
<cfset
StructInsert(parametros_serv,"paginaqtd",0)>
<cfset
StructInsert(parametros_serv,"paginaatual",1)>
<cfset srvDocumentos =
CreateObject("component","controle.Documentos")>
<cfset retornoServico =
srvDocumentos.chamarServico(application.srv_regControladocumento,
variables.parametros_serv)>
<cfreturn retornoServico>
</cffunction>
<!--- Pega o Resultado do
serviço COBOL informado em XML --->
<cffunction access="public"
name="chamarServico" returntype="any">
<cfargument name="nomeservico"
type="string" required="yes">
<cfargument name="parametros"
type="struct" required="yes">
<cfargument name="tiposerv"
type="string" required="no" default="XML">
<cftry>
<!--- Buscando retorno do
Serviço (XML) --->
<cfhttp
url="#application.host_cobol##Trim(arguments.nomeservico)#.exe"
method="post" charset="iso-8859-1">
<cfloop
list="#StructKeyList(arguments.parametros,',')#"
delimiters="," index="i">
<cfhttpparam
name="#LCase(i)#"
value="#StructFind(arguments.parametros,i)#"
type="formfield">
</cfloop>
</cfhttp>
<!---<cfdump
var="#cfhttp.FileContent#">--->
<cfif
isXmlDoc(cfhttp.FileContent)>
<cfset oXml =
cfhttp.FileContent>
<cfelse>
<cfset oXml =
xmlParse(cfhttp.FileContent)>
</cfif>
<cfcatch type="any">
Erro na chamada de requisição
ao servidor de dados <br/><br/>
<cfoutput>
Erro CB: #cfhttp.FileContent#
<br/><br/>
Erro CF:
(#arguments.nomeservico#). #cfcatch.Detail# - #cfcatch.Message#
<br/><br/>
</cfoutput>
<cfabort>
</cfcatch>
</cftry>
<cftry>
<!--- Conversao --->
<cfif arguments.tiposerv EQ
"XML">
<cfreturn
xmlParaQuery(oXml)>
<cfelse>
<cfreturn
xmlParaQuerySite(oXml)>
</cfif>
<cfcatch type="any">
Erro na _CORE na conversão
dos dados vindos do servidor . <cfoutput>#cfcatch.Detail# -
#cfcatch.Message#</cfoutput>
<cfabort>
</cfcatch>
</cftry>
</cffunction>
</cfcomponent>
Na linha: <cfset
StructInsert(parametros_serv,"id",arguments.id)>
o parâmetro “id”
é o nome do campo que o serviço COBOL
espera receber, este campo não precisa ter o mesmo nome do campo na
tabela do banco. O parâmetro “arguments.id”
é o valor que estou jogando para este campo e inserindo na estrutura
chamada “parametros_serv”
Comentários
Postar um comentário
Participe, deixe seu comentário.