管理与程序设计指南

Java 小应用程序语言环境

Java 小应用程序语言环境可让您在自己的 Net.Data 应用程序中方便地为 Java 小 应用程序生成 HTML 标记。当您调用 Java 小应用程序语言环境时,需要指定小应用程序的名称 并传送小应用程序所需的全部参数。语言环境将处理宏并生成 HTML 小应用程序标记,Web 浏览器使用这些标记来运行 该小应用程序。

另外,Net.Data 提供了一系列接口,您的小应用程序可以用它们来访问表格参数。这些 接口包含在 DTW_Applet.class 类中。

以下章节将描述如何使用 Java 小应用程序语言环境来运行您的 Java 小应用程序。

配置 Java 小应用程序语言环境

验证初始化文件中有以下配置语句,并且是在一行上:

ENVIRONMENT (DTW_APPLET)   DTWJAVA    ( OUT RETURN_CODE )

参见环境配置语句,以进一步了解 Net.Data 初始化文件和语言环境 ENVIRONMENT 语句。

创建 Java 小应用程序

使用 Net.Data Java 小应用程序语言环境之前,您需要确定您计划使用哪些小应用 程序或者需要编写哪些小应用程序。参见您的 Java 文档以获取更多有关创建小应用程序的信息。

生成小应用程序标记

您使用 Net.Data 函数调用来指定对小应用程序语言环境的调用。对于这个函数调用不需要任何 说明。函数调用的语法如下:

@DTWA_AppletName(parm1, parm2, ..., parmN)

要编写一个生成小应用程序标记的宏:

  1. 在宏的 DEFINE 部分定义小应用程序所需的全部参数。这些参数包括小应用程序 标记属性、Net.Data 变量、以及您需要作为小应用程序输入的 Net.Data 表格参数。 例如:
    %define{
    DATABASE = "celdial"                   <=Name of the database
    MyGraph.codebase = "/netdata-java/"    <=Required applet attribute
    MyGraph.height = "200"                 <=Required applet attribute
    MyGraph.width = "400"                  <=Required applet attribute
    MyTitle = "Celdial results"            <=Name of the Web page
    MyTable = %TABLE(all)                  <=Table to store query results
    %}
    
  2. 可选项:指定一个对数据库的查询,以便生成一个作为小应用程序输入的结果集。在您使用 一个生成图表或表格的小应用程序时,这是相当有用的。 例如:
    %FUNCTION(DTW_SQL) mySQL(OUT table){
    select name, ages from ibmuser.guests
    %}
    
  3. 在 Net.Data 宏中指定函数调用来调用 Java 小应用程序语言环境以及调用该 小应用程序。函数调用中要指定小应用程序的名称和您希望传送给语言环境的参数。这些参数 包括 Net.Data 变量、以及您需要作为小应用程序输入的 Net.Data 表格参数或列参数。

    例如:

    %HTML(report){
    @mySQL(MyTable)                                   <=A call to mySQL
    @DTWA_MyGraph(MyTitle, DTW_COLUMN(ages) MyTable)  <=Applet function call
    %}
     
    

小应用程序标记属性

您可以在 Net.Data 宏中的任何地方为小应用程序标记指定属性。 Net.Data 将所有形如 AppletName.attribute 的变量替代到 小应用程序标记中,作为属性。对小应用程序标记定义属性的语法是这样的:

%define AppletName.attribute = "value"

以下属性是所有小应用程序都需要的:

以下属性是可选的:

例如,如果您的小应用程序名为 MyGraph,那么您可以定义这些必需的属性:

%DEFINE{
MyGraph.codebase = "/netdata-java/"
MyGraph.height = "200"
MyGraph.width = "400"
%}

实际的赋值不需要在 DEFINE 部分完成。您可以使用 DTW_ASSIGN 函数来设置值。如果您没有 为 AppletName.code 变量定义一个变量,则 Net.Data 将在小应用程序标记中 添加一个缺省的 code 参数。code 参数的值 为 AppletName.class,其中 AppletName 是您的小应用程序名。

小应用程序标记参数

您定义一个参数列表,它们在函数调用中传送至 Java 小应用程序语言环境。您可以传递的参数包括:

传递参数时,Net.Data 将使用您为该参数指定的名称和值在 HTML 输出中创建 一个 Java 小应用程序 PARAM 标记。 不能传递字符串文字或函数调用的结果。

Net.Data 变量参数

您可以将 Net.Data 变量用作参数。如果您在宏的 DEFINE 块中定义一个变量并在 DTWA_AppletName 函数调用中传送该变量,那么 Net.Data 将生成一个名称与值 都与该变量相同的 PARAM 标记。例如,给出以下宏语句:

%define{
 
...
 
MyTitle = "This is my Title"
%}
 
%HTML (report){
@DTWA_MyGraph( MyTitle, ...)
%}

Net.Data 产生以下小应用程序的 PARAM 标记:

<param name = 'MyTitle' value = "This is my Title" />
 

Net.Data 表格参数

每次调用 Java 小应用程序语言环境时,Net.Data 都将使用名称 DTW_NUMBER_OF_TABLES 来自动 生成一个 PARAM 标记,从而指定该函数调用是否传送表格变量。它的值是 Net.Data 在函数中使用的 表格变量的个数。如果在函数调用中没有指定表格变量,则将生成以下标记:

<param name = "DTW_NUMBER_OF_TABLES" value = "0" />

在函数调用时,您可以将一个或多个 Net.Data 表格变量作为参数来传递。如果 您在 DTWA_AppletName 函数调用中指定了一个 Net.Data 表格变量, 则 Net.Data 将生成以下 PARAM 标记:

表名参数标记

此标记指定要传递的表格的名称。它具有以下语法:

<param name = 'DTW_TABLE_i_NAME' value = "tname" />

其中 i 是表格的个数(根据函数调用的次序), tname 是表格的名称。

行和列说明参数标记:

生成 PARAM 标记是为了指定特定表格中的行数或列数。它具有以下语法:

<param name = 'DTW_tname_NUMBER_OF_ROWS' value = "rows" />
<param name = 'DTW_tname_NUMBER_OF_COLUMNS' value = "cols" />

其中表格的名称为 tnamerows 是表格中的 行数,cols 是表格中的列数。对于函数调用中指定的每个唯一的表格都 将生成这样一个标记对。

列值参数标记:

PARAM 标记指定一个特定列的列名。 它具有以下语法:

<param name = 'DTW_tname_COLUMN_NAME_j' value = "cname" />

其中表格的名称为 tnamej 是 列数,cname 则是表格中列的名称。

行值参数标记:

PARAM 标记指定一个特定行与列中的值。 它具有以下语法:

<param name = 'DTW_tname_cname_VALUE_k' value = "val" />

其中表格名称为 tnamecname是 列名,k 是行数,val 是与相应行和列中的值 匹配的值。

表格列参数

您可以在函数调用时传递一个表格列(将它作为参数),从而为特定的列生成标记。Net.Data 仅 对于指定的列生成相应的小应用程序标记。表格列参数使用以下语法:

@DTWA_AppletName(DTW_COLUMN( x )Table)

其中 x 是表格中的列名或列号。

表格列参数使用为表格参数定义的小应用程序标记。

不支持 Java 功能的浏览器上小应用程序标记的替换文本

变量 DTW_APPLET_ALTTEXT 指定了显示在不支持 Java 的浏览器或关闭了 Java 支持的 浏览器上的文本。例如,以下变量定义:

%define DTW_APPLET_ALTTEXT = "<p>Sorry, your browser is not Java-enabled."</p>

将产生以下 HTML 标记和文本:

<p>Sorry, your browser is not Java-enabled.</p><

如果没有定义这个变量,则不显示任何替换文本。

Java 小应用程序的示例

下面的示例演示了调用 Java 小应用程序语言环境的 Net.Data 宏以及该语言环境生成的 结果小应用程序标记。

Net.Data 宏中包含以下对 Java 小应用程序语言环境的函数调用:

%define{
DATABASE = "celdial"
DTW_APPLET_ALTTEXT = "<p>Sorry, your browser is not Java-enabled."</p>
DTW_DEFAULT_REPORT = "no"
MyGraph.codebase = "/netdata-java/"
MyGraph.height = "200"
MyGraph.width = "400"
MyTitle = "This is my Title"
%}
%FUNCTION(DTW_SQL) mySQL(OUT table){
select name, ages from ibmuser.guests
%}
%HTML (report){
@mySQL(MyTable)
@DTWA_MyGraph( MyTitle, DTW_COLUMN(ages) MyTable )
%}

DEFINE 部分的 Net.Data 宏定义行指定了小应用程序标记的属性:

MyGraph.codebase = "/netdata-java/"
MyGraph.height = "200"
MyGraph.width = "400"

语言环境使用以下限定符生成了一个小应用程序标记:

<applet code='MyGraph.class'
        codebase='/netdata-java/'
	width='400'
	height='200'
>

Net.Data 从 Net.Data 宏的 SQL 部分返回 SQL 查询的结果,结果放在 输出表 MyTable 中。此表格在 DEFINE 部分指定:

MyTable = %TABLE(all)

宏当中对小应用程序的调用是在 HTML 部分指定的:

@DTWA_MyGraph( MyTitle, DTW_COLUMN(ages) MyTable )

根据函数调用中的参数,Net.Data 生成完整的小应用程序标记,其中包含有关结果表格的信息, 例如:列数、返回的行数以及结果行。 Net.Data 为结果表格中的每个单元生成一个参数标记,如下面这个示例所示:

<param name = 'DTW_MyTable_ages_VALUE_1' value = "35" />

参数名称 DTW_MyTable_ages_VALUE_1 指定了表格 MyTable 中的 表格单元(行 1,列 ages),其值为 4。在对小应用程序的函数调用中的 关键字 DTW_COLUMN 指定了您只对结果表格 MyTable 中的列 age 感兴趣,如这里所示:

@DTWA_MyGraph( MyTitle, DTW_COLUMN(ages) MyTable )

以下输出显示了 Net.Data 为上述示例生成的完整的小应用程序标记。

<applet code='MyGraph.class' codebase='/netdata-java/'
        width='400'          height='200'
>
<param name = 'MyTitle' value = "This is my Title" />
<param name = 'DTW_NUMBER_OF_TABLES' value = "1" />
<param name = 'DTW_TABLE_1_NAME' value = "MyTable" />
<param name = 'DTW_MyTable_NUMBER_OF_ROWS' value = "5" />
<param name = 'DTW_MyTable_NUMBER_OF_COLUMNS' value = "1" />
<param name = 'DTW_MyTable_COLUMN_NAME_1' value = "ages" />
<param name = 'DTW_MyTable_ages_VALUE_1' value = "35" />
<param name = 'DTW_MyTable_ages_VALUE_2' value = "32" />
<param name = 'DTW_MyTable_ages_VALUE_3' value = "31" />
<param name = 'DTW_MyTable_ages_VALUE_4' value = "28" />
<param name = 'DTW_MyTable_ages_VALUE_5' value = "40" />
<p>Sorry, your browser is not Java-enabled.</p>
</applet> 

使用 Net.Data Java 小应用程序接口

Net.Data 在一个名为 DTW_Applet.class 的类中提供了一系列接口,它们可以和 您的 Java 小应用程序一起使用,帮助处理为表格变量生成的 PARAM 标记。您可以创建一个扩充此 接口的小应用程序,用于从您的小应用程序调用例程。

Net.Data 提供了这些接口:

要访问接口,请在您的小应用程序代码中使用 EXTENDS 关键字来把您的小应用程序从 DTW_APPLET 类 中归为子类,如下面的示例所示:

import java.io.*;
import java.applet.Applet;
 
public class myDriver extends DTW_Applet
    {
    public void init()
        {
        super.init();
 
        if (GetNumberOfTables() > 0)
            {
            String [] tables = GetTableNames();
            printTables(tables);
            }
        }
 
    private void printTables(String[] tables)
        {
        String table_name;
 
        for (int i = 0; i < tables.length; i++)
            {
            table_name = tables[i];
            printTable(table_name);
            }
        }
 
    private void printTable(String table_name)
        {
        int nrows = GetNumberOfRows(table_name);
        int ncols = GetNumberOfColumns(table_name);
 
        System.out.println("Table: " + table_name + " has " + ncols +
	                   " columns and " + nrows + " rows.");
 
        String [] col_names = GetColumnNames(table_name);
 
        System.out.println("----------------------------------------");
 
            for (int i = 0; i < ncols; i++)
            System.out.print("   " + col_names[i] + "   ");
        System.out.println("\n--------------------------------------");
 
        String [][] mytable = GetTable(table_name);
 
        for (int j = 0; j < nrows; j++)
            {
            for (int i = 0; i < ncols; i++)
                System.out.print("   " + mytable[i][j] + "   ");
 
            System.out.println("\n");
            }
        }
    }


[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 ]