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

Postagens mais visitadas deste blog

Criando uma Variável em ColdFusion e em ASP

Definindo Valores Padrões para Variáveis

O que é ColdFusion? Para que serve?