Como fazer para executar código Java no iEngine?

Data de postagem: May 11, 2010 3:22:21 PM

A partir da versão 9.1.0.1 do iEngine, já é possível executar código Java. A integração a feita através do Enginelet. Enginelet é uma API que é distribuída junto como iEngine que permite a Integração da plataforma iEngine com a plataforma Java. Segue abaixo a lista de requisitos necessários para iniciar o desenvolvimento de um código Java conectável ao iEngine:

Requisitos

Java SE Development Kit (JDK) 6 (http://java.sun.com/javase/downloads/index.jsp)

Eclipse Web Tools Platform - WTP (http://download.eclipse.org/webtools/downloads/)

Passo-a-Passo

    1. Primeiramente baixe as bibliotecas Java (*.jar) necessárias. As bibliotecas java estão disponíveis na iVFS e a forma mais fácil de baixar é executando um método do objeto JavaImporter, veja como:

    2. Abra o iDBCSql e execute o seguinte código:

      1. var javaimporter = new JavaImporter()

      2. javaimporter.importJavaBean( "java.util.Date" )

  1. Ao executar o código acima o iEngine procurar por todos os arquivos *.jar ou *.zip dentro de classes com o nome "javalibs" na Virtual File System e os exportará para <Pasta do iEngine.exe>/javalibs.

  2. O arquivo do enginelet deve se chamar enginelet<Versão>.jar.

  3. Outra forma de baixar as javalibs é usando o processo Ir Para>Desenvolvimento>Virtual File System>Exportar arquivos.

    1. Abra o Eclipse e crie um novo projeto java seguindo os passos:

      • File/New/Project...

      • Selecione a opção Java Project e clique em Next. Irá aparecer a seguinte janela:

      • Informe um nome para o projeto e informe uma JRE cuja a versão seja maior ou igual a 1.6.0_04 e clique em next. Aparecerá a seguinte tela:

      • Neste tela clique na Aba chamada "Libraries" e em seguinda no botão Add External JARs... e selecione o arquivo enginelet<Versão>.jar que foi baixado da iVFS e clique no botão Finish. Pronto! Projeto criado!

    1. Agora crie um Enginelet chamado EngineletDeTestes. Vá em File/New/Class e preencha a tela da seguinte maneira:

    1. Aqui cabe uma consideração importante sobre campo Package: Você deverá criar um pacote único, muito cuidado com as colisões de nomes de pacotes. Não pode haver uma classe com nomes iguais em pacotes iguais, mesmo que em arquivos JARs diferentes.

    2. Clique no botão Finish para criar a classe. O Eclipse irá gera uma classe "esqueleto". Eis o código gerado:

    3. //Aqui fique atento para o nome do pacote que você tá criado, se um desenvolvedor

    4. //já fez um enginelet de teste no mesmo pacote que você o seu teste não irá

    5. //funcionar. Lembre-se que não pode haver colisões de nomes de classes, mesmo que

    6. //elas estejam em JARs diferentes.

      1. package br.com.unum.testes.enginelet;

      2. import br.com.inteq.engine.enginelet.Enginelet;

      3. public class EngineletDeTestes extends Enginelet {

      4. @Override

      5. public String handleCommand(String arg0, String[] arg1) {

      6. return null;

      7. }

      8. }

    7. Altere a assinatura do método handleCommand para:

      1. handleCommand(String commandName, String[] commandArgs)

    1. Implemente o método handleCommand da seguinte forma:

    2. public String handleCommand(String commandName, String[] commandArgs) {

    3. commandName = commandName.toUpperCase();

    4. if( commandName.equals("DIGAOLA") ) {

    5. //Obtém o valor do primeiro parâmetro da chamado do método handleCommand

    6. //chamado no ambiente JavaScript.

    7. String nome = commandArgs[0];

    8. //Retorna uma string para o ambiente JavaScript

    9. return "Olá Sr(a). " + nome;

    10. }

    11. else if( commandName.equals("DIGAADEUS") ) {

    12. //Obtém o valor do primeiro parâmetro da chamado do método handleCommand

    13. //chamado no JavaScript.

    14. String nome = commandArgs[0];

    15. //Retorna uma string para o ambiente JavaScript

    16. return "Até mais Sr(a). " + nome;

    17. }

    18. else {

    19. return "O comando " + commandName + " não foi reconhecido.";

    20. }

    21. }

    22. Falta apenas compilar e empacotar o código compilado em um arquivo *.jar. Recomendamos o uso do ANT (http://ant.apache.org/). O ANT já vem com Eclipse WTP. Segue abaixo um script genérico que pode ser adaptado para este exemplo específico. O arquivo deve ser criado no dirtório do código fonte(src):

    23. <?xml version="1.0" encoding="UTF-8"?>

    24. <project name="" basedir="." default="compile">

    25. <!--Área de customizável do script-->

    26. <!--Infome a versão aqui-->

    27. <property name="version" value=""/>

    28. <!--Infome o diretório onde se encontram os fontes-->

    29. <property name="directory.source" value="."/>

    30. <!--Informe o diretório onde serão gerados os binários-->

    31. <property name="directory.binary" value="../bin"/>

    32. <!--Informe o diretório onde serão gerados os arquivos empacotados para distribuição(*.jar)-->

    33. <property name="directory.distribuition" value="../dist"/>

    34. <!--Informe o diretório onde será gerada a documentação javadoc-->

    35. <property name="directory.documentation" value="../doc"/>

    36. <!--Infome o diretório onde estão as bibliotecas java-->

    37. <property name="directory.javalibs" value=""/>

    38. <!--Informe o título da documentação javadoc-->

    39. <property name="documentation.title" value=""/>

    40. <!--Informe o nome completo do arquivo JAR-->

    41. <property name="jarfile" value="${directory.distribuition}/enginelet-${version}.jar"/>

    42. <!--Fim da área de customizável do script-->

    43. <target name="compile">

    44. <mkdir dir="${directory.binary}"/>

    45. <javac destdir="${directory.binary}" srcdir="${directory.source}">

    46. <classpath>

    47. <fileset dir="${directory.javalibs}"/>

    48. </classpath>

    49. </javac>

    50. </target>

    51. <target name="makeDocumentation">

    52. <mkdir dir="${directory.documentation}"/>

    53. <javadoc windowtitle="${documentation.title}" sourcepath="${directory.source}" destdir="${directory.documentation}"></javadoc>

    54. </target>

    55. <target name="makeDistribuition" depends="compile">

    56. <mkdir dir="${directory.distribuition}"/>

    57. <jar destfile="${jarfile}" basedir="${directory.binary}"></jar>

    58. </target>

    59. <target name="clean">

    60. <delete dir="${directory.binary}"/>

    61. <delete dir="${directory.distribuition}"/>

    62. </target>

    63. </project>

    64. Salve o script ANT com o nome build.xml;

    65. Agora precisamos processar o script para gerar o arquivo JAR. O Eclipse já faz o processamento de scripts ANT. Certifique-se que a View do ANT está visível no Eclipse. Habilite em: (Window / Show View / Ant);

    66. Arraste o arquivo build.xml para a View ANT e clique duas vezes na Task makeDistribuition do script ANT dentro da View ANT.

    67. O arquivo JAR será gerado na pasta <Diretório do Projeto>\dist

    68. Copie o arquivo JAR gerado para a pasta <Pasta do iEngine.exe>/javalibs. Por não constar na iVFS, o arquivo JAR copiado, será apagado pelo processo de sincronização das javalibs com a iVFS. Você pode desabilitar o sincronismos das javalibs simplemente criando o arquivo .ignoresync na pasta <Pasta do iEngine.exe>/javalibs (Use o notepad.exe para criar o arquivo).

  1. Recomendamos o uso do .ignoresync apenas na fase de desenvolvimento, após a fase de desenvolvimento o mesmo deve ser removido e os arquivos JAR necessários devem ser levados para a iVFS.

    1. Abra a IDE e digite e execute o seguinte código no iDBC:

    2. var enginelet = new Enginelet("br.com.unum.testes.enginelet.EngineletDeTestes") enginelet.handleCommand("DigaOla", "Paulo Rogério")

    3. O resultado será:

  2. Olá Sr(a). Paulo Rogério.

    1. Agora iremos levar o Enginelet de testes para a iVFS. Sigua os passos:

      • Crie uma classe chamada javalibs dentro da classe. root/products/<Árvore do Produto>/library;

      • Use o processo de importação para iVFS(para importar as javalibs para a pasta criada)

      • Caso esteja usando o arquivo .ignoresync, remova-o.

Segue em anexo a documentação da API Enginelet.

IMPORTANTE: Ao compilar as classes, a VM target deve ser no máximo a versão 1.7 do Java.

IMPORTANTE: Algumas distribuições da versão 1.6 da JRE possuem bug. Sugerimos realizar a atualização da sua JRE antes de usa o ambiente Java integrado com o uEngine.

Mais detalhes na página O iEngine passou a apresentar a mensagem 'A distribuição ''1.6.0_02'' da versão 1.6 da JRE não é compatível com o iEngine.' Como resolvo?