Connection Information

To perform the requested action, WordPress needs to access your web server. Please enter your FTP credentials to proceed. If you do not remember your credentials, you should contact your web host.

Connection Type

Context information – PB Docs 90 – PowerBuilder Library

Context information – PB Docs 90

Context information

The PowerBuilder context feature allows applications to access
certain host (non-PowerBuilder) services. This is a PowerBuilder
implementation of functionality similar to the COM QueryInterface.
PowerBuilder provides access to the following host services:

PowerBuilder creates service objects appropriate for the current
execution context (native PowerBuilder, PowerBuilder window plug-in,
PowerBuilder window ActiveX, transaction server). This allows your
application to take full advantage of the execution environment.
For example, in a PowerBuilder window plug-in, your application
can access parameters specified in the Embed element. Additionally,
when running the PowerBuilder window ActiveX under Internet Explorer,
your application can access the ActiveX automation server, which
allows your program to access and control the Internet browser.

The context feature uses seven PowerBuilder service objects: ContextInformation,
ContextKeyword, CORBACurrent, ErrorLogging, Inet, SSLServiceProvider,
and TransactionServer; it also uses the InternetResult object. (The
context feature is sometimes called the Context object, but it is not a
PowerBuilder system object.)

For more information about these objects,
see Objects and Controls
or the PowerBuilder
Browser.

Enabling a service

Before you use a service, you instantiate it by calling the GetContextService function.
When you call this function, PowerBuilder returns a reference to
the instantiated service. Use this reference in dot notation when
calling the service’s functions.

proc.gif To enable a service:

  1. Establish an instance variable of the appropriate
    type:

  2. Instantiate the instance variable by calling the GetContextService function:

Using a CREATE statement

You can instantiate a service object with a PowerScript CREATE statement. However,
this always creates an object for the default context (native PowerBuilder
execution environment), regardless of where the application is running.

Context information service

You use the context information service to obtain information
about an application’s execution context. The service provides
current version information, as well as whether the application
is running in the PowerBuilder execution environment and whether
as a PowerBuilder window plug-in or a PowerBuilder window ActiveX.
Using this information, you can modify display characteristics and
application behavior. For example, you might hide a Close command
button when running as a plug-in or ActiveX. Additionally, when
running in the PowerBuilder window ActiveX under Internet Explorer,
the context information service can return a reference to an ActiveX
automation server object. Your application can use this reference
to call functions that control the Web browser.

Accessing context information

Using the context information service, you can access the
information in Table 21-4.

Table 21-4: Context information
Item Use this function Comment
Full context name GetName Value returned depends on the context:

  • Default: PowerBuilder Runtime
  • Window plug-in: PowerBuilder window Plugin
  • Window ActiveX: PowerBuilder window ActiveX
Abbreviated context name GetShortName Value returned depends on the context:

  • Default: PBRUN
  • Window plug-in: PBWinPlugin
  • Window ActiveX: PBRTX
Company name GetCompanyName Returns Sybase, Inc.
Version GetVersionName Returns the full version number (for example, 9.0.1)
Major version GetMajorVersion Returns the major version number (for example, 9)
Minor version GetMinorVersion Returns the minor version number (for example,
0)
Fix version GetFixesVersion Returns the fix version number (for example,
1)

Using the ClassName function

You can also use the ClassName function
to determine the context of the object. The return value of the ClassName function
differs by context. For example, for the Window plug-in the return
value is plugincontextinformation, and for the Window
ActiveX it is rtxcontextinformation.

You can use this information for many purposes, including:

  • Modifying application appearance based
    on execution context
    For example, you might hide a Close button when running in
    the PowerBuilder window plug-in and PowerBuilder window ActiveX.
    In a plug-in or ActiveX, closing the window results in a blank space
    in the HTML page.
  • Verifying that the context supports
    the current version
    For example, if your application requires features or fixes
    from Version 9.0.1, you can use the context information
    service to check the version in the current execution context.

proc.gif To access context information:

  1. Declare an instance or global variable
    of type ContextInformation:

  2. Create the context information service by calling
    the GetContextService function:

  3. Call context information service functions as
    necessary.

    This example calls the GetShortName function
    to determine the current context and the GetVersionName function
    to determine the current version:

Accessing the ActiveX automation server

If you are running the PowerBuilder window ActiveX in Internet
Explorer Version 3.0 or later, your application can call the context
information service’s GetHostObject function
to obtain a reference to an ActiveX automation server object (the
hosting object). Specifically, if you pass an uninstantiated OLEObject
variable to GetHostObject, it returns a reference
to the IWebBrowserApp automation server.

Your application can call and access IWebBrowserApp methods
and properties, which allow you to access and control certain aspects
of browser behavior, including:

  • Go back
  • Go forward
  • Go home
  • Refresh
  • Navigate to a specified Web page
  • Exit the browser

For more
information on the IWebBrowserApp interface, its methods, and its properties,
see the Internet Explorer documentation or the Microsoft Web site.

proc.gif To access the ActiveX automation server:

  1. Declare instance or global variables of
    type ContextInformation and OLEObject:

  2. Create the context information service by calling
    the GetContextService function:

  3. Establish a reference to the ActiveX automation
    server by calling the GetHostObject function:

  4. Call IWebBrowserApp functions as necessary. This
    example calls the Navigate function to open the
    default Web browser displaying the Sybase home page:

Context keyword service

Use the context keyword service to access environment information
for the current context. In the default environment, this service
returns host workstation environment variables. In the PowerBuilder
window plug-in, this service allows you to access parameters specified
in the plug-in’s Embed element. When running within EAServer, you can use the keyword
service to get component property values.

For information about using the context keyword service in EAServer, see “Accessing component properties”.

Accessing environment variables

When running in the PowerBuilder execution environment (the
default context), you use this service to return environment variables.

proc.gif To access environment variables:

  1. Declare an instance or global variable
    of type ContextKeyword. Also declare an unbounded array of type
    String to contain returned values:

  2. Create the context information service by calling
    the GetContextService function:

  3. Call the GetContextKeywords function
    to access the environment variable you want. This example calls
    the GetContextKeywords function to determine
    the current application Path:

  4. Extract values from the returned array as necessary.
    When accessing environment variables, the array should always have
    a single element:

Accessing Embed element parameters

The Embed element can contain additional, user-specified,
parameters. Additionally, the Embed element allows more than one
value for each parameter.

When running in the PowerBuilder window plug-in context, you
use this service to access parameters specified in the Embed element.
If the specified parameter is not found, the service tries to match
the specified parameter with an environment variable.

proc.gif To access Embed element parameters:

  1. Declare an instance or global variable
    of type ContextKeyword. Also declare an unbounded array of type
    String to contain returned values:

  2. Create the context information service by calling
    the GetContextService function:

  3. Call the GetContextKeywords function.
    This example calls the GetContextKeywords function
    to access values for the user-specified parameter, VALID:

  4. Extract values from the returned array as necessary.
    This example displays parameters in a list:

CORBACurrent service

Client applications and EAServer components
marked as OTS style can create, control, and obtain information
about EAServer transactions using
functions of the CORBACurrent context service object. The CORBACurrent
object provides most of the methods defined for the CORBA Current
interface.

For more information, see “Client- and component-demarcated
transactions”
.

Error logging service

To record errors generated by PowerBuilder objects running
in a transaction server to a log file, create an instance of the
ErrorLogging service object and invoke its log method. For example:

The errors are recorded in the EAServer log
if the component is running in EAServer,
and in the Windows NT system application log if the component is running
in MTS.

Internet service

Use the Internet service to:

  • Display
    a Web page in the default browser (HyperLinkToURL function, which
    starts the default browser with the specified URL)
  • Access the HTML for a specified page (GetURL function,
    which performs an HTTP Get)
  • Send data to a CGI, ISAPI, or NSAPI program (PostURL function,
    which performs an HTTP Post)

Hyperlinking to a URL

You call the Internet service’s HyperLinkToURL function
to start the default browser with a specified URL.

proc.gif To hyperlink to a URL:

  1. Declare an instance or global variable
    of type Inet:

  2. Create the Internet service by calling the GetContextService function:

  3. Call the HyperLinkToURL function,
    passing the URL of the page to display when the browser starts:

Getting a URL

You call the Internet service’s GetURL function
to perform an HTTP Get, returning raw HTML for
a specified URL. This function returns the raw HTML using the InternetResult
object.

proc.gif To perform an HTTP Get:

  1. Declare an instance or global variable
    of type Inet. Also declare an instance or global variable using
    the descendent InternetResult object as the datatype (n_ir_msgbox in
    this example):

  2. Create the Internet service by calling the GetContextService function:

  3. Create an instance of the descendent InternetResult
    object:

  4. Call the GetURL function, passing
    the URL of the page to be returned and a reference to the instance
    of the descendent InternetResult object:

    When the GetURL function completes, it
    calls the InternetData function defined in the
    descendent InternetResult object, passing the HTML for the specified
    URL.

Posting to a URL

You call the Internet service’s PostURL function
to perform an HTTP Post, sending data to a CGI,
ISAPI, or NSAPI program. This function returns the raw HTML using
the InternetResult object.

proc.gif To perform an HTTP Post:

  1. Declare an instance or global variable
    of type Inet. Also declare an instance or global variable using
    the descendent InternetResult object as the datatype (n_ir_msgbox in
    this example):

  2. Create the Internet service by calling the GetContextService function:

  3. Create an instance of the descendent InternetResult
    object:

  4. Establish the arguments to the PostURL function:

  5. Call the PostURL function,
    passing the URL of the routine to be executed, the arguments, the
    header, an optional server port specification, and a reference to
    the instance of the descendent InternetResult object:

    When the PostURL function completes, it
    calls the InternetData function defined in the
    descendent InternetResult object, passing the HTML returned by the
    specified routine.

Using the InternetResult object

The GetURL and PostURL functions
both receive data in an InternetResult object. This object acts
as a buffer, receiving and caching the asynchronous data as it is
returned by means of the Internet. When all data is received, the InternetResult
object calls its InternetData function, which
you override to process the data as appropriate.

note.gif Implement in descendants of InternetResult You implement this feature by creating standard class user
objects of type InternetResult. In each of these descendent user
objects, define an InternetData function to process
the passed HTML as appropriate.

proc.gif To implement a descendent InternetResult object:

  1. Create a standard class user object of
    type InternetResult.

  2. Declare a new user object function as follows:

    • Name InternetData
    • Access Public
    • Returns Integer
    • Argument name Data, passed by value
    • Argument datatype Blob
  3. Add code to the InternetData function
    that processes the returned HTML as appropriate. This example simply
    displays the HTML in a MessageBox:

Secure Sockets Layer service

PowerBuilder allows you to establish Secure Sockets Layer
(SSL) connections to EAServer.
The SSL protocol allows connections to be secured using public-key
encryption and authentication algorithms that are based on digital certificates.
SSL is a “wrapper” protocol: packets for another protocol are secured
by embedding them inside SSL packets. For example, HTTPS is HTTP secured
by embedding each HTTP packet within an SSL packet. Likewise, IIOPS
is IIOP embedded within SSL.

You use an instance of the SSLServiceProvider object to establish
the connection from the client to the server. For more information,
see the PowerScript Reference
and Chapter 25, “Using SSL in PowerBuilder clients”

Transaction server service

Use the transaction server service to access information about
the context of an object running in a transaction server such as EAServer, MTS, or COM+.
You can use the TransactionServer object to influence transaction
behavior programmatically, and to access the methods of another
component on the transaction server.

For more information, see Chapter 23, “Building an EAServer Component” and Chapter 26, “Building a COM, MTS, or
COM+ Component”

Tools and techniques for building distributed applications with
PowerBuilder.

note.gif PowerBuilder Enterprise edition only The tools for building multitier applications available with PowerBuilder
are supported in the Enterprise edition only.


Document get from Powerbuilder help
Thank you for watching.
Was this article helpful?
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x