Adicionar arquivo jar aplicação FLUIG

Boa noite,

Tenho um arquivo JAR, que contem vários métodos que precisam ser utilizados dentro dos Scripts do workflow.

Alguém já fez a importação do arquivo JAR para o projeto do fluig studio ?

EDIT 1

Rafael,

Pelo que eu entendi ao criar um modulo no Jboss qualquer aplicação pode ter acesso as bibliotecas.

Criei o modulo com.empresa.api.main

dentro do diretório main criei o arquivo module.xml e adicionei o arquivo API.jar dentro do mesmo diretório.

Código do arquivo module.xml

Dentro da API.jar criei a classe br.com.empresa.controller.cliente.java

Dentro da classe Cliente.java criei o metodo com o seguinte codigo:

public String testeCliente(){ return "metodo funcionou";}

Depois disso criei um arquivo de Script Evento Workflow beforeTaskSave e implementei o seguinte codigo:

var objeto = new API.br.com.empresa.controller.ClienteHttp(); var retorno = objeto.testeClienteHTTP(); throw teste;

Quando executo o processo ele me retorna o seguinte erro:

Erro ao salvar/completar a tarefa: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "API" is not defined. (#2) in at line number 2

Tambem testei dessa maneira:

function beforeTaskSave(colleagueId,nextSequenceId,userList){ var objeto = new Packages.API.br.com.empresa.controller.ClienteHttp(); var retorno = objeto.testeClienteHTTP(); throw teste; }

e mudou o retorno do erro:

Erro ao salvar/completar a tarefa: sun.org.mozilla.javascript.internal.EcmaError: TypeError: [JavaPackage API.br.com.empresa.controller.ClienteHttp] is not a function, it is object. (#2) in at line number 2

e desta maneira:

function beforeTaskSave(colleagueId,nextSequenceId,userList){ var objeto = new com.empresa.api.API.br.com.empresa.controller.ClienteHttp(); var retorno = objeto.testeClienteHTTP(); throw teste; }

O erro continuou o mesmo:

Erro ao salvar/completar a tarefa: sun.org.mozilla.javascript.internal.EcmaError: TypeError: [JavaPackage com.empresa.api.API.br.com.empresa.controller.ClienteHttp] is not a function, it is object. (#2) in at line number 2

Será que esta faltando algo para o projeto do fluig reconhecer o arquivo JAR ?

Desde já, obrigado.

EDIT 2

Então Rafael, você quis dizer que a estrutura de pastas criada na API.jar, tem que ser igual a estrutura de pastas criada no modulo do Jboss correto ?

Fiz as mudanças seguindo a logica acima:

Estrutura de pastas do Jboss: C:\fluig\jboss\modules\com\empresa\api\main

Estrutura de pastas da API.jar: API\src\com\empresa\api

o arquivo xml mantive da mesma maneira:

beforeTaskSave: function beforeTaskSave(colleagueId,nextSequenceId,userList){ var objeto = new com.empresa.api.ClienteHttp(); var retorno = objeto.testeClienteHTTP(); throw teste; }

mas o erro persiste: Erro ao salvar/completar a tarefa: sun.org.mozilla.javascript.internal.EcmaError: TypeError: [JavaPackage com.empresa.api.ClienteHttp] is not a function, it is object. (#2) in at line number 2

Achei esse tutorial: https://developer.jboss.org/wiki/CriandoUmModuloPersonalizadoParaASuaAplicacaoNoJBoss7

E observei que ele cria um arquivo chamado jboss-deployment-structure.xml no WEB-INF da aplicação. não seria necessário setar o modulo C:\fluig\jboss\modules\com\empresa\api\main nesse arquivo de configuração no WEB-INF do projeto do fluig ?

EDIT 3

Alguém conseguiu ?

Também tenho essa dúvida, vou ficar seguindo o tópico.

Você não precisa necessariamente importar isso no seu projeto do studio. Faz sentido fazer isso, caso na verdade você gere uma widget para fazer o deploy dessas classes java. Do contrário, você deve fazer deploy desse jar como módulo no Jboss.

Uma vez feito o deploy da widget, ou do módulo o JBOSS carrega isso no classpath e a classe passa a estar disponível. Para usá-la nos eventos você deve fazer como no exemplo:


var myObject = new com.pacote.custom.MyClass();

Sim é precisso fazer referência completa pelo pacote.

EDIT 1

Normalmente você instanciaria assim br.com.empresa.controller.ClienteHttp. Porque na sua classe JAVA, o package br.com.empresa.controller e classe é a ClienteHttp. Na config do modulo, você teria uma estrutura de pastas igual ao que você configurou no modulo.

Exemplo: quer dizer que tenho uma estrutura de pastas: /modules/com/mysql/main (main é padrão...)

estrutura de pastas: /modules/com/totvs/foundation/auth/main

Bom dia Rafael, tem alguma documentação sobre isso? Gostaria muito de saber mais sobre esse assunto

Rafael, adicionei uma atualização na postagem.

Revivendo Tópico:

Tenho essa dúvida também, alguém conseguiu e poderia exemplificar didaticamente ? Os exemplos que encontrei não são especificados o suficiente.

Desde já obrigado.

PS: fluig 1.6.4