2017-10-20 15 views
1

현재 Genexus 15에서 프로 시저를 만들고 Java 환경에서 호출하려고하지만 jar 파일을 Java로 가져올 때 함수를 호출 할 수 없습니다. 다음과 같이Java 환경에서 Genexus 프로 시저 스텁 호출

나는 스텁과 간단한 절차를 만드는 오전 : 응용 프로그램을 배포 할 때

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

Genexus이 .jar 파일을 생성 한 후 내가 넷빈즈에 가져옵니다. 가져 오기가 성공적이고 내가 만든 프로 시저를 인식하지만 메서드에 액세스하면 내 스텁을 호출 할 필요가 없습니다.

Java 클래스는 다음과 같습니다. Function 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 ; 

} 

내가 무엇을 놓치고 있습니까? 어떤 도움을 주셔서 감사합니다.

+0

이 왜 GXProcedure' 클래스'확장하고? – ncardeli

+0

샘플 코드에서 찾았 기 때문에 방금 사용했습니다. 또한 확장자없이 시도했지만 어느 쪽도 작동하지 못했습니다. –

답변

1

해결책을 찾았습니다. 내가 한 것은 Genexus 프로젝트에서 테스트 웹 패널을 만들고 내가 만든 절차를 호출 한 것입니다.

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

나는 이유는 모르겠지만,이 된 .java 파일을 다시 Genexus을 강제로 어떤 방법으로, 내 방법이 호출하여이 WPanel에서 그냥 다음과 같은 이벤트를 트리거 Button 구성 요소를 넣어 내 프로 시저 중 빌드, 재 빌드 또는 빌드만으로이 작업을 수행하지 못했습니다. 다시 만들 때 내 Java 클래스는 프로 시저 스텁에 해당하는 함수와 함께있었습니다. 그 후

, 난 그냥 새 .jar 파일을 생성하는 응용 프로그램을 배포하고 내 넷빈즈 프로젝트를 가져오고 내 기능을 사용할 수 있었다 :

ptesteintegracao.gxep_salvadados("teste", stringReturn); 
0

위의 질문에 대한 수정입니다.

개인 실행 메소드에는 출력 매개 변수가 필요합니다.

... this : new ptesteintegracao (remoteHandle, context) .gxep_salvadados ("teste");

... 새 문자열 retorno = new ptesteintegracao (remoteHandle, context) .gxep_salvadados ("teste");

+0

답변 해 주셔서 감사합니다.하지만 문제는 아닙니다. 내 문제는 gxep_salvadados 함수를 찾을 수 없다는 것입니다.하지만 Java 코드 나 Genexus의 응용 프로그램에있는 경우 문제가 어디 있는지 알 수 없습니다. –