PB7.0中實現Jaguar GTS組件開發

PB7.0中實現Jaguar GTS組件開發


廣州金宇恆科技有限公司 陳紀山
01-6-25 下午 05:42:09


PB7.0 與Jaguar CTS(組件事務服務器) 做到了緊密集成,只需要編寫少量代碼,就可以建立基於Jaguar CTS 的組件,同時Jaguar CTS本身內置PB虛擬機,使用PB7.0編寫的組件可以直接與Jaguar CTS進行高效通信。這樣PB組件通過Jaguar CTS與後臺數據庫建立連接,方便地實現基於三層體系結構的開發。
建立Jaguar 組件
在PB中有三種方法可以建立Jaguar組件:
1、Start Wizard:建立一個新的應用、新的用戶對象和新的工程;
2、Object Wizard:在已有的應用的基礎上建立一個新的用戶對象和工程;
3、Project Wizard:從已有的用戶對象中生成一個Jaguar組件。
你可以根據需要選擇以上三種方法之一來建立Jaguar組件。建立Jaguar組件一般有如下四步:
1、使用Start Wizard(或者Object Wizard、Project Wizard)來建立一個新的應用、新的用戶對象和新的工程;
2、爲用戶對象加入方法、事件和實例變量;
3、測試組件;
4、發佈組件至Jaguar CTS。
建立Jaguar客戶端應用
爲了實現客戶端與Jaguar組件的通信,需按如下步驟建立Jaguar客戶端應用:
1、使用Jaguar Connection Object Wizard建立一個連接對象;
2、使用Jaguar Proxy Wizard來建立一個工程,使用該工程產生代理對象;
3、建立窗口、菜單、腳本來做一個客戶端圖形用戶界面;
4、編寫適當的代碼來創建Jaguar組件實例並且訪問它的方法(通過代理對象);
5、測試客戶端應用;
6、發佈客戶端應用。
實 例
本實例通過PB7.0建立一個Jaguar CTS組件,然後發佈至Jaguar CTS服務器,該服務器通過ODBC數據源(本例數據源名爲EAS Demo DB V3)與後臺數據庫(本例使用Sybase Adaptive Anywhere數據庫,數據庫名爲:EASDemoDB.db) 相連,客戶端代理程序通過Jaguar CTS組件對後臺數據庫進行訪問,比如查詢employee表中的僱員情況等,從而實現一個典型的PB三層體系結構應用。具體做法如下:
1.建立Jaguar CTS組件
啓動PB7.0,選擇File-->New,彈出一個對話框,選擇Start Wizard頁,雙擊啓動Jaguar Componet圖標,在嚮導的指引下,可以一步一步生成一個新的應用、組件、工程,在此分別命名爲jag_app、n_jag_cmp、p_jag_prj。
打開Library畫筆,打開jag_app所在的庫文件,雙擊打開 n_jag_cmp用戶對象,在Declare欄聲明如下實例變量:
protected:
DataStore ids_emp //聲明一個不可視的數據存儲對象
在n_jag_cmp用戶對象的Constructor事件中,建立數據庫連接,代碼如下:
// Profile EAS Demo DB V3
SQLCA.DBMS = “ODBC"
SQLCA.Database = “EAS Demo DB V3"
SQLCA.AutoCommit = False
SQLCA.DBParm = “ConnectString=
‘DSN=EAS Demo DB V3;UID=dba;PWD=sql'"
//
CONNECT USING SQLCA;
//創建數據存儲對象,並作必要設置
ids_emp=Create DataStore
ids_emp.DataObject=“d_emp"
ids_emp.SetTransObject(SQLCA)
在n_jag_cmp用戶對象的Destructor事件中,做如下清理工作來釋放資源:
Destroy ids_emp
DISCONNECT USING SQLCA;
爲n_jag_cmp用戶對象增加一個函數uf_employee,該函數訪問類型爲Public,返回值爲blob類型,無參數,函數體如下:
blob lblb_data
ids_emp.Retrieve()
ids_emp.GetFullState(lblb_data)
Return lblb_data
創建一數據窗口對象,名爲:d_emp,該數據窗口顯示風格爲Grid,語法如下:
SELECT “employee".“emp_id",
“employee".“emp_fname",
“employee".“emp_lname",
“employee".“birth_date",
“employee".“salary",
“employee".“sex"
FROM “employee"
關閉除了Library之外的所有畫筆,雙擊p_jag_prj工程對象打開工程畫筆,點擊快捷工具欄的Build圖標,編譯並將該組件發佈至指定的Jaguar CTS 服務器。
2.建立客戶端應用
選擇File-->New, 彈出一個對話框,雙擊Start Wizard 頁的Application圖標,創建一個新的PBL庫和一個應用對象,PBL庫名爲:Jag_client.pbl,應用對象名稱爲:Jag_client_app。
選擇File-->New, 彈出一個對話框,雙擊Object頁的 Connection Object Wizard圖標,創建一個連接對象,連接對象名稱爲jag_connection,注意在 Specify Connectivity畫面選擇連接選項時務必選擇Requires Jaguar Connection一項。指定 Jaguar CTS 服務器所在的機器名,缺省的端口爲9000,缺省的登錄ID爲jagadmin。選擇相應包的名稱(即建立Jaguar CTS組件時所指定的包的名稱)。按照嚮導指示完成餘下的步驟。
選擇File-->New, 彈出一個對話框,雙擊Project頁的Jaguar Proxy Wizard圖標創建一個代理工程對象,名稱爲p_jag_client_prg,按上述同樣的方法指定Jaguar CTS服務器和包的參數。
創建完畢後,雙擊p_jag_client_prg對象,打開工程畫筆,點擊快捷工具欄的Build圖標,聯編p_jag_client_prg對象。這時你就會發現在jag_client.pbl 中多了一個n_jag_cmp代理對象。
選擇File-->New, 彈出一個對話框,雙擊Object頁的 Window圖標,創建一個窗口對象,對象名稱爲:w_proxy,保存該對象。
在w_proxy中增加如下控件:一個數據窗口控件,控件名爲:dw_employee,一個按鈕控件,控件名爲cb_retrieve,文本爲:提取數據。
在w_proxy的DECLARE 欄位聲明一個連接實例和一個組件實例,代碼如下:
jag_connection my_conn
n_jag_cmp my_comp
在w_proxy的open事件中實例化連接對象,並連接至Jaguar CTS,代碼如下:
my_conn = create jag_connection
my_conn.ConnectToServer()
在w_proxy的close事件中斷開連接並清理連接對象,代碼如下:
my_conn.DisconnectServer()
destroy my_conn
在cb_retrieve按鈕的clicked事件中加入如下代碼:
blob lblb_data
If Not Isvalid(my_comp) Then
my_conn.CreateInstance(my_comp)
//創建組件實例
End If
lblb_data=my_comp.uf_employee()
//調用組件的方法
dw_employee.SetFullState(lblb_data)
//將所需的數據展示於數據窗口中
最後編譯並運行客戶端程序,會得到如下運行結果:
01_6_25_7.jpg
本實例在Windows NT4.0(sp4)、Adaptive Server Anywhere6.0、Jaguar CTS3.0、PB7.0下運行通過。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章