2

我正在处理一个遗留项目,该项目使用 Oracle Forms 6i(是的,我知道它的旧版本)从 PLL 库中调用 C++ 函数。

现在我们需要使用 Java 而不是 C++,因此我们需要从 Oracle Forms 调用 Java(对象/类/方法)。

我知道这是一个具有挑战性的主题,但如果有人可以提供一个简单的示例来执行以下操作,我会非常高兴:

  • 从 Java 类调用方法,传递一个 int 变量(在 PL/SQL 中)
  • 在执行函数的画布中打印返回值。

一个基本的例子,也许一个 Hello World 是理想的。

我知道一些 PL/SQL,但我不是 Oracle Forms 开发人员;请多多包涵。

如果这是不可能的,你能给我指点其他的选择吗?

4

3 回答 3

7

好吧,在通过 Internet 进行深入查找后,我发现了一个非常好的资源(虽然是西班牙语):关于 Oracle Forms 和 Java 的 Elias 博客

我用:

  • 甲骨文表格 6i
  • JDK 1.6

有了这个,我设法创建了 hello world 示例:


配置PATH环境变量:

  • C:\PATH_TO_JAVA\Java\jdk1.6.0\bin;
  • C:\PATH_TO_JAVA\Java\jdk1.6.0\jre\bin;
  • C:\PATH_TO_JAVA\Java\jdk1.6.0\jre\bin\client;

例如: PATH_TO_JAVA = C:\Program 文件


添加到类路径

  • FORMS_HOME\TOOLS\common60\JAVA\IMPORTER.JAR(在我的例子中,FORMS_HOME 是 C:\orant)
  • PATH_TO_YOUR_JAR\NAME_OF_JAR.jar

创建 Java 程序

  1. 使用您的 IDE 创建一个简单的 java 程序,以下是我的:

    public class HiWorld{        
      private String hi="Hello World!";
    
      public String getHi(){
        return this.hi;
      }
    
      public String getMultiply(int a, int b){
        return ""+a*b;
      }
    
      public static void main(String args[]){            
        HiWorld hm = new HiWorld();
        System.out.println(hm.getHi());
        System.out.println(hm.getMultiply(5,10));                
      }
    }
    
  2. 将其导出到 Jar 文件(路径必须是您放入 CLASSPATH 环境变量的路径。

将类导入表单

在 Oracle Forms 中创建一个新项目并创建一个画布,在画布中使用一个文本和一个按钮。按钮的名称:TEXT_HI_WORLD。

单击菜单后:程序 > 导入 Java 类

如果一切顺利,那么将会有一个新窗口显示类所在的包,您可以扩展它直到有 HiWorld 类。导入它。

现在在程序单元中将有两个文件:

  • HIWORLD(规格)
  • HIWORLD(身体)

这是自动生成的文件,需要使用该类。

然后回到画布,右键单击按钮并选择触发器 WHEN-BUTTON-PRESSED,其编程将是:

DECLARE
    v_wb      ORA_JAVA.JOBJECT;
    v_hi      VARCHAR2(20);
BEGIN
    v_wb := hiworld.new();
    v_hi:= hiworld.getHi(v_wb);
    :TEXT_HI_WORLD := v_hi
END;

现在执行程序并单击按钮!:)

希望这可以帮助对 Forms 了解不多的 Java 程序员与遗留系统集成!:D

于 2011-05-05T20:05:03.470 回答
0

我以前做过,用一个简单的类应该可以工作,但是当你尝试开发更复杂的东西时,我建议从 VBean 类扩展,你可以在 oracle 的表单安装文件夹 (frmall.jar) 中找到该库。

于 2017-07-11T21:33:22.580 回答
-1
// el programa corregido.

public class HolaMundo {

private String hi= "Hey World!!!";

  public String GetHi(){
    return this.hi;
  }

public static void main(String args[]){

    HolaMundo  hm = new HolaMundo();
    System.out.println(hm.GetHi());

  }
}
于 2013-08-20T16:27:06.607 回答