Integração TOTVS Microsiga Protheus e Fluig ECM

Tamanho: px
Começar a partir da página:

Download "Integração TOTVS Microsiga Protheus e Fluig ECM"

Transcrição

1 08/2013

2 Sumário Sumário Objetivo Integração manual Formulário ECM Protheus MVC Rotina Automática (Modelo 1) Processo Validação do formulário Script do evento no ECM Protheus WebService MVC Atualização do Protheus MVC Rotina Automática (Modelo 1)

3 1 Objetivo Integrar rotinas do MVC e automáticas da linha Microsiga Protheus com o Fluig ECM para criação processos permitindo ao cliente trabalhar com a rotina como uma solicitação com atribuição de responsáveis por atividade (baseada no dicionário de pastas), utilizando o workflow do Fluig ECM para controle de prazo de conslusão, acompanhamento notificação de responsável e requisitante, sendo as informações enviadas no final do processo para a linha de produtos Microsiga Protheus para persistência. 2 Integração manual 2.1 Formulário ECM 1. Criar um arquivo HTML com os campos com o mesmo nome utilizado no Protheus como o exemplo abaixo: <HTML> <HEAD> <TITLE>Exemplo - Cliente</TITLE> <LINK REL=STYLESHEET HREF="/webdesk203/wdk/global.css"> </HEAD> <BODY scroll=yes> <span class="numsecao"> <strong> Cadastro</strong></span> <HR> <br> <form> <table> <tr> <td align="right" width="150" class="labels"><b>código:</b></td> <td class="normal"><strong><input type="text" size="6" name="a1_cod"></strong></td> </tr> <tr> <td align="right" width="150" class="labels"><b>loja:</b></td> <td class="normal"><strong><input type="text" size="2" name="a1_loja"></strong></td> </tr> <tr> <td align="right" width="150" class="labels"><b>física/jurídica:</b></td> <td class="normal"><strong> <select name="a1_pessoa"> <option value="f">física</option> <option value="j">jurídica</option> </select> </strong></td> </tr> <tr> <td align="right" width="150" class="labels"><b>nome:</b></td> <td class="normal"><strong><input type="text" size="40" name="a1_nome"></strong></td> </tr> <tr> <td align="right" width="150" class="labels"><b>nome Fantasia:</b></td> <td class="normal"><strong><input type="text" size="20" name="a1_nreduz"></strong></td> </tr> <tr> <td align="right" width="150" class="labels"><b>endereço:</b></td> <td class="normal"><strong><input type="text" size="40" name="a1_end"></strong></td> </tr> 3

4 <tr> <td align="right" width="150" class="labels"><b>tipo:</b></td> <td class="normal"><strong> <select name="a1_tipo"> <option value="f">cons. Final</option> <option value="l">produtor Rural</option> <option value="r">revendedor</option> <option value="s">solidario</option> <option value="x">exportacao</option> </select> </strong></td> </tr> <tr> <td align="right" width="150" class="labels"><b>município:</b></td> <td class="normal"><strong><input type="text" size="60" name="a1_mun"></strong></td> </tr> <tr> <td align="right" width="150" class="labels"><b>estado:</b></td> <td class="normal"><strong><input type="text" size="2" name="a1_est"></strong></td> </tr> </table> </form> </BODY> </HTML> 2. Adicionar o arquivo.html como um Novo Fichário nos Documentos do ECM e verificar o Código que foi gerado que será utilizado para criar o Processo utilizará esse fichário Protheus 1. Configurar a integração para GED entre o Protheus e o ECM no Configurador na opção Ambiente > Totvs ECM > Wizard do GED 2. Utilizar a função FWECMPutCard para enviar o formulário para o ECM conforme o exemplo abaixo (o fichário sera criado na pasta ERP_MP \ <empresas> \ MP_CARDS no ECM): #include "totvs.ch" User Function FormCliente() Local cprocessid := "CLIENTE" // se informado atualiza o formulário relacionado ao processo senão cria um novo Local cdescription := "Formulário do cadastro de cliente" Local ccarddescription := "" Local ahtml := Array(1,2) // arquivos do formulario Local aevents := Array(1,2) // eventos que serão customizados para o formulario Local nformid Local aerror ahtml[1][1] := "cliente.html" // nome do arquivo ahtml[1][2] := '<HTML>'+; // conteúdo do arquivo '<HEAD>'+; ' <TITLE>Exemplo - Cliente</TITLE>'+; ' <LINK REL=STYLESHEET HREF="/webdesk203/wdk/global.css">'+; '</HEAD>'+; '<BODY scroll=yes>'+; '<span class="numsecao">'+; '<strong> Cadastro</strong></span>'+; '<HR>'+; '<br>'+; '<form>'+; '<table>'+; ' <tr> '+; ' <td align="right" width="150" class="labels"><b>código:</b></td>'+; ' <td class="normal"><strong><input type="text" size="6" name="a1_cod"></strong></td>'+; ' </tr>'+; ' <tr> '+; 4

5 ' <td align="right" width="150" class="labels"><b>loja:</b></td>'+; ' <td class="normal"><strong><input type="text" size="2" name="a1_loja"></strong></td>'+; ' </tr>'+; ' <tr> '+; ' <td align="right" width="150" class="labels"><b>física/jurídica:</b></td>'+; ' <td class="normal"><strong>'+; ' <select name="a1_pessoa">'+; ' <option value="f">física</option>'+; ' <option value="j">jurídica</option>'+; ' </select>'+; ' </strong></td>'+; ' </tr>'+; ' <tr> '+; ' <td align="right" width="150" class="labels"><b>nome:</b></td>'+; ' <td class="normal"><strong><input type="text" size="40" name="a1_nome"></strong></td>'+; ' </tr>'+; ' <tr> '+; ' <td align="right" width="150" class="labels"><b>nome Fantasia:</b></td>'+; ' <td class="normal"><strong><input type="text" size="20" name="a1_nreduz"></strong></td>'+; ' </tr>'+; ' <tr> '+; ' <td align="right" width="150" class="labels"><b>endereço:</b></td>'+; ' <td class="normal"><strong><input type="text" size="40" name="a1_end"></strong></td>'+; ' </tr>'+; ' <tr> '+; ' <td align="right" width="150" class="labels"><b>tipo:</b></td>'+; ' <td class="normal"><strong>'+; ' <select name="a1_tipo">'+; ' <option value="f">cons. Final</option>'+; ' <option value="l">produtor Rural</option>'+; ' <option value="r">revendedor</option>'+; ' <option value="s">solidario</option>'+; ' <option value="x">exportacao</option>'+; ' </select>'+; ' </strong></td>'+; ' </tr>'+; ' <tr> '+; ' <td align="right" width="150" class="labels"><b>município:</b></td>'+; ' <td class="normal"><strong><input type="text" size="60" name="a1_mun"></strong></td>'+; ' </tr>'+; ' <tr> '+; ' <td align="right" width="150" class="labels"><b>estado:</b></td>'+; ' <td class="normal"><strong><input type="text" size="2" name="a1_est"></strong></td>'+; ' </tr>'+; ' </table>'+; '</form>'+; '</BODY>'+; '</HTML>' aevents[1][1] := "setenable" // nome do evento aevents[1][2] := 'function setenable() {'+; // script na linguagem JavaScript 'log.info("teste de chamada de função");'+; '' nformid := FWECMPutCard(cProcessId,cDescription,cCardDescription,aHTML,aEvents) // retorna o codigo do fichário no ECM If FWWFIsError() aerror := FWWFGetError() MsgStop(aError[2]) Else MsgInfo("Fichário atualizado com sucesso") Return MVC 1. Configurar a integração para GED entre o Protheus e o ECM no Configurador na opção Ambiente > Totvs ECM > Wizard do GED 5

6 2. Utilizar o método GetXMLLayout do View para gerar o HTML. Somente os componentes Fields e Grid serão convertidos para HTML #include "totvs.ch" User Function FormView() Local oview := FWLoadView("MATA030_MVC") Local cprocessid := "CLIENTE" // se informado atualiza o formulário relacionado ao processo senão cria um novo Local cdescription := "Formulário do cadastro de cliente" Local ccarddescription := "" Local aevents := Array(1,2) // eventos que serão customizados para o formulario Local nformid Local aerror Local afiles Local lhtm :=.T. Local lembedded :=.F. Local ldoctype :=.T. oview:setoperation(3) afiles := oview:getxmllayout(lhtm,lembedded,ldoctype) aevents[1][1] := "setenable" // nome do evento aevents[1][2] := 'function setenable() {'+; // script na linguagem JavaScript 'log.info("teste de chamada de função");'+; '' nformid := FWECMPutCard(cProcessId,cDescription,cCardDescription,aFiles,aEvents) // retorna o codigo do fichário no ECM If FWWFIsError() aerror := FWWFGetError() MsgStop(aError[2]) Else MsgInfo("Fichário atualizado com sucesso") Return Rotina Automática (Modelo 1) Para rotinas automáticas do tipo Modelo 1 (CRUD) que usam somente campos do Dicionário de Dados pode-se utilizar o exemplo abaixo para criar o formulário: #include "totvs.ch" User Function FormTable() Local ctable := "SA1" Local cprocessid := "MATA030" Local cdescription := "Cliente (rotina automatica)" Local oview Local aevents := Array(1,2) // eventos que serão customizados para o formulario Local nformid Local aerror Local afiles Local lhtm :=.T. Local lembedded :=.F. Local ldoctype :=.T. FwAliasMVC(cTable,cProcessId,cDescription) oview := FwLoadView("PROTHEUSMVC") oview:setoperation(3) afiles := oview:getxmllayout(lhtm,lembedded,ldoctype) aevents[1][1] := "setenable" // nome do evento aevents[1][2] := 'function setenable() {'+; // script na linguagem JavaScript 'log.info("teste de chamada de função");'+; 6

7 '' nformid := FWECMPutCard(cProcessId,cDescription,cCardDescription,aFiles,aEvents) // retorna o codigo do fichário no ECM If FWWFIsError() aerror := FWWFGetError() MsgStop(aError[2]) Else MsgInfo("Fichário atualizado com sucesso") Return 2.2 Processo WF 1. Configurar a integração para workflow entre o Protheus e o ECM no Configurador na opção Ambiente > Totvs ECM > Wizard do 2. Utilizar a função FWECMProcess para criar e/ou atualizar o processo no ECM conforme o exemplo abaixo: #include "totvs.ch" User Function ProcCliente() Local cprocessid := "CLIENTE" Local cdescription := "Cadastro de cliente" Local cinstruction := "Instruções de uso do processo" Local nformid := 22 // id do fichário adicionado no ECM no passo anterior Local astates := Array(4,6) // atividades do processo em sequencia para criação automática dos fluxos Local aevents := Array(1,2) // eventos que serão customizados para o processo Local aproperties := Array(1,2) // propriedades que serão utilizadas nos scripts dos eventos do processo Local aerror astates[1][1] := "Início" // atividade astates[1][2] := "" // descrição astates[1][3] := "" // instruções astates[1][4] := 60 //prazo de conclusão em segundos astates[1][5] := 0 // mecanismo de atribuição (zero para nenhum, 1 para grupo ou 2 para usuário) astates[1][6] := "" // código do grupo ou usuário no ECM caso o mecanismo de atribuição seja diferente de zero astates[2][1] := "Revisão" // atividade astates[2][2] := "Revisão do cadastro do cliente" // descrição astates[2][3] := "Revise as informações do cadastro" // instruções astates[2][4] := 60 //prazo de conclusão em segundos astates[2][5] := 0 // mecanismo de atribuição (zero para nenhum, 1 para grupo ou 2 para usuário) astates[2][6] := "" // código do grupo ou usuário no ECM caso o mecanismo de atribuição seja diferente de zero astates[3][1] := "Fim" // atividade astates[3][2] := "Confirmar cadastro" // descrição astates[3][3] := "" // instruções astates[3][4] := 60 //prazo de conclusão em segundos astates[3][5] := 0 // mecanismo de atribuição (zero para nenhum, 1 para grupo ou 2 para usuário) astates[3][6] := "" // código do grupo ou usuário no ECM caso o mecanismo de atribuição seja diferente de zero aevents[1][1] := "beforetasksave" // script na linguagem JavaScript aevents[1][2] := 'function beforetasksave(colleagueid,nextsequenceid,userlist){'+; 'var A1_COD = hapi.getcardvalue("a1_cod");'+; 'if (A1_COD == ""){'+; ' throw "O campo Código é obrigatório"'+; ''+; '' aproperties[1][1] := "TABLE" // nome da propriedade aproperties[1][2] := "SA1" // valor 7

8 FWECMProcess(cProcessId, cdescription, cinstruction, nformid, astates, aevents, aproperties) If FWWFIsError() aerror := FWWFGetError() MsgStop(aError[2]) Else MsgInfo("Processo atualizado com sucesso") Return 2.3 Validação do formulário A validação do formulário dos processos no ECM é realizada através da customização dos eventos dos fichários e processos utilizando scripts na linguagem JavaScript. Os eventos podem ser implementados no próprio ECM ou enviados pelo Protheus como parâmetro das funções utilizadas nos exemplos anteriores. Para validar os campos informados pelo usuário utilizar o evento beforetasksave do processo que é executado em cada confirmação de tarefa para enviar para a próxima etapa do workflow. Para acessar o valor de um campo do formulário utilizar a API do workflow hapi. getcardvalue(<nomecampo>) e para o tratamento de exeções utilizar o comando throw <mensagem> que apresentará a mensagem para o usuário impendindo que prossiga enquanto não corrigir as informações digitadas Script do evento no ECM Validações simples podem ser realizadas no script do evento para evitar a comunicação desnecessário ao Protheus retornando imediatamente uma mensagem ao usuário. function beforetasksave(colleagueid,nextsequenceid,userlist){ var A1_COD = hapi.getcardvalue("a1_cod"); if (A1_COD == ""){ throw "O campo Código é obrigatório" Protheus A validação nos scripts dos eventos utilizando aplicações externas é realizada atraves de WebServices que devem ser cadastradas como serviço no ECM na opção Painel de Controle > Serviços > Adicionar. Quando qualquer definição do WebService for alterada ou incluída será necessário atualizar o ECM na opção Painel de Controle > Serviços > Editar > Atualizar. O WebService pode ser cadastrado através do Painel de Controle do ECM ou pelo Protheus utilizando a função FWWFPutService como no exemplo abaixo. #include "totvs.ch" User Function WSCliente() Local cname := "WSCLIENTE" Local curl := "http://hostname:8080/ws/exemplo.apw?wsdl" Local cdescription := "Serviço para validação e atualização do cadastro de cliente" If FWWFPutService(cName,cUrl,cDescription) MsgInfo("Serviço cadastrado com sucesso") Return 8

9 2.3.3 WebService Exemplo de WebService do Protheus: #include "totvs.ch" #include "apwebsrv.ch" WSSERVICE WSCLIENTE DESCRIPTION "Exemplo cadastro de cliente" WSDATA A1_COD AS STRING WSDATA A1_LOJA AS STRING WSDATA XML AS Base64Binary WSDATA RETEXISTCOD AS BOOLEAN WSDATA RETINCLUIR AS BOOLEAN WSMETHOD ExistCod DESCRIPTION "Verifica se codigo do cliente ja existe" WSMETHOD Incluir DESCRIPTION "Inclui cliente" ENDWSSERVICE WSMETHOD ExistCod WSRECEIVE A1_COD,A1_LOJA WSSEND RETEXISTCOD WSSERVICE WSCLIENTE Private INCLUI :=.T. ::RETEXISTCOD := existchav("sa1",::a1_cod+::a1_loja) Return.T. WSMETHOD Incluir WSRECEIVE XML WSSEND RETINCLUIR WSSERVICE WSCLIENTE Local oxml := txmlmanager():new() Local lret :=.T. Local adadoscli := { If oxml:parse(::xml) aadd( adadoscli, { "A1_COD", oxml:xpathgetnodevalue("/sa1/a1_cod"), NIL ) aadd( adadoscli, { "A1_LOJA", oxml:xpathgetnodevalue("/sa1/a1_loja"), NIL ) aadd( adadoscli, { "A1_TIPO", oxml:xpathgetnodevalue("/sa1/a1_tipo"), NIL ) aadd( adadoscli, { "A1_PESSOA", oxml:xpathgetnodevalue("/sa1/a1_pessoa"), NIL ) aadd( adadoscli, { "A1_NOME", oxml:xpathgetnodevalue("/sa1/a1_nome"), NIL ) aadd( adadoscli, { "A1_NREDUZ", oxml:xpathgetnodevalue("/sa1/a1_nreduz"), NIL ) aadd( adadoscli, { "A1_END", oxml:xpathgetnodevalue("/sa1/a1_end"), NIL ) aadd( adadoscli, { "A1_MUN", oxml:xpathgetnodevalue("/sa1/a1_mun"), NIL ) aadd( adadoscli, { "A1_EST", oxml:xpathgetnodevalue("/sa1/a1_est"), NIL ) lmserroauto :=.F. MSExecAuto( { x, y MATA030( x, y ), adadoscli, 3 ) If lmserroauto If lsx8 RollBackSX8() ::RETINCLUIR :=.F. Else If lsx8 ConFirmSX8() ::RETINCLUIR :=.T. Else SetSoapFault("WSCLIENTE:INCLUIR",oXML:LastError()) lret :=.F. Return lret 9

10 Validação no script do evento beforetasksave: 1. Invocar a carga do serviço com o método ServiceManager.getService 2. Utilizar o método getbean para retornar o utilitário para acesso as classes do serviço através do método instantiate enviando como parâmetro a classe Locator que esta descrita no ECM em Painel de Controle > Serviços, selecionar o serviço e clicar em Visualizar 3. Invocar o método para instanciar o serviço (no exemplo getwsclientesoap) que também esta descrito na opção Painel de Controle > Serviços > Visualizar 4. Invocar o método do serviço (no exemplo ExistCod) function beforetasksave(colleagueid,nextsequenceid,userlist){ var A1_COD = hapi.getcardvalue("a1_cod"); if (A1_COD == ""){ throw "O campo Código é obrigatório" var wsservice = ServiceManager.getService("WSCLIENTE"); var servicehelper = wsservice.getbean(); var servicelocator = servicehelper.instantiate("localhost.wsclientelocator"); var service = servicelocator.getwsclientesoap(); var ret = false; try { ret = service.existcod(a1_cod); catch(erro){ throw erro.message if (!ret) { throw "Cliente já existe"; MVC A validação do processo de uma rotina MVC é realizada utilizando o WebService FWWSMODEL (http://hostexemplo:8080/ws/fwwsmodel.apw?wsdl) com a invocação do método GETXMLDATADETAIL que retorna o XML do model para popular os dados e do método VLDXMLDATA que validará o XML. #include "totvs.ch" User Function WSMVC() Local cname := "TOTVS_FWMVC" Local curl := "http://hostname:8080/ws/fwwsmodel.apw?wsdl " Local cdescription := "Serviço do TOTVS MVC para integração de rotinas/programas com ECM" Local aservice := FWWFGetService(cName) If Empty(aService).and. FWWFPutService(cName,cUrl,cDescription) MsgInfo("Serviço cadastrado com sucesso") Return Validação no script do evento beforetasksave: function beforetasksave(colleagueid,nextsequenceid,userlist){ var wsservice = ServiceManager.getService("TOTVS_FWMVC"); var servicehelper = wsservice.getbean(); 10

11 var servicelocator = servicehelper.instantiate("br.com.totvs.webservices.fwwsmodel_apw.fwwsmodellocator"); var service = servicelocator.getfwwsmodelsoap(); var err = {message:"", empty:true; var ret, xml; try { ret = service.getxmldatadetail([],"mata030_mvc"); xml = new XML(new String(new java.lang.string(ret)).replace(/<\?.*\?>/g,"")); catch(erro){ throw erro.message; return; updatexmlfields(xml,err); if (err.message.length > 0){ throw err.message; else if (err.empty){ throw "Preencha o formulário"; else{ = 3"); try{ service.vldxmldata([],"mata030_mvc",new java.lang.string(xml.toxmlstring()).getbytes()); catch(e){ throw e.message; function updatexmlfields(node,err){ var list = node.children(); var name,value; for (var i=0;i<list.length();i++){ switch case "FIELDS": updatexmlfields(list[i],err); default: name = list[i].name().localname; value = hapi.getcardvalue(name); if (value!= null) list[i].value = convertvalue(name,list[i],value,err); if (err.message.length > 0) function convertvalue(name,struct,value,err){ var y,m,d,n,len,str,reg var setyear = new Date().getFullYear().toString().substring(0,2); var setdate = "dd/mm/yyyy"; var ycount = setdate.match(/yyyy/)? 4 : 2; var haserr = false; 11

12 value = value.trim(); switch case "D": if (value.replace("/","").trim()!= ""){ len = value.length(); d = setdate.indexof("d"); m = setdate.indexof("m"); y = setdate.indexof("y"); if (d + 2 > len m + 2 > len y + ycount > len){ else{ str = value.substr(m,2) + value.substr(d,2); if (ycount == 4) str = value.substr(y,4) + str; else str = setyear + value.substr(y,2) + str; if (str.match(/((((19 20)(([02468][048]) ([13579][26]))0229)) ((19 20)[0-9][0-9])((((0[1-9]) (1[0-2]))((0[1-9]) (1\d) (2[0-8]))) ((((0[13578]) (1[02]))31) (((0[1,3-9]) (1[0-2]))(29 30)))))/g)) value = new java.lang.string(str); else if (haserr) err.message = "O campo ("+name+") contém uma data inválida"; else case "N": len = if (len[1] == "0"){ reg = new RegExp("^[0-9]{1,"+len[0]+"$"); str = value.replace(",",""); str = value.replace(".",""); err.message = "O campo ("+name+") contém um número (valor ou tamanho) inválido" if (!haserr){ n = parseint(str); if (!isnan(n)){ value = new java.lang.string(str); if (n > 0) else{ reg = new RegExp("^0$ ^0\.[0-9]{1,"+len[1]+"$ ^[0-9]{0,"+len[0]+"(\.[0-9]{1,"+len[1]+")?$"); str = value.replace(".","").replace(",","."); 12

13 str = value.replace(",",""); err.message = "O campo ("+name+") contém um número (valor ou tamanho) inválido" if (!haserr){ n = parsefloat(str); if (!isnan(n)){ value = new java.lang.string(str); if (n > 0) default: if (value!= "") return value; function Trim(str){return str.replace(/^\s+ \s+$/g,""); 2.4 Atualização do Protheus A atualização dos dados no Protheus também é realizada atraves de WebServices como visto na validação utilizando o evento do processo afterprocessfinish que é executado na finalização da solicitação. function afterprocessfinish(processid){ var wsservice = ServiceManager.getService("WSCLIENTE"); var servicehelper = wsservice.getbean(); var servicelocator = servicehelper.instantiate("localhost.wsclientelocator"); var service = servicelocator.getwsclientesoap(); var SA1 = new XML("<SA1/>"); SA1.A1_COD = hapi.getcardvalue("a1_cod"); SA1.A1_LOJA = hapi.getcardvalue("a1_loja"); SA1.A1_TIPO = hapi.getcardvalue("a1_tipo"); SA1.A1_PESSOA = hapi.getcardvalue("a1_pessoa"); SA1.A1_NOME = hapi.getcardvalue("a1_nome"); SA1.A1_NREDUZ = hapi.getcardvalue("a1_nreduz"); SA1.A1_END = hapi.getcardvalue("a1_end"); SA1.A1_MUN = hapi.getcardvalue("a1_mun"); SA1.A1_EST = hapi.getcardvalue("a1_est"); try { ret = service.incluir(new java.lang.string(sa1.toxmlstring()).getbytes()); catch(erro){ throw erro.message 13

14 2.4.1 MVC A validação do processo de uma rotina MVC é também é realizada utilizando o WebService FWWSMODEL (http://hostexemplo:8080/ws/fwwsmodel.apw?wsdl) com a invocação do método GETXMLDATADETAIL que retorna o XML do model para popular os dados e do método PUTXMLDATA que gravar o XML. function afterprocessfinish(processid){ var wsservice = ServiceManager.getService("TOTVS_FWMVC"); var servicehelper = wsservice.getbean(); var servicelocator = servicehelper.instantiate("br.com.totvs.webservices.fwwsmodel_apw.fwwsmodellocator"); var service = servicelocator.getfwwsmodelsoap(); var err = {message:"", empty:true; var ret, xml; try { ret = service.getxmldatadetail([],"mata030_mvc"); xml = new XML(new String(new java.lang.string(ret)).replace(/<\?.*\?>/g,"")); catch(erro){ throw erro.message; return; updatexmlfields(xml,err); = 3"); try{ service.putxmldata([],"mata030_mvc",new java.lang.string(xml.toxmlstring()).getbytes()); catch(e){ throw e.message; function updatexmlfields(node,err){ var list = node.children(); var name,value; for (var i=0;i<list.length();i++){ switch case "FIELDS": updatexmlfields(list[i],err); default: name = list[i].name().localname; value = hapi.getcardvalue(name); if (value!= null) list[i].value = convertvalue(name,list[i],value,err); if (err.message.length > 0) function convertvalue(name,struct,value,err){ var y,m,d,n,len,str,reg var setyear = new Date().getFullYear().toString().substring(0,2); 14

15 var setdate = "dd/mm/yyyy"; var ycount = setdate.match(/yyyy/)? 4 : 2; var haserr = false; value = value.trim(); switch case "D": if (value.replace("/","").trim()!= ""){ len = value.length(); d = setdate.indexof("d"); m = setdate.indexof("m"); y = setdate.indexof("y"); if (d + 2 > len m + 2 > len y + ycount > len){ else{ str = value.substr(m,2) + value.substr(d,2); if (ycount == 4) str = value.substr(y,4) + str; else str = setyear + value.substr(y,2) + str; if (str.match(/((((19 20)(([02468][048]) ([13579][26]))0229)) ((19 20)[0-9][0-9])((((0[1-9]) (1[0-2]))((0[1-9]) (1\d) (2[0-8]))) ((((0[13578]) (1[02]))31) (((0[1,3-9]) (1[0-2]))(29 30)))))/g)) value = new java.lang.string(str); else if (haserr) err.message = "O campo ("+name+") contém uma data inválida"; else case "N": len = if (len[1] == "0"){ reg = new RegExp("^[0-9]{1,"+len[0]+"$"); str = value.replace(",",""); str = value.replace(".",""); err.message = "O campo ("+name+") contém um número (valor ou tamanho) inválido" if (!haserr){ n = parseint(str); if (!isnan(n)){ value = new java.lang.string(str); if (n > 0) 15

16 else{ reg = new RegExp("^0$ ^0\.[0-9]{1,"+len[1]+"$ ^[0-9]{0,"+len[0]+"(\.[0-9]{1,"+len[1]+")?$"); str = value.replace(".","").replace(",","."); str = value.replace(",",""); err.message = "O campo ("+name+") contém um número (valor ou tamanho) inválido" if (!haserr){ n = parsefloat(str); if (!isnan(n)){ value = new java.lang.string(str); if (n > 0) default: if (value!= "") return value; function Trim(str){return str.replace(/^\s+ \s+$/g,""); Rotina Automática (Modelo 1) Como as rotinas automáticas após validarem executam a atualização ao invés de utilizar o evento afterprocessfinish utilizar o evento beforetasksave quando o processo estiver na atividade fim. Além do WebService do MVC utilizar também o FWWSMODEL (http://hostexemplo:8080/ws/fwwsecm.apw?wsdl) com a invocação do método PUTDATA. #include "totvs.ch" User Function WSMVC() Local cname := "TOTVS_FWWSECM" Local curl := "http://hostname:8080/ws/fwwsecm.apw?wsdl" Local cdescription := "Serviço do TOTVS Microsiga Protheus para integração de rotinas automáticas com ECM" Local aservice := FWWFGetService(cName) If Empty(aService).and. FWWFPutService(cName,cUrl,cDescription) MsgInfo("Serviço cadastrado com sucesso") Return Evento beforetasksave: function beforetasksave(colleagueid,nextsequenceid,userlist){ var wsservice = ServiceManager.getService("TOTVS_FWMVC"); var servicehelper = wsservice.getbean(); var servicelocator = servicehelper.instantiate("br.com.totvs.webservices.fwwsmodel_apw.fwwsmodellocator"); var service = servicelocator.getfwwsmodelsoap(); var err = {message:"", empty:true; 16

17 var ret, xml; try { ret = service.getxmldatadetail([],"mata030_mvc"); xml = new XML(new String(new java.lang.string(ret)).replace(/<\?.*\?>/g,"")); catch(erro){ throw erro.message; return; updatexmlfields(xml,err); if (err.message.length > 0){ throw err.message; else if (err.empty){ throw "Preencha o formulário"; else{ wsservice = ServiceManager.getService("TOTVS_FWWSECM"); servicehelper = wsservice.getbean(); servicelocator = servicehelper.instantiate("br.com.totvs.webservices.fwwsecm_apw.fwwsecmlocator"); service = servicelocator.getfwwsmodelsoap(); = 3"); try{ service.putdata([],"sa1","mata030",new java.lang.string(xml.toxmlstring()).getbytes());; catch(e){ throw e.message; function updatexmlfields(node,err){ var list = node.children(); var name,value; for (var i=0;i<list.length();i++){ switch case "FIELDS": updatexmlfields(list[i],err); default: name = list[i].name().localname; value = hapi.getcardvalue(name); if (value!= null) list[i].value = convertvalue(name,list[i],value,err); if (err.message.length > 0) function convertvalue(name,struct,value,err){ var y,m,d,n,len,str,reg var setyear = new Date().getFullYear().toString().substring(0,2); var setdate = "dd/mm/yyyy"; var ycount = setdate.match(/yyyy/)? 4 : 2; 17

18 var haserr = false; value = value.trim(); switch case "D": if (value.replace("/","").trim()!= ""){ len = value.length(); d = setdate.indexof("d"); m = setdate.indexof("m"); y = setdate.indexof("y"); if (d + 2 > len m + 2 > len y + ycount > len){ else{ str = value.substr(m,2) + value.substr(d,2); if (ycount == 4) str = value.substr(y,4) + str; else str = setyear + value.substr(y,2) + str; if (str.match(/((((19 20)(([02468][048]) ([13579][26]))0229)) ((19 20)[0-9][0-9])((((0[1-9]) (1[0-2]))((0[1-9]) (1\d) (2[0-8]))) ((((0[13578]) (1[02]))31) (((0[1,3-9]) (1[0-2]))(29 30)))))/g)) value = new java.lang.string(str); else if (haserr) err.message = "O campo ("+name+") contém uma data inválida"; else case "N": len = if (len[1] == "0"){ reg = new RegExp("^[0-9]{1,"+len[0]+"$"); str = value.replace(",",""); str = value.replace(".",""); err.message = "O campo ("+name+") contém um número (valor ou tamanho) inválido" if (!haserr){ n = parseint(str); if (!isnan(n)){ value = new java.lang.string(str); if (n > 0) else{ reg = new RegExp("^0$ ^0\.[0-9]{1,"+len[1]+"$ ^[0-9]{0,"+len[0]+"(\.[0-9]{1,"+len[1]+")?$"); 18

19 str = value.replace(".","").replace(",","."); str = value.replace(",",""); err.message = "O campo ("+name+") contém um número (valor ou tamanho) inválido" if (!haserr){ n = parsefloat(str); if (!isnan(n)){ value = new java.lang.string(str); if (n > 0) default: if (value!= "") return value; function Trim(str){return str.replace(/^\s+ \s+$/g,""); 19

HAT Programação Auditoria Pós. 12.1.x. abril de 2015. Versão: 2.0

HAT Programação Auditoria Pós. 12.1.x. abril de 2015. Versão: 2.0 HAT Programação Auditoria Pós 12.1.x abril de 2015 Versão: 2.0 1 Sumário 1 Introdução... 3 2 Visão do Processo... 3 3 Serviço... 5 4 Dataset... 7 5 Formulário Principal AuditoriaPos... 9 6 Arquitetura

Leia mais

Lista de Revisão. 3. Analise a afirmativa a seguir como verdadeira ou falsa e justifique.

Lista de Revisão. 3. Analise a afirmativa a seguir como verdadeira ou falsa e justifique. Lista de Revisão 1. Nos sistemas web, geralmente os usuários apresentam dois problemas típicos, a desorientação e a sobrecarga cognitiva. Discorra sobre esses problemas. 2. Apresente as principais diferenças

Leia mais

Basicamente iremos precisar de uma base de dados na qual iremos armazenar os registros feitos pelos vistantes: Vamos armazenar os seguintes dados:

Basicamente iremos precisar de uma base de dados na qual iremos armazenar os registros feitos pelos vistantes: Vamos armazenar os seguintes dados: Livro de Visitas Basicamente iremos precisar de uma base de dados na qual iremos armazenar os registros feitos pelos vistantes: Vamos armazenar os seguintes dados: ID nome email mensagem data O código

Leia mais

BI Citsmart Fornece orientações necessárias para instalação, configuração e utilização do BI Citsmart.

BI Citsmart Fornece orientações necessárias para instalação, configuração e utilização do BI Citsmart. 16/08/2013 BI Citsmart Fornece orientações necessárias para instalação, configuração e utilização do BI Citsmart. Versão 1.0 19/12/2014 Visão Resumida Data Criação 19/12/2014 Versão Documento 1.0 Projeto

Leia mais

Construindo um sistema simples de cadastro de fornecedores em PHP e MySQL.

Construindo um sistema simples de cadastro de fornecedores em PHP e MySQL. Construindo um sistema simples de cadastro de fornecedores em PHP e MySQL. Procuraremos mostrar os principais procedimentos para fazer um cadastro de registros numa base de dados MySQL utilizando a linguagem

Leia mais

Prof Evandro Manara Miletto. parte 2

Prof Evandro Manara Miletto. parte 2 Prof Evandro Manara Miletto parte 2 Sumário Estruturas de Controle Eventos Estruturas de controle características Estruturas de controle (ou condicionais) são executadas caso um teste seja atendido Permite

Leia mais

Auditoria Pós - Programação

Auditoria Pós - Programação Auditoria Pós - Programação Julho - 2014 Índice 1. Introdução... 3 2. Visão do Processo... 3 3. Serviço... 4 4. Dataset... 6 5. Formulário Principal AuditoriaPos... 8 6. Arquitetura do Formulário HTML

Leia mais

O que é o Javascript?

O que é o Javascript? O que é o Javascript? JavaScript é uma linguagem para criação de Home-Pages. Funções escritas em JavaScript podem ser embutidas dentro de seu documento HTML. Com JavaScript você tem muitas possibilidades

Leia mais

Programação Web Prof. Wladimir

Programação Web Prof. Wladimir Programação Web Prof. Wladimir Linguagem PHP @wre2008 1 Sumário PHP: Tipos de dados; Manipulação de dados; Utilizando formulário. @wre2008 2 Tipos de dados As variáveis são declaradas no momento de sua

Leia mais

JavaScript: Validação de Formulários. Prof. Ivanilton Polato ipolato@utfpr.edu.br ipolato@gmail.com

JavaScript: Validação de Formulários. Prof. Ivanilton Polato ipolato@utfpr.edu.br ipolato@gmail.com JavaScript: Validação de Formulários Prof. Ivanilton Polato ipolato@utfpr.edu.br ipolato@gmail.com Validação de Formulários Um dos usos mais frequentes do JS é a validação de formulários. Além de garantir

Leia mais

6. Introdução à Linguagem PHP

6. Introdução à Linguagem PHP 6. Introdução à Linguagem PHP A comunicação na Web exige dois agentes: o cliente web e o servidor web. O cliente requer informação (a partir de uma página HTML acessada pelo navegador) e o servidor fornece

Leia mais

Material de Apoio Configuração Auditoria Pós

Material de Apoio Configuração Auditoria Pós Material de Apoio Configuração Auditoria Pós Julho - 2014 Índice 1. Introdução... 3 2. Ambiente... 3 3. Serviço... 4 4. Dataset... 6 5. Formulário... 6 6. Processo... 12 6.1 Importação de Processos...

Leia mais

Capítulo 4. Programação em ASP

Capítulo 4. Programação em ASP Índice: CAPÍTULO 4. PROGRAMAÇÃO EM ASP...2 4.1 REGISTRAR...2 4.1.1 Códigos para configuração do objeto...2 4.1.2 Formulário para transferir dados da impressão digital...3 4.1.3 Código Javascript para registro

Leia mais

Os objetivos indicados aplicam-se a duas linguagens de programação: C e PHP

Os objetivos indicados aplicam-se a duas linguagens de programação: C e PHP AGRUPAMENTO DE ESCOLAS DE SANTA COMBA DÃO CURSO PROFISSIONAL DE TÉCNICO DE GESTÃO E PROGRAMAÇÃO DE SISTEMAS INFORMÁTICOS 2012-2015 PROGRAMAÇÃO E SISTEMAS DE INFORMAÇÃO MÓDULO 2 Mecanismos de Controlo de

Leia mais

Conteúdo. DHTML tópicos Hamilton Lima - 2002-2004

Conteúdo. DHTML tópicos Hamilton Lima - 2002-2004 DHTML tópicos Hamilton Lima - 2002-2004 Conteúdo 1. meu primeiro script... 2 2. DOM Document Object Model...2 3. tipo de execução de scripts...2 4. resposta a um evento... 3 5. tipos de dados, variaveis

Leia mais

Validação de formulários utilizando Javascript

Validação de formulários utilizando Javascript Validação de formulários utilizando Javascript A validação de formulários é um dos usos mais comuns na programação Javascript. A validação de dados por meio da programação Javascript é muito fácil e rápida

Leia mais

CAPITULO 5 COMANDO DE FLUXO IF

CAPITULO 5 COMANDO DE FLUXO IF CAPITULO 5 COMANDO DE FLUXO IF Sempre que for necessária a tomada de decisão dentro de um programa, você terá que utilizar um comando condicional, pois é por meio dele que o PHP decidirá que lógica deverá

Leia mais

Programação para a Internet II 2.13. PHP AJAX. Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt

Programação para a Internet II 2.13. PHP AJAX. Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt Programação para a Internet II 2.13. PHP AJAX Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt Ajax não é uma tecnologia! É um conceito! Consiste no uso do objecto XMLHttpRequest que se encontra implementado

Leia mais

JavaScript 2.0X 1.0 3.0X 1.1 4.0 4.05 1.2 4.06 4.61 1.3 5.0 1.4 6.0 1.5

JavaScript 2.0X 1.0 3.0X 1.1 4.0 4.05 1.2 4.06 4.61 1.3 5.0 1.4 6.0 1.5 JavaScript Diego R. Frank, Leonardo Seibt FIT Faculdades de Informática de Taquara Fundação Educacional Encosta Inferior do Nordeste Av. Oscar Martins Rangel, 4500 Taquara RS Brasil difrank@terra.com.br,

Leia mais

GUIA PHP com MYSQL Autor: Everton Mendes Messias

GUIA PHP com MYSQL Autor: Everton Mendes Messias PHP (Hypertext Preprocessor) : Linguagem de programação interpretada. Tags PHP: phpinfo(); Comentários: //, # - comentário de uma linha /* comentário de várias linhas */ GUIA PHP com MYSQL Autor: Everton

Leia mais

PROGRAMAÇÃO PARA INTERNET. Fonte: Raul Paradeda

PROGRAMAÇÃO PARA INTERNET. Fonte: Raul Paradeda PROGRAMAÇÃO PARA INTERNET Introdução à AJAX Fonte: Raul Paradeda INTRODUÇÃO Para entender o que é o AJAX é necessário ter o prévio conhecimento de: HTML / XHTML; Javascript; CSS; XML. INTRODUÇÃO Ao pesquisar

Leia mais

Framework MIOLO 2.5 Tutorial: Criando um módulo

Framework MIOLO 2.5 Tutorial: Criando um módulo Framework MIOLO 2.5 Tutorial: Criando um módulo Versão 2011.1.oracle CGCO/UFJF Framework MIOLO 2.5 Tutorial: Criando um módulo 1. Introdução O processo de desenvolvimento de aplicações com o MIOLO possui

Leia mais

HTML / JAVASCRIPT. A versão atual é o HTML5 (seus predecessores imediatos são HTML 4.01, XHTML 1.1, etc.).

HTML / JAVASCRIPT. A versão atual é o HTML5 (seus predecessores imediatos são HTML 4.01, XHTML 1.1, etc.). HTML / JAVASCRIPT Estamos iniciando o estudo do HTML através das TAGS (comandos) para construir formulários. Isso facilitará a continuidade dos nossos estudos da linguagem de programação JavaScript, a

Leia mais

Manual de Integração Protheus x Reserve

Manual de Integração Protheus x Reserve Novembro/2013 Sumário 1. Introdução... 3 2. Requisitos... 3 3. Dicionário de Dados... 3 4. Parâmetros... 5 5. Instalação/Atualização... 6 6. Contexto de negócio... 9 7. Escopo e Finalidade... 9 8. Como

Leia mais

Desenvolvimento de Aplicações para Internet

Desenvolvimento de Aplicações para Internet Desenvolvimento de Aplicações para Internet Aula 03 Celso Olivete Júnior olivete@fct.unesp.br Na aula de hoje... Javascript: introdução, operadores lógicos e matemáticos, comandos condicionais. Javascript:

Leia mais

SISTEMA GERENCIAMENTO DE PRODUTOS PHP E MySQL 1. APRESENTAÇÃO

SISTEMA GERENCIAMENTO DE PRODUTOS PHP E MySQL 1. APRESENTAÇÃO SISTEMA GERENCIAMENTO DE PRODUTOS PHP E MySQL 1. APRESENTAÇÃO Este é um sistema de controle de produtos, onde o usuário irá entrar com o login e a senha, e se ele for um usuário cadastrado na tabela usuários

Leia mais

Para testar seu primeiro código utilizando PHP, abra um editor de texto (bloco de notas no Windows) e digite o código abaixo:

Para testar seu primeiro código utilizando PHP, abra um editor de texto (bloco de notas no Windows) e digite o código abaixo: Disciplina: Tópicos Especiais em TI PHP Este material foi produzido com base nos livros e documentos citados abaixo, que possuem direitos autorais sobre o conteúdo. Favor adquiri-los para dar continuidade

Leia mais

Altere a cor de fundo Altere a cor do texto Utilize meta tags e direcione a página para um site qualquer

Altere a cor de fundo Altere a cor do texto Utilize meta tags e direcione a página para um site qualquer Exercício A11 - Digite o código abaixo e salve-o como ex1.htm. Documento com fundo azul!! Página com fundo e texto coloridos!

Leia mais

JAVASCRIPT. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br)

JAVASCRIPT. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) JAVASCRIPT Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) JAVASCRIPT É a linguagem de script da Web Adicionam funcionalidades às páginas HTML Validação de entrada Comunicação com servidores Web Entre

Leia mais

Vamos criar nosso formulário, vou utilizar aqui como exemplo cinco campos para upload:

Vamos criar nosso formulário, vou utilizar aqui como exemplo cinco campos para upload: Upload de vários arquivos com PHP 22.856 visualizações 2 1 Fala pessoal, hoje irei ensinar a fazer upload de vários arquivos de uma vez, ou seja, ao invés de criar apenas um campo para o usuário selecionar

Leia mais

Conteúdo. Especificação HTTP v1.1

Conteúdo. Especificação HTTP v1.1 Conteúdo Introdução... 2 Início e comandos básicos... 2 Exemplo método GET... 3 Exemplo método POST... 3 Códigos de retorno... 4 Exemplo para envio em Cold Fusion... 4 Exemplo para envio em PHP... 5 Exemplo

Leia mais

AJAX é baseado nos seguintes padrões WEB: JavaScript, XML, HTML, CSS.

AJAX é baseado nos seguintes padrões WEB: JavaScript, XML, HTML, CSS. AJAX AJAX é acrônimo de Asynchronous JavaScript And XML. É um tipo de programação que se tornou popular in 2005 pela Google (com Google Suggest). AJAX não é uma nova linguagem de programação, mas uma nova

Leia mais

O código JavaScript deve ser colocado entre tags de comentário para ficar escondido no caso de navegadores antigos que não reconhecem a linguagem.

O código JavaScript deve ser colocado entre tags de comentário para ficar escondido no caso de navegadores antigos que não reconhecem a linguagem. 1 - O que é JAVASCRIPT? É uma linguagem de script orientada a objetos, usada para aumentar a interatividade de páginas Web. O JavaScript foi introduzido pela Netscape em seu navegador 2.0 e posteriormente

Leia mais

MÓDULO Programação para Web 2

MÓDULO Programação para Web 2 MÓDULO Programação para Web 2 USANDO O JSF Continuação Interdependência e Injeção Instâncias de Managed Beans podem conversar entre si para dividir o processamento das requisições dos usuários de acordo

Leia mais

Unidade 9: Middleware JDBC para Criação de Beans

Unidade 9: Middleware JDBC para Criação de Beans Programação Servidor para Sistemas Web 1 Unidade 9: Middleware JDBC para Criação de Beans Implementando MVC Nível 1 Prof. Daniel Caetano Objetivo: Preparar o aluno para construir classes de entidade com

Leia mais

Tutorial - Programando com o MIOLO

Tutorial - Programando com o MIOLO Tutorial - Programando com o MIOLO Conceitos Básicos Antes de iniciar a programação com o Miolo é fundamental compreender alguns conceitos básicos: - Uma aplicação no Miolo é constituída de um ou mais

Leia mais

Interagindo com Banco de Dados

Interagindo com Banco de Dados Interagindo com Banco de Dados Até agora não falamos de banco de dados, pois gostaríamos prime iro de te preparar para o uso do banco de dados dentro do Framework MVC. Mas antes de falarmos do framework

Leia mais

Programação web Prof. Wladimir

Programação web Prof. Wladimir Programação web Prof. Wladimir Linguagem PHP Cookie e Sessão @wre2008 1 Sumário Header; Cookie; Sessão; Exemplos. @wre2008 2 Header Esta função permite que um script php redirecione para outra página.

Leia mais

Integração SmartClientHTML x WorkSite

Integração SmartClientHTML x WorkSite Maio/2015 Título do documento Sumário 1. Integração... 3 2. Mecanismo... 3 3. Campos dos anexos WorkSite... 4 4. Instalação / Atualização... 5 5. Controle de Versão... 5 6. Suporte... 5 7. Transações/Entidades/Mensagens

Leia mais

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza ROTEIRO Introdução App de exemplo Implementação do exemplo Testes realizados

Leia mais

7. Recursos PHP para a Internet

7. Recursos PHP para a Internet 7. Recursos PHP para a Internet Protocolo HTTP. Na aula passada vimos um script simples de autenticação de usuários. Neste script foi usado o tag META para passar uma URL ao servidor web. A linguagem PHP

Leia mais

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza ROTEIRO Introdução App de exemplo Implementação do exemplo Testes realizados

Leia mais

4 O Workflow e a Máquina de Regras

4 O Workflow e a Máquina de Regras 4 O Workflow e a Máquina de Regras O objetivo do workflow e da máquina de regras é definir um conjunto de passos e regras configuráveis. Ao longo de sua execução, um usuário consegue simplificar o seu

Leia mais

Exercícios Práticos de HTML e JavaScript.

Exercícios Práticos de HTML e JavaScript. <FORM ACTION=mailto:teste@gmail.com METHOD=POST ENCTYPE=text/plain NAME=cadastro> Exercícios Práticos de HTML e JavaScript Exercício 1: Formulário Padrão HTML SEM JavaScript

Leia mais

13 Conectando PHP com MySQL 13.1 Introdução

13 Conectando PHP com MySQL 13.1 Introdução 13 Conectando PHP com MySQL 13.1 Introdução Agora que você já tem uma idéia básica de comandos MySQL, poderemos ver como a linguagem PHP pode interagir com este banco de dados através de inúmeras funções.

Leia mais

JavaScript (Funções, Eventos e Manipulação de Formulários)

JavaScript (Funções, Eventos e Manipulação de Formulários) Linguagem de Programação para Web JavaScript (Funções, Eventos e Manipulação de Formulários) Prof. Mauro Lopes 1-31 23 Objetivos Iremos avançar um pouco mais em nosso estudo sobre o JavaScript. Iremos

Leia mais

ARQUITETURA SISGRAD. Manual de Utilização. Versão: 2.0. Criação: 05 de julho de 2007 Autor: André Penteado

ARQUITETURA SISGRAD. Manual de Utilização. Versão: 2.0. Criação: 05 de julho de 2007 Autor: André Penteado ARQUITETURA SISGRAD Manual de Utilização Versão: 2.0 Criação: 05 de julho de 2007 Autor: André Penteado Última Revisão: 09 de outubro de 2009 Autor: Alessandro Moraes Controle Acadêmico - Arquitetura SISGRAD

Leia mais

Tecnologias para apresentação de dados - Java Script. Aécio Costa

Tecnologias para apresentação de dados - Java Script. Aécio Costa Tecnologias para apresentação de dados - Java Script Aécio Costa Foi originalmente implementada como parte dos navegadores web para que scripts pudessem ser executados do lado do cliente e interagissem

Leia mais

Programação para Internet I

Programação para Internet I Programação para Internet I Aulas 09 e 10 Fernando F. Costa nando@fimes.edu.br Formulários O formulário representa o modo mais importante de interatividade que a linguagem HTML oferece. Um formulário pode

Leia mais

Módulos Customizados. Descomplicando a criação de módulos personalizados para Drupal 7

Módulos Customizados. Descomplicando a criação de módulos personalizados para Drupal 7 O que veremos nessa palestra? # Entendendo o funcionamento dos módulos # Exemplo prático # Ferramentas que apoiam o desenvolvimento # Conclusão Apresentação Apresentação Rafael Silva @rfsbsb Apresentação

Leia mais

JSP - ORIENTADO A OBJETOS

JSP - ORIENTADO A OBJETOS JSP Orientação a Objetos... 2 CLASSE:... 2 MÉTODOS:... 2 Método de Retorno... 2 Método de Execução... 2 Tipos de Dados... 3 Boolean... 3 Float... 3 Integer... 4 String... 4 Array... 4 Primeira:... 4 Segunda:...

Leia mais

Manual de Integração SMS

Manual de Integração SMS NG Sistemas Manual de Integração SMS Integração SMS TI 2015 w w w. n g s i s t e m a s. c o m. b r Índice Sumário executivo... 2 Integrações... 3 Desenho da solução.... 6 NG Sistemas 1 Sumário executivo

Leia mais

mkdir /srv/www/default/html/calculadora/imagens mkdir /srv/www/default/html/calculadora/blocos

mkdir /srv/www/default/html/calculadora/imagens mkdir /srv/www/default/html/calculadora/blocos Programando em PHP www.guilhermepontes.eti.br lgapontes@gmail.com Criando uma Calculadora Primeiramente deve se criar uma estrutura para armazenar os arquivos necessários para o funcionamento da calculadora.

Leia mais

Sisorc. Tutorial de Criação de Novos Módulos

Sisorc. Tutorial de Criação de Novos Módulos Sisorc Tutorial de Criação de Novos Módulos Banco de Dados Para criar um novo módulo é aconselhável que todas as tabelas destinadas a este módulo esteja dentro de um novo schema. Atualmente existem os

Leia mais

Ajax Asynchronous JavaScript and Xml

Ajax Asynchronous JavaScript and Xml Ajax Asynchronous JavaScript and Xml Ajax permite construir aplicações Web mais interactivas, responsivas, e fáceis de usar que aplicações Web tradicionais. Numa aplicação Web tradicional quando se prime

Leia mais

Nota de Aplicação. Relatório em HTML no Vijeo Citect 1.0. Suporte Técnico Brasil. Versão:

Nota de Aplicação. Relatório em HTML no Vijeo Citect 1.0. Suporte Técnico Brasil. Versão: Nota de Aplicação Relatório em HTML no Vijeo Citect Versão: 1.0 Suporte Técnico Brasil Especificações técnicas Hardware: Software: Versão: Vijeo Citect 7.40 SP 2 SQL Server 2012 Suporte Técnico Brasil

Leia mais

9.1 - @Entrevista e @Documento - Estrutura da aplicação FM para o SIGA-DOC

9.1 - @Entrevista e @Documento - Estrutura da aplicação FM para o SIGA-DOC 9.1 - @Entrevista e @Documento - Estrutura da aplicação FM para o SIGA-DOC Basicamente a camada VIEW do modelo MVC deve, por definição, só apresentar os dados. Não deve possuir nenhuma lógica sofisticada

Leia mais

Cálculo Remoto de Preços e Prazos de Encomendas

Cálculo Remoto de Preços e Prazos de Encomendas Cálculo Remoto de Preços e Prazos de Encomendas O cálculo remoto de preços e prazos de encomendas dos Correios é destinado aos clientes que possuem contrato de SEDEX, e-sedex e PAC, que necessitam calcular,

Leia mais

Curso de Iniciação ao Framework PHP Yii

Curso de Iniciação ao Framework PHP Yii Curso de Iniciação ao Framework PHP Yii Igor Rafael igor at dcc.ufmg.br 12 de agosto de 2011 Conteúdo Visão Geral Configuração Fundamentos Estudo de caso Visão Geral O que é um framework? Coleção de bibliotecas

Leia mais

Disciplina: Desenvolvimento Web Dinâmico Prof. Leandro Pisco INTRODUÇÃO À PHP

Disciplina: Desenvolvimento Web Dinâmico Prof. Leandro Pisco INTRODUÇÃO À PHP Disciplina: Desenvolvimento Web Dinâmico Prof. Leandro Pisco INTRODUÇÃO À PHP LINGUAGEM DE PROGRAMAÇÃO Uma linguagem de programação é um método padronizado para expressar instruções para um computador.

Leia mais

Desenvolvimento de Aplicações Web. Prof. José Eduardo A. de O. Teixeira www.vqv.com.br / j.edu@vqv.com.br

Desenvolvimento de Aplicações Web. Prof. José Eduardo A. de O. Teixeira www.vqv.com.br / j.edu@vqv.com.br Desenvolvimento de Aplicações Web Programação Contextualização de aplicações Web: navegadores e servidores como interpretadores, tecnologias do lado do cliente (XHTML, CSS, Javascript) e do lado do servidor

Leia mais

Criando um carrinho de compras

Criando um carrinho de compras Criando um carrinho de compras Um carrinho de compras feito em ASP.NET para você adaptar ao seu negócio e incluir no seu site. Além de aprender conceitos importantes relacionados a tecnologia ASP.NET vai

Leia mais

Podemos agora ver no IDE do Morfik os objetos que já incorporamos ao nosso projeto :

Podemos agora ver no IDE do Morfik os objetos que já incorporamos ao nosso projeto : Podemos agora ver no IDE do Morfik os objetos que já incorporamos ao nosso projeto : O form Index A tabela Fotos A query Q_seleção_de_fotos Vide figura 46. Figura 46 O próximo passo é criar um form que

Leia mais

Lidando de Forma Eficiente com Validações Locais de Objetos

Lidando de Forma Eficiente com Validações Locais de Objetos Lidando de Forma Eficiente com Validações Locais de Objetos Aprenda a construir um mini-framework para validar objetos locais sem afetar a complexidade do código. Autor Paulo César M. N. A. Coutinho (pcmnac@gmail.com):

Leia mais

Boletim Técnico. Esta melhoria depende de execução do update de base UIWORKFLOW, conforme Procedimentos para Implementação.

Boletim Técnico. Esta melhoria depende de execução do update de base UIWORKFLOW, conforme Procedimentos para Implementação. Workflow EIC Produto : Microsiga Protheus Easy Import Control M11 SIGAEIC TOTVS 11 Chamado : THTRLJ Data da publicação : 15/01/14 País(es) : Brasil Banco(s) de Dados : Todos Esta melhoria depende de execução

Leia mais

JavaScript. JavaScript é uma linguagem de script usada em navegadores web. É uma linguagem dinâmica, estruturada e orientada em objetos.

JavaScript. JavaScript é uma linguagem de script usada em navegadores web. É uma linguagem dinâmica, estruturada e orientada em objetos. JavaScript JavaScript é uma linguagem de script usada em navegadores web. É uma linguagem dinâmica, estruturada e orientada em objetos. Pode ser usada dentro do próprio arquivo HTML ou estruturada em um

Leia mais

Bool setcookie (string nome [, string valor [, int validade [, string caminho [, string dominio [, int seguro]]]]] )

Bool setcookie (string nome [, string valor [, int validade [, string caminho [, string dominio [, int seguro]]]]] ) Disciplina: Tópicos Especiais em TI PHP Este material foi produzido com base nos livros e documentos citados abaixo, que possuem direitos autorais sobre o conteúdo. Favor adquiri-los para dar continuidade

Leia mais

J550. Model View Controller

J550. Model View Controller J550 Model View Controller 1 Design de aplicações JSP Design centrado em páginas Aplicação JSP consiste de seqüência de páginas (com ou sem beans de dados) que contém código ou links para chamar outras

Leia mais

Algoritmos em Javascript

Algoritmos em Javascript Algoritmos em Javascript Sumário Algoritmos 1 O que é um programa? 1 Entrada e Saída de Dados 3 Programando 4 O que é necessário para programar 4 em JavaScript? Variáveis 5 Tipos de Variáveis 6 Arrays

Leia mais

Java na WEB Componentes Bean

Java na WEB Componentes Bean 1 Java na WEB Componentes Bean Objetivo: Ao final da aula o aluno será capaz de: Criar site dinâmico utilizando componentes Bean Utilizar Tags de ação Empregar Coleções de Bean. Sumário 5. Definição de

Leia mais

BCValidador VALIDAÇÃO DE ARQUIVOS XML RECEBIDOS PELO BANCO CENTRAL DO BRASIL

BCValidador VALIDAÇÃO DE ARQUIVOS XML RECEBIDOS PELO BANCO CENTRAL DO BRASIL BCValidador VALIDAÇÃO DE ARQUIVOS XML RECEBIDOS PELO BANCO CENTRAL DO BRASIL Deinf/Dine4 Versão 1.3 20/05/2013 Histórico de Revisão Data Versão Descrição Autor 06/11/2007 1.0 Elaboração da primeira versão

Leia mais

Introdução à Tecnologia Web

Introdução à Tecnologia Web Introdução à Tecnologia Web JavaScript Sintaxe da Linguagem: Delimitadores e etc Profª MSc. Elizabete Munzlinger JavaScript Sintaxe da Linguagem Índice 1 SINTAXE DA LINGUAGEM... 2 1.1 Delimitadores de

Leia mais

Curso de Java. Geração de Páginas WEB através de JSP. Todos os direitos reservados Klais

Curso de Java. Geração de Páginas WEB através de JSP. Todos os direitos reservados Klais Curso de Java Geração de Páginas WEB através de JSP Todos os direitos reservados Klais JSP e Servlets Servletsconstituem um mecanismo conveniente para a geração de páginas HTML dinâmicas e seu tratamento

Leia mais

Programação Web com PHP. Prof. Wylliams Barbosa Santos wylliamss@gmail.com Optativa IV Projetos de Sistemas Web

Programação Web com PHP. Prof. Wylliams Barbosa Santos wylliamss@gmail.com Optativa IV Projetos de Sistemas Web Programação Web com PHP Prof. Wylliams Barbosa Santos wylliamss@gmail.com Optativa IV Projetos de Sistemas Web Agenda O que é PHP? O que da pra fazer com PHP? Como a web funciona? Onde, quando e por que

Leia mais

Tecnologias para apresentação de dados - HTML. Aécio Costa

Tecnologias para apresentação de dados - HTML. Aécio Costa Tecnologias para apresentação de dados - HTML Aécio Costa Apresentação de Dados na Web Tecnologias client-side HTML CSS JavaScript HyperText Markup Language Uma linguagem de marcação utilizada para produzir

Leia mais

PHP. Hypertext Pre-Processor

PHP. Hypertext Pre-Processor PHP Hypertext Pre-Processor O que é o PHP? Uma linguagem de scripting é uma linguagem cujo código não tem de ser compilado para ser executado! O código escrito é interpretado em tempo de execução para

Leia mais

Introdução ao Javascript

Introdução ao Javascript Programação WEB I Introdução ao Javascript Apresentação da Disciplina,Introdução a linguagem Javascript Objetivos da Disciplina Apresentar os principais conceitos da linguagem Javascript referente à programação

Leia mais

Guia de Consulta Rápida ASP. Rubens Prates. Novatec Editora. www.novateceditora.com.br

Guia de Consulta Rápida ASP. Rubens Prates. Novatec Editora. www.novateceditora.com.br Guia de Consulta Rápida ASP Rubens Prates Novatec Editora www.novateceditora.com.br Guia de Consulta Rápida ASP de Rubens Prates Copyright@2000 da Novatec Editora Ltda. Todos os direitos reservados. É

Leia mais

22/05/2012 CRIANDO UM PROJETO COM TELAS ESTRUTURA DA APLICAÇÃO LOGIN BANCO DE DADOS TAREFAS PHP MYSQL PARTE 2

22/05/2012 CRIANDO UM PROJETO COM TELAS ESTRUTURA DA APLICAÇÃO LOGIN BANCO DE DADOS TAREFAS PHP MYSQL PARTE 2 CRIANDO UM PROJETO COM TELAS Páginas com formulário Acesso ao banco de dados PHP MYSQL PARTE 2 Luciana Balieiro Cosme ESTRUTURA DA APLICAÇÃO LOGIN BANCO DE DADOS # Coluna Nome e Tipo 1 codigo int(11) AUTO_INCREMENT

Leia mais

Conteúdo Dinâmico. Introdução. Interação Browser x Servidor Web. Interação Browser x Servidor Web

Conteúdo Dinâmico. Introdução. Interação Browser x Servidor Web. Interação Browser x Servidor Web Introdução Formulários rios & Conteúdo Dinâmico Mário Antonio Meireles Teixeira Dept o. de Informática - UFMA A Web surgiu inicialmente como uma nova forma de comunicação de informações, fazendo uso de

Leia mais

COBRANÇA SITE. Instruções de Instalação e Utilização. Manual Técnico do Desenvolvedor. Segunda via do Bloqueto Digital

COBRANÇA SITE. Instruções de Instalação e Utilização. Manual Técnico do Desenvolvedor. Segunda via do Bloqueto Digital COBRANÇA SITE Instruções de Instalação e Utilização Manual Técnico do Desenvolvedor Segunda via do Bloqueto Digital Índice 1. INFORMAÇÕES TÉCNICAS - Windows... 3 1.1 URL DA 2A VIA DO BLOQUETO DIGITAL...

Leia mais

Integração Backoffice HCM x ECM

Integração Backoffice HCM x ECM Integração Backoffice HCM x ECM Fevereiro/2015 Sumário 1. Integração HCM x ECM... 3 2. Pré-Requisitos da Integração dos Produtos... 4 3. Parametrização da Integração no Produto, Origem... 7 4. Parametrização

Leia mais

Programação para web JavaScript

Programação para web JavaScript Programação para web JavaScript Professor: Harlley Lima E-mail: harlley@decom.cefetmg.br Departamento de Computação Centro Federal de Educação Tecnológica de Minas Gerais Belo Horizonte, 4 de maio 2016

Leia mais

José Janeiro (Nº2467) Trabalho prático: HTML, CSS, Javascript. EmpregoWeb-Registo de pessoas

José Janeiro (Nº2467) Trabalho prático: HTML, CSS, Javascript. EmpregoWeb-Registo de pessoas José Janeiro (Nº2467) Trabalho prático: HTML, CSS, Javascript EmpregoWeb-Registo de pessoas Elabore um sítio Web de nome EmpregoWeb, recorrendo à linguagem HTML utilizando folhas de estilos (CCS) que registe

Leia mais

JAVA COM BANCO DE DADOS PROFESSORA DANIELA PIRES

JAVA COM BANCO DE DADOS PROFESSORA DANIELA PIRES Conteúdo O Projeto... 2 Criação de Pacotes... 4 Factory:... 6 DAO:... 15 GUI (Graphical User Interface ou Interface Gráfica de Cadastro)... 18 Evento SAIR... 23 Evento CADASTRAR... 24 1 O Projeto Arquivo

Leia mais

Nota de aplicação: Desenvolvimento de Páginas no PO9900 - WebGate

Nota de aplicação: Desenvolvimento de Páginas no PO9900 - WebGate Nota de aplicação NAP080 Desenvolvimento de Páginas no PO9900 - WebGate Altus Sistemas de Informática S.A. Página: 1 Sumário 1. Introdução...3 1.1 Páginas do WebGate... 3 2. Árvore de Navegação...3 3.

Leia mais

Projeto SNGPC para Farmácias e Drogarias

Projeto SNGPC para Farmácias e Drogarias Agência Nacional de Vigilância Sanitária Projeto SNGPC para Farmácias e Drogarias Conexão ao Webservice Manual do Desenvolvedor Versão 2.0.0 Brasília, fevereiro de 2013. Copyright 2012. Agência Nacional

Leia mais

Programação Web Aula 5 - Javascript Parte 2 - Javascript e HTML

Programação Web Aula 5 - Javascript Parte 2 - Javascript e HTML Programação Web Aula 5 - Javascript Parte 2 - Javascript e HTML Departamento de Informática UFPR 17 de Março de 2014 1 Javascript e HTML 2 Ambiente Hierarquia Propriedades de Document 3 DOM Denição Hierarquia

Leia mais

Universidade Federal do Espírito Santo CCA UFES. Centro de Ciências Agrárias CCA UFES Departamento de Computação. JavaScript

Universidade Federal do Espírito Santo CCA UFES. Centro de Ciências Agrárias CCA UFES Departamento de Computação. JavaScript Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação Universidade Federal do Espírito Santo CCA UFES JavaScript Desenvolvimento de Sistemas para WEB Site:

Leia mais

Integração Protheus x umov.me

Integração Protheus x umov.me Janeiro/2015 Título do documento Sumário 1. Pré-Requisitos... 3 2. Dicionário de dados... 3 3. Parâmetros... 4 4. Instalação e atualização... 2 5. Contexto e Negócio... 18 6. Escopo e Finalidade... 18

Leia mais

MANUAL AGENDADOR DE TAREFAS LOGIX

MANUAL AGENDADOR DE TAREFAS LOGIX Outubro 2011 rev. 01 MANUAL AGENDADOR DE TAREFAS LOGIX Elaboração: Rubens Dos Santos Filho Framework rubens.santos@totvs.com.br Objetivo Este documento tem como objetivo relatar a funcionalidade de agendamento

Leia mais

Bem vindos ao Curso de ASP.NET MVC 3 Razor e C#

Bem vindos ao Curso de ASP.NET MVC 3 Razor e C# Bem vindos ao Curso de ASP.NET MVC 3 Razor e C# Pré-requisitos: O curso de C# Csharp veja aqui e o curso de ASP.NET Básico veja aqui Valor R$129.00 compre aqui Veja o video do curso aqui Aprenda ASP.NET

Leia mais

Programação WEB. Prof. André Gustavo Duarte de Almeida andre.almeida@ifrn.edu.br docente.ifrn.edu.br/andrealmeida. Aula III Introdução PHP

Programação WEB. Prof. André Gustavo Duarte de Almeida andre.almeida@ifrn.edu.br docente.ifrn.edu.br/andrealmeida. Aula III Introdução PHP Programação WEB Prof. André Gustavo Duarte de Almeida andre.almeida@ifrn.edu.br docente.ifrn.edu.br/andrealmeida Aula III Introdução PHP Introdução PHP PHP=Hypertext Pre-Processor Linguagem de script open

Leia mais

Manual de Integração Via Gadget. Passo a passo para realizar a integração entre websites e a plataforma Virtual Target.

Manual de Integração Via Gadget. Passo a passo para realizar a integração entre websites e a plataforma Virtual Target. Manual de Integração Via Gadget Passo a passo para realizar a integração entre websites e a plataforma Virtual Target. Manual de Integração Via Gadget 1. Introdução 1.1. O que é? Virtual Target Gadgets

Leia mais

<link rel=stylesheet type=text/css href=imagens.css /> Este código é responsável pela visualização html. exibição de Imagens

Leia mais

ESTÁGIO CURRICULAR I e II DESENVOLVIMENTO DE KITS DE IMPLANTAÇÃO RÁPIDA

ESTÁGIO CURRICULAR I e II DESENVOLVIMENTO DE KITS DE IMPLANTAÇÃO RÁPIDA GEORGE HENRIQUE RANGEL COSTA ESTÁGIO CURRICULAR I e II DESENVOLVIMENTO DE KITS DE IMPLANTAÇÃO RÁPIDA EMPRESA: BRAVA ECM SETOR: DESENVOLVIMENTO SUPERVISOR: CARLOS ALBERTO SOARES PEREIRA ORIENTADOR: SALVADOR

Leia mais

Criando documentação com javadoc

Criando documentação com javadoc H Criando documentação com javadoc H.1 Introdução Neste apêndice, fornecemos uma introdução a javadoc ferramenta utilizada para criar arquivos HTML que documentam o código Java. Essa ferramenta é usada

Leia mais

Tecnologias para Web Design

Tecnologias para Web Design Tecnologias para Javascript e DOM Introdução à Scripts Um script do lado cliente é um programa que acompanha um documento HTML Pode estar incluído no próprio documento embutido ou acompanha-lo num arquivo

Leia mais

Target. Manual de Integração SOAP. versão 1.0 / 2007. www.virtualtarget.com.br

Target. Manual de Integração SOAP. versão 1.0 / 2007. www.virtualtarget.com.br Manual de Integração SOAP versão 1.0 / 2007 www.virtualtarget.com.br introdução Este manual é destinado àqueles que possuem conhecimentos sólidos em linguagem de programação para integração SOAP (Simple

Leia mais

PHP é um acrónimo para Hypertext Preprocessor.

PHP é um acrónimo para Hypertext Preprocessor. PHP 101 O que é o PHP? PHP é um acrónimo para Hypertext Preprocessor. É uma linguagem de scripting open-source que funciona do lado do servidor e é usada para gerar páginas web dinâmicas. Os scripts de

Leia mais