一PowerBuilder中的WEB应用模块
PowerBuilder中含有开发WEB应用的模块通过这些模块可以连接WEB服务器与PowerBuilder应用.该模块包括以下及部分WebPB:是几个可以在WEB服务器上执行的程序被服务器激活后调用PowerBuilder应用完成客户端任务和对数据库的事务操作.Plug_ins(插入件)包括Window plug_in和Datawindow Plug_in此方式可将PowerBuilder对象嵌入到页面中在浏览器端执行PowerBuilder应用.Window Activex:此方式与Window plug_in类似 所不同在于该方式可以和HTML中的JavaScriptsVBscripts交互.本文主要讨论利用WebPB开发WEB应用.
二用WebPB开发WEB应用
WebPB本身就是个CGI程序它提供了从服务器到PowerBuilder应用的访问.所以在WebPB之上可以利用PowerBuilder的强大功能开发复杂的WEB应用如采用PowerBuilder的PowerScripts语言环境数据窗口技术等.PowerBuilder的WEB应用构建前提是分布式应用体系.PowerBuilder的客户端应用分布到WEB服务器上可将WebPB看作为客户端应用.当客户端应用WebPB被WEB服务器激活后调用PowerBuilder的服务器应用执行在服务器应用中定义的方法实现业务逻辑
这种模式是真正的廋客户机模式客户端不需要安装其它软件只安装浏览器软件.所有的事务操作都在服务器端完成下面将结合实例详细说明
利用PowerBuilder开发一个网上购书应用.对于分布式PowerBuilder应用首先应向客户WebPB指明PowerBuilder服务器应用在网络上的位置(Location)其应用名使用文件PBWEBINI来记录服务器应用信息.在此例中取服务器应用名为TUTORIAL Driver=Winsock Application=/tcp Location=Localhost
建一个数据库(book_dealing)其中有三个表分别为
book b_name b_no b_publisher b_priceb_num
customer c_name c_telc_addr
dealing b_name c_name d_num d_time
建一个数据窗口dw_book其SQL语法为
SELECT bookb_name
bookb_no
bookb_publisher
bookb_price
bookb_num
FROM book
创建PB服务器应用的用户界面在窗口w_server上有两个按钮cb_cb_再定义一个transport类型的实例变量mytransportcb_的clicked事件有关程序如下
mytransport = create transport
mytransport driver = winsock
mytransportlocation = localhost
mytransportapplication =
创建一个不可视的用户对象u_internet定义一个transaction类型的全局变量mytransaction在该用户对象的constructor事件中定义连接到数据库(book_dealing)的事务对象mytransaction和连接到数据库(webpb)的事务对象sqlca在该对象的destructor事件中分别取消这两个事务对象
在u_internet上定义两个函数分别为f_book f_book_dealing这两个函数的返回值都为字符类型在f_book中利用数据窗口dw_book作数据库查询再利用数据窗口的属性将查询结果以HTML形式返回给webpb有关程序如下
string return_html
datastore dd
dd = create datastore
dddataobject = dw_book
ddsettransobject(mytransaction)
ddretrieve()
return_html=return_html+ddobjectdatawindowdatahtmltable
return return_html
在函数f_dealing中定义参数分别为book_name deal_num custom_name deal_time custom_tel custom_addr用来接受FORM元素传来的信息再利用PowerScripts语言对数据库(book_dealing)进行修改有关程序如下
string return_html
…………
connection using mytransaction;
insert into customer
(c_name
c_tel
c_addr)
values( :custom_name :custom_tel :custom_addr);
insert into dealing
(b_name
d_num
d_time
c_name)
value(:book_name :deal_num :deal_time :custom_name);
if mytransactionsqlcacode> then
return_html=定货成功!
else
return_html=定货失败!
endif
………
return return_html
主页上的浏览书库的超连接为A HERF=/scripts/pbcgiexe/tutorial/u_internet/f_book〉 浏览书库</A>
定书信息页上应有几个单行编辑器用来录入用户购书信息(例如:书名用户名购书数量等等)其FORM元素的ACTION为
<form action= /scripts/pbcgiexe/tutorial/u_internet/f_book_dealingmethod= get>
以上程序可实现简单的网上购书的功能既用户可浏览书库也可订购所需的图书