在 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);
我目前正在尝试在 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);