Páginas filhas
  • Intellector 9 - API - Executando Políticas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Bloco de código
languagehtml/xml
linenumberstrue
<?xml version="1.0" encoding="ISO-8859-1"?> 
<raiz>
        <!-- nome da politica -->
	<programa>P_TST_01</programa>
        <!-- nome do usuário com permissão pra execucao -->
	<usuario>admin</usuario>
        <!-- senha do usuario -->
	<senha>senha_admin</senha>
        <!-- tipo de politica -->
	<tipo>credito</tipo>
        <!-- layout para ser usado -->
	<layout>Layout_P_TST_01</layout>
        <!-- dados de entrada para a execução da politica -->
	<CPF>00000000191</CPF>
</raiz>
Dados de Saída 
Bloco de código
languagehtml/xml
linenumberstrue
O XML de saída é composto pelas variáveis de saída descritas no layout de política utilizado na execução e, pelas seguintes variáveis de controle:
   <!-- UUID - identificador unico -->
   <LPT__CodExecucao>3176837B-00D1-4B50-8419-126650B0E114</LPT__CodExecucao>
   <LPT__iRetorno>0</LPT__iRetorno>
   <LPT__sAcao>APROVA</LPT__sAcao>
   <LPT__sMsgErro></LPT__sMsgErro>

...

Abaixo, listamos alguns exemplos usando várias linguagens, para executar uma política no TOTVS Intellector. Lembramos que os exemplos necessitam de ajustes, mas a ideia central está disponibilizada.

Usando Java com API Apache commons-httpclient - XML
Bloco de código
languagejava
titlePostXML
linenumberstrue
package br.com.totvs.intellector.util;

import java.io.File;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.FileRequestEntity;
import org.apache.commons.httpclient.methods.RequestEntity;

/**
 * Uma classe generica, via linha de comando para enviar arquivos, e, a intencao
 * eh enviar arquivos XML para testar os servlets
 * <p>
 * 
 * @author ricart.monachesi
 *
 */

public class PostXML {

    /**
	*
	* Use: java PostXML [http://localhost:8080/iw-editor/services/PolicyExecution] c:\dummy_pol.xml
	*
	*  @param args comando na linha de argumentos
	*         Argumento 0 eh uma URL para um web server, servlet (wsdl?)
	*         Argumento 1 eh arquivo local formato XML (pode ser qq arquivo!)
	*
	*/
   public static void main(String[] args) throws Exception {
	   // passagem de argumentos
       if (args.length != 2) {
           System.out.println("Use: java -classpath <classpath> [-Dorg.apache.commons.logging.simplelog.defaultlog=<loglevel>] PostXML <url> <arquivo>]");
           System.out.println("<classpath> - deve conter commons-httpclient.jar e commons-logging.jar");
           System.out.println("<loglevel> - nivel de erro, warn, info, debug, trace");
           System.out.println("<url> - a URL para postar o arquivo");
           System.out.println("<arquivo> - arquivo para postar para a URL");
           System.out.println();
           System.exit(1);
       }
       // Pega a URL destino
       String strURL = args[0];
       // Pega o arquivo para ser postado
       String strXMLFilename = args[1];
       File input = new File(strXMLFilename);
       // Prepara o post HTTP
       PostMethod post = new PostMethod(strURL);
       // O conteudo do Request serah retirado diretamento do stream de entrada
       RequestEntity entity = new FileRequestEntity(input, "text/xml; charset=UTF-8");
       post.setRequestEntity(entity);
       // Pega o HTTP client
       HttpClient httpclient = new HttpClient();
       // Executa o request
       try {
           int result = httpclient.executeMethod(post);
           // Mostra o status code
           System.out.println("Response status code: " + result);
           // Mostra o response
           System.out.println("Response body: ");
           System.out.println(post.getResponseBodyAsString());
       } finally {
           // Release da conexao atual para o connection pool de conexoes, uma vez que jah foi feito
           post.releaseConnection();
       }

   }
		
}

...

Bloco de código
themeEclipse
linenumberstrue
package br.com.tools.intellector.util;

import java.io.IOException;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;

/**
* Uma classe generica, via linha de comando para enviar arquivos,
* e, a intencao eh enviar arquivos XML para testar o wsdl/rest
* <p>
* @author claudio cardozo
*
*/
public class PostWSDL {

	// configura a url?wsdl
    private static String url =
        "[http://192.168.0.185:8080/intellector/services/PolicyExecution/executePolicy";]

    /**
* Chamada RESTful via httpClient
* @param args
*/
    public static void main(String[] args) {

       // instancia um HttpClient
       HttpClient client = new HttpClient();

       // instancia um GET HTTP method
       HttpMethod method = new GetMethod(url);

       // configura name-value pairs da string para o metodo
       // definindo um xml com os dados a serem para um uma politica
       NameValuePair nvp1= new NameValuePair("xmlInputString", 
    		    "<raiz>" +
				"<programa>politica_dummy</programa><usuario>admin</usuario>" +
				"<senha>tools01</senha>"+
				"<tipo>credito</tipo>"+
				"<layout>Layout_politica_dummy_credito</layout>"+
				"<CodCpf>21769796304</CodCpf>"+
				"<DataNascimento>30011966</DataNascimento>"+
				"<ValBem>101.34</ValBem>"+
				"<DataAberturaConta>23102008</DataAberturaConta>"+
				"</raiz>");

       // configura as partes de envio
       method.setQueryString(new NameValuePair[]{nvp1});

       try{
           int statusCode = client.executeMethod(method);

           System.out.println("QueryString>> " + method.getQueryString());
           System.out.println("Status Text>> " + HttpStatus.getStatusText(statusCode));

           // pega a resposta como String
           System.out.println("Response>> " + method.getResponseBodyAsString());

           //release da conexao
           method.releaseConnection();
       }
       catch(IOException e) {
           e.printStackTrace();
       }
   }

}


N


====
Usando RESTful XML

Uma vez que os exemplos acima, via browser, esclareceram envelope/contrato, segue abaixo um exemplo de chamada via httpClient. REST é apenas um estilo de arquitetura, baseado em estados de transferência.

...