更改Oracle数据库表的表空间(1)
一、开发组件
在介绍如何将PB组件部署到Jaguar CTS服务器之前,首先介绍一下如何利用PowerBuilder 7开发一个组件。这一步非常重要,因为在这里要设定许多选项,而这些选项又最终直接影响到PB组件的部署工作。
采用Jaguar组件向导创建组件,需要回答一系列的问题和设置一些选项,对这些设置和选项的理解是非常重要的,因为它直接影响部署到Jaguar服务器中组件的行为。
利用PowerBuilder创建Jaguar组件时一般都采用Juguar组件向导,该向导引导你完成一系列的设置来创建一个新的Jaguar组件。在向导引导过程中输入的值最后将影响到组件的事件、属性和部署选项。所以在该向导过程中,必须注意这些选项和属性的值。下面我们就开始一步步利用组件向导来创建一个Jaguar组件,对涉及到的所有选项和属性作详细介绍。
选择“FileNew”菜单或者直接在工具条中选择“New”。PowerBuilder 弹出一个由许多标签组成的对话框。选择“Start Wizards”标签,再选择“Jaguar Component”,然后点击“OK”按钮,Jaguar组件向导启动。在第一次创建组件时需要上述步骤,一旦利用该向导创建了一个组件应用,以后只需要在“Object”标签下创建另外的组件。
向导的第一个屏幕首先介绍了该向导的功能和如何通过客户端应用来存取Jaugar对象。点击"Next"按钮,出现下一个对话框,这个对话框总结了向导需要的所有信息和将要回答的问题,点击"Next"按钮,出现如图1所示对话框。该对话框提示用户输入应用的名称和库路径。在这里可以取一个能反映组件功能的应用名称,也可以选用默认的名称“genapp”,最后确认库路径,并点击"Next"按钮。下一个屏幕显示库路径,如果需要的话,可以改变它,点击"Next"按钮,弹出如图2所示对话框。该对话框要求用户输入PowerBuilder的非可视化组件的名称和描述信息,系统默认为应用名称前加"n_"前缀。点击"Next"按钮,弹出下一个对话框。该对话框要求用户输入Jaguar组件名,这个名称默认为和PowerBuilder对象名相同但用户也可以改变它。点击"Next"按钮,下一个屏幕要求用户输入连接Jaguar服务器的一些信息,如图3所示。当部署组件到Jaguar服务器时,PowerBuilder需要这些信息来取得和服务器的连接。如果Jaguar组件服务器运行在本地机器上,则在“Server name”处填入localhost,如果组件服务器没有运行在本地,则需要输入服务器的的名称或其IP地址。端口号为在Jaguar服务器创建时指定的监听器端口号,确省为9000。登陆账号默认为jagadmin,口令默认为空(Jaguar服务器管理员可以更改默认的登陆账号和口令),鼠标单击"Next"按钮。
图1 指定新的应用名称和库
图2 指定新的应用名称和库
图3 指定新的应用名称和库
下一个屏幕要求用户为组件指定一个包名。什么是包?一般来说,一个包就是一组功能相关的对象的集合。所有部署到Jaguar服务器的组件都需要一个包名。在这里可以手工输入一个包名,也可以取Jaguar服务器上已经存在的一个包名,点击"Next"按钮。
下一个屏幕要求用户选择组件的类型。这里有三种类型供选择:标准型(一般组件)、共享型(共享实例)和服务型(在服务器启动时装入,为Jaguar客户端或组件执行后台服务)。一个共享组件的“sharing”属性被设置为TRUE。服务组件不仅被标志为共享,而且还有另外一些方法,如运行,启动和停止等。选择需要的组件类型,点击“Next”按钮。
下一个屏幕用来指定实例缓冲选项。在选择“不支持(not supported)”情况下,可以通过在组件的“CanBePooled”事件中添加代码来改变组件实例为支持缓冲。也可以通过在Jaguar manager中改变组件的缓冲属性。选择所需要的缓冲属性,点击“Next”按钮。
图4 指定新的应用名称和库
下一个屏幕用来指定事务支持(Transaction Support)和自动分界/自动清除(Auto Demarcation/Deactivation)选项。这两个属性也可以通过Jaugar manager来直接设定。下面对几种事务分别作一下解释。
- “Not Supported(不支持)”:指组件在事务范围之外执行;
- “Supports Transaction(支持)”:指如果有一个事务在执行,则该组件在这个事务中执行,否则组件将在事务之外执行。
- “Requires Transaction(请求事务)”:指组件将一直在一个事务内部执行。如果客户端向一个组件发出服务请求时,则一个新的事务开始。如果一个组件被另外一个已经运行在一个事务中组件请求,则该组件将使用另外一个组件的事务。
- “Requires New Transaction(请求新事务)”:指一个组件初始化后,一个新的事务开始启动。
下一个屏幕用来选择远程调试(remote debugging)和现场编辑(live editing)。远程调试选项在开发期间是非常有用的,但是到了最终释放代码时,不要选中该选项,否则,用户可以看到你的组件代码。现场编辑指Powerbuilder每次在对组件画板作过改变保存后都自动部署组件到Jaguar。选择需要的选项,点击“Next”按钮。
下面将进行PBD生成的一些选项选择。如果选择第一项,则PowerBuilder将从所有库列表中的PBD创建一个单一合并的PBD,然后还需要为这个合并的PBD另外指定一些选项。如果在组件的数据窗口中有一些动态引用(如用到了数据窗口),则应该选中第二个选项(include unreferenced objects)。输入一个合并后的PBD的名称和使用的资源文件PBR的名字,这个资源文件能使组件具有和通常意义上的Powerbuilder应用一样的功能。点击“Next”按钮。
最后,向导显示出所有的选项并为这个组件生成一个“工作计划(to_do)列表”,点击“Finish”按钮,至此,该组件将被生成。
二、修改PB对象为组件
有时候需要将一个已经存在的PB对象升级为一个组件。这时就需要增加一些事件,还需要为部署该组件创建一个工程。
1. 添加事件
将一个传统的PB对象升级为一个Jaguar组件,需要另外添加一些事件,包括 activate, deactivate 和可选的canBePooled事件。
- activate-该事件映射到“pbm_component_activate”。该事件代码每次在组件被激活时执行。这里需要注意的是映射事件是“pbm_component_activate”而不是平常非常熟悉的pbm_activate。
- deactivate-该事件映射到“pbm_component_deactivate”。当组件不活动时激活该事件。
- canBePooled-该事件映射到“pbm_component_canbepooled”。它用来程序控制组件的实例缓冲。返回1时,允许实例缓冲,返回0时,禁止实例缓冲。
一旦将一个传统意义上的PowerBuilder对象升级为一个Jaguar组件,还需要另外创建一个部署工程,在下一节中对其进行详细讨论。
三、部署组件的过程和选项
在客户端应用程序使用组件之前,必须将该组件部署到一个应用服务器中。在Powerbuilder 7中,可以利用PB和Jaguar的集成特性,在PB中每次对组件进行修改保存后,直接将其部署到Jaguar服务器中。这种特性在PB中被称为现场调试(Live Editing),这在开发和测试环境中是非常有帮助的,但不能将其应用到实际应用环境中。
1. PB组件的组成
- PowerBuilder PBDs
一个部署过的PowerBuilder组件具有许多的元素。第一个就是编译过的PB代码,存放在一个或者多个PBD中。在操作系统中必须要指定这些组件库的路径,这样PowerBuilder的PBDs才能够被Jaugar中的PowerBuilder运行时间库引擎存取。 - IDL
除了PowerBuilder代码以外,还需要一个界面描述,它在客户端应用向服务器中的组件请求服务时使用。这些界面信息采用界面定义语言(IDL)来描述。 - Resources
资源是组件动态应用需要的位图或者数据窗口,这些资源保存在PBR文件中。