在 Java 环境中调用 Genexus 过程存根

Call Genexus procedure stub in Java environment

我目前正在尝试在 Genexus 15 中创建一个过程并从 Java 环境调用,但是当我将 jar 文件导入 Java 时,无法调用该函数。

我正在创建一个带有存根的简单过程,如下所示:

stub salvadados(in:&StringTeste, out:&StringRetorno)
   &StringRetorno = "ola " + &StringTeste
endstub

Genexus 在部署应用程序时生成 .jar 文件,然后我将其导入 NetBeans。导入成功并且它识别我创建的过程,但是当我访问它的方法时,没有调用我的存根。

我的Javaclass如下。我想在函数 EnviaDados 中调用我的存根。

import com.genexus.GXProcedure;
import com.genexus.GXutil;
import com.genexus.ModelContext;
import com.genexus.reports.GXcfg;
import com.kbtesteintegracao.projeto.ptesteintegracao;

public class IntegracaoGenexus extends GXProcedure {

    ptesteintegracao ptesteintegracao; 


    public void executeCmdLine(String args[]) {
        execute();
    }

    public IntegracaoGenexus(int remoteHandle) {
       super(remoteHandle, new ModelContext(IntegracaoGenexus.class), "");
    }

    public IntegracaoGenexus(int remoteHandle, ModelContext context) {
       super(remoteHandle, context, "");
    }

    public void iniciar() {
        ptesteintegracao = new ptesteintegracao(remoteHandle, context); 

    }

    public void EnviaDados(String strDados) {
        //ptesteintegracao.gxep_salvadados(strDados);
    }

    public void execute() {
       execute_int();
    }

    private void execute_int() {
       initialize();
       privateExecute();
    }

    private void privateExecute() {  
       new ptesteintegracao(remoteHandle, context).gxep_salvadados("teste");
       cleanup();
    }

    public static Object refClasses() {
       GXutil.refClasses(IntegracaoGenexus.class);
       return new GXcfg();
    }

    protected void cleanup() {
       CloseOpenCursors();
       exitApplication();
    }

    protected void CloseOpenCursors() {
    }

    /* Aggregate/select formulas */
    public void initialize() {
       /* GeneXus formulas. */
       Gx_err = (short)(0) ;
    }

    private short Gx_err ;

}

我错过了什么?感谢您的帮助。

这里是对上面问题的更正。

私有execute方法需要输出参数

  • 这个: new ptesteintegracao(remoteHandle, context).gxep_salvadados("teste");

  • 应该是这样的: new String retorno = new ptesteintegracao(remoteHandle, context).gxep_salvadados("teste");

我找到了解决办法。我所做的是在我的 Genexus 项目上创建一个测试 Web 面板并调用我创建的过程。在此 WPanel 中,我只是放置了一个触发以下事件的 Button 组件:

Event 'Teste'
  ptesteintegracao.salvadados("oi", &retorno)
Endevent

我不知道为什么,但是通过调用我的程序,它以某种方式迫使 Genexus 重新创建我的程序的 .java 文件,而它在构建时没有这样做,使用此唯一选项重建或构建。重新创建时,我的 java class 具有与我的过程存根相对应的功能。

之后,我部署了应用程序,生成了一个新的 .jar 文件并将其导入到我的 NetBeans 项目中,我的功能可用了:

ptesteintegracao.gxep_salvadados("teste", stringReturn);