管理及程式設計指南

Java Applet 語言環境

Java applet 語言環境可讓您在 Net.Data 應用程式中輕易地建立 Java applet 的 HTML 標籤。 當您呼叫 Java applet 語言環境時,您將指定 applet 的名稱, 以及傳遞 applet 需要的任何參數。語言環境會處理巨集,並建立 HTML applet 標籤, 然後 Web 瀏覽器會使用它來執行 applet。

此外,Net.Data 會提供一組介面,applet 可使用它們來存取表格參數。 這些介面位在類別 DTW_Applet.class 中。

下列各節將描述如何使用 Java applet 語言環境,來執行 Java applet。

架構 Java Applet 語言環境

請驗證下列架構陳述式是否在起始設定檔案中,且位在同一行上:

ENVIRONMENT (DTW_APPLET)   DTWJAVA    ( OUT RETURN_CODE )

請參閱環境架構陳述式,以瞭解 Net.Data 起始設定檔案及語言環境 ENVIRONMENT 陳述式。

建立 Java Applet

在使用 Net.Data Java applet 語言環境之前,您需要決定您計劃使用哪些 applet, 或您需要撰寫哪些 applet。請參閱 Java 文件,以取得如何建立 applet 的詳細資訊。

建立 Applet 標籤

您可以用 Net.Data 函數呼叫來建立 applet 語言環境的呼叫。 不需要宣告函數呼叫。函數呼叫的語法如下:

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

若要撰寫一個建立 applet 標籤的巨集:

  1. 在巨集的 DEFINE 區段串定義 applet 需要的任何參數。 這些參數包括任何 applet 標籤屬性、Net.Data 變數及需要作為 applet 的輸入的 Net.Data 表格變數。 例如:

    %define{
    DATABASE = "celdial"                   <=資料庫名稱
    MyGraph.codebase = "/netdata-java/"    <=必要的 applet 屬性
    MyGraph.height = "200"                 <=必要的 applet 屬性
    MyGraph.width = "400"                  <=必要的 applet 屬性
    MyTitle = "Celdial results"            <=網頁名稱
    MyTable = %TABLE(all)                  <=儲存查詢結果的表格
    %}
    
  2. 選用性:指定資料庫的查詢,來建立一個結果集合,作為 applet 的輸入。 當您使用 applet 來建立圖表或表格時,這是很有用的。例如:
    %FUNCTION(DTW_SQL) mySQL(OUT table){
    select name, ages from ibmuser.guests
    %}
    
  3. 在 Net.Data 巨集中指定函數呼叫,來呼叫 Java applet 語言環境, 以及呼叫 applet。函數呼叫會指定 applet 的名稱,以及指定您要傳遞給語言環境的參數。這些參數包括任何 Net.Data 變數,以及需要作為 applet 的輸入的 Net.Data 表格或直欄參數。

    例如:

    %HTML(report){
    @mySQL(MyTable)                                   <=呼叫 mySQL
    @DTWA_MyGraph(MyTitle, DTW_COLUMN(ages) MyTable) <=Applet 函數呼叫
    %}
     
    

Applet 標籤屬性

您可以在 Net.Data 巨集中的任意處指定 applet 標籤的屬性。 Net.Data 會將具有套表 AppletName.attribute 的所有變數替代成作為屬性的 applet 標籤。 在 applet 標籤上定義屬性的語法如下:

%define AppletName.attribute = "value"

下列屬性對所有 applet 是必要的:

下列屬性是選用性的:

例如,如果您的 applet 稱為 MyGraph,則您可以定義如下的這些必要屬性:

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

在 DEFINE 區段中不需要真正的指定。您可以用 DTW_ASSIGN 函數來設定值。 如果您未定義一個變數代表 AppletName.code 變數, 則 Net.Data 將新增預設 code 參數到 applet 標籤。 code 參數的值為 AppletName.class, 其中 AppletName 是您的 applet 的名稱。

Applet 標籤參數

您可以在函數呼叫中定義要傳遞給 Java applet 語言環境的參數列示。 您可以傳遞包括下列的參數:

當您傳遞參數時,Net.Data 會在 HTML 輸出中,以您指定給參數的名稱及值, 來建立 Java applet PARAM 標籤。 您無法傳遞字串文字或函數呼叫的結果。

Net.Data 變數參數

您可以使用 Net.Data 變數作為參數。如果您在巨集的 DEFINE 區塊中定義一個變數, 並傳遞 DTWA_AppletName 函數呼叫中的變數值, 則 Net.Data 將建立一個與變數具有相同名稱及值的 PARAM 標籤。例如, 給與下列巨集陳述式:

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

Net.Data 將產生下列 applet PARAM 標籤:

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

Net.Data 表格參數

每次呼叫 Java applet 語言環境時,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 僅會對指定的直欄建立對應的 applet 標籤。 表格直欄參數會使用下列語法:

@DTWA_AppletName(DTW_COLUMN( x )Table)

其中 x 是表格中的直欄名稱或欄號。

表格直欄參數會使用針對表格參數所定義的同一個 applet 標籤。

位於無法使用 Java 的瀏覽器上的 Applet 標籤的替代文字

變數 DTW_APPLET_ALTTEXT 指定將顯示在不支援 Java 或已關閉 Java 支援的瀏覽器上的文字。 例如,下列變數定義:

%define DTW_APPLET_ALTTEXT = "<p>很抱歉,您的瀏覽器不支援 Java。"</p>

將產生下列 HTML 標籤及文字:

<p>很抱歉,您的瀏覽器不支援 Java。</p><

如果未定義這個變數,將不會顯示任何替代文字。

Java Applet 範例

下列範例將描述一個 Net.Data 巨集,它可以呼叫 Java applet 語言環境, 以及呼叫語言環境所建立的結果 applet 標籤。

Net.Data 巨集含有 Java applet 語言環境的下列函數呼叫:

%define{
DATABASE = "celdial"
DTW_APPLET_ALTTEXT = "<p>很抱歉,您的瀏覽器不支援 Java。"</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 巨集行會指定 applet 標籤的屬性:

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

語言環境會以下列限定元來建立 applet 標籤:

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

Net.Data 會從輸出表格 MyTable 中的 Net.Data 巨集的 SQL 區段中,傳回 SQL 查詢結果。 這個表格是在 DEFINE 區段中指定:

MyTable = %TABLE(all)

巨集中 applet 的呼叫是在 HTML 區段中指定:

@DTWA_MyGraph( MyTitle, DTW_COLUMN(ages) MyTable )

依據函數呼叫中的參數,Net.Data 會建立一個完整的 applet 標籤, 它含有結果的相關資訊,如欄數、傳回的列數,以及結果列。 Net.Data 會對結果表格中的每一資料格建立一個參數標籤,範例如下:

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

參數名稱 DTW_MyTable_ages_VALUE_1 會指定表格 MyTable 中的表格資料格 (第一列,直欄經歷時間),它具有值 4。 applet 的函數呼叫中的關鍵字 DTW_COLUMN 指定您僅對在此顯示的 結果表格 MyTable 的直欄經歷時間有興趣:

@DTWA_MyGraph( MyTitle, DTW_COLUMN(ages) MyTable )

下列輸出會顯示 Net.Data 針對範例建立的完整 applet 標籤:

<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>很抱歉,您的瀏覽器不支援 Java。</p>
</applet> 

使用 Net.Data Java Applet 介面

Net.Data 會在名為 DTW_Applet.class 的類別中提供一組介面, 您可以使用它,搭配您的 Java applet,來協助處理針對表格變數而建立的 PARAM 標籤。 您可以建立一個 applet,擴充這個介面,以便可從您的 applet 呼叫常式。

Net.Data 提供這些介面:

若要存取介面,請在您的 applet 程式碼中使用 EXTENDS 關鍵字, 從 DTW_APPLET 類別取出 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");
            }
        }
    }


[ 頁面頂端 | 前一頁 | 下一頁 | 目錄 | 索引 ]