Title: PowerBuilder Strategic Direction
1(No Transcript)
2PowerBuilder Strategic Direction
3State of the Development Tools Market
8,000 7,000 6,000 5,000 4,000 3,000 2,000 1,000 0
Millions
2001 2002 2003 2004
2005 2006
4GLs Web Professional Development Tools Software
Construction Components
3GLS Analysis/Model/ Design/ Construction
Source IDC, 2003
4Primary Approaches to Application Development
Other
13
4GL/RAD
3GLs
36
23
OO 3GLs
Source IDC
28
5The State of Application Development
-
- The primary focus in application development
remains building or maintaining enterprise wide
two-tier transactional applications using 4GL/RAD
tools. - Stephen D. Hendrick - IDC
6The State of Application Development
Most important IDE Characteristics Percent
Ease of use or simplicity 32.8
Functionality 13.4
Reliability or freedom from bugs 10.4
Compatibility with tools from other vendors 8.5
Reduces development time 8.0
Other characteristics 26.9
Total 100.0
N 201, Source IDC, 2002
7RMI
WSDL
COM
XML
J2EE
HTTP
.NET
SSL
JNI
B2B
TCP/IP
CORBA
How do we sort it all out?
8Priority What Are the Strategic Application
Development Initiatives for End Users?
Rank each of the following strategic business
initiatives
Maintain/enhance existing applications
Integrate internal applications
Build, deploy, customize new applications
Increase productivity of development process
Build e-commerce solutions
Integrate applications with external suppliers
Build and deploy mobile/handheld applications
Utilize open source solutions
Integrate applications with online exchange
0
20
60
80
40
responding extremely or highly likely
Source IDC, SW Strategies Investment Survey,
Final, Users, Fall 2001, n 218
9Uses for PowerBuilder Today and in the Future
PowerBuilder Today
80
Client-Server Only
Some Web Projects
17
Most Web Projects
3
PowerBuilder Future
50
Client-Server Only
Some Web Projects
42
Most Web Projects
8
Source Novalys Inc. 3,400 Respondents 101
Countries
10What is Important to Your Organization Today?
- Protect your existing technology investment
- Stay current with industry trends and new
technology - Gain a competitive advantage
- Incorporate new technology into existing
applications - Minimize costs
- Protect your existing people investment
- Utilize their existing skills
- Give them a platform for the future
11Comprehensive Architecture
You can build and generate many object models,
communicate with standard protocols, and deploy
to a variety of platforms.
Process Model
Web Services
Wireless
.NET
XML
Smart Client
JSP
J2EE
Application Server(s)
Component Model
Thin Client
Database(s)
DataWindow
RAD Tools
Data Modeling
Rich Client
PowerBuilder PowerDesigner
12Sybase Development Vision
To be the integrated development environment
(IDE²) of choice for all application
architectures
13Integrated Development Environment
Supports
Yields
HighestApplication Productivity and Fastest
Timeto Deploy
- Rich Client
- Thin Client
- Smart Client
- Business Processes
14Integrated Development Environment Existing and
New Applications
PowerBuilder
Reverse Engineering
Heterogeneous Support
4GL
Java, J2EE, Corba,C, C, VB.Net, Web Services,
etc.
ModelingTool
Round-trip Engineering
PowerBuilder
Round-trip Engineering
Relational DatabaseManagement System (RDBMS)
15Direction of Applications
RAD Int. Environment Heterogeneous
Integrated/ Strategic
3rd Generation
2nd Generation
Stand Alone/ Operational
1st Generation
Time
16Beyond 4GL
4GL Life-cycle Development and
Heterogeneous EnvironmentSupport
Development Productivity
4GL VisualDevelopmentEnvironment (IDE)
3GL ProgrammingLanguages
Time
17PB and .Net - Phased Implementation
1
4
Simplified.NET Objects
WebServices
PowerBuilder
3
2
PBs .NET Compiler
DataWindow.NET DataStore.NET
18PB and J2EE
- PowerBuilder 8.0
- EAServer
- EASI
- Web Services Toolkit
- PowerBuilder 9.0
- EJB Clients
- PB Web Services
- RAD Java Server Pages
- Future
- NVOs in 3rd Party Application Servers
19Development in Heterogeneous Environments
.NET
- Accessing components in .NET framework in
PB IDE - .NET Compiler
- DataWindow.NET
- DataStore.NET
- Enhanced Web DW
- 4GL JSP support
- Build, access, and consume Web services
- DataWindow XML
- XML services
- Access EJBs in major application servers
- Deploy NVOs directly to major application
servers - Continue enhancing JSP authoring and XML
capabilities
J2EE
2004
Today -gt 2003
20Summary
- Sybase pioneered 4GL and will continue to lead in
application development through IDE2, giving you
Exponential Power with the 4GL - Sybase is strongly committed to PowerBuilder
version 9.0 is available today and planning is
underway for 9.5, 10.0 and beyond - Customer needs span from client-server to
next-generation, to best development practices
and PB will meet these requirements - Sybase will extend RAD for enterprise
applications to RAD for mobile applications with
Pocket PowerBuilder for handheld devices release
in Q3 2003
21PowerBuilder 9.0 New Features
- RAD Java Server PagesTM (JSPTM) Authoring
- XML (Extensible Markup Language)
- DataWindow (Export and Import)
- PB DOM (XML Parsing in PowerScript)
- PowerBuilder Native Interface (PBNI)
- EJB Client Support
- Web Services Support
22RAD JSP
- Creating JSP Web Applications with PowerBuilder
23Introduction to JSP Technology
- JSP is
- A technology for delivering dynamic content
- Based upon Java Servlet technology
- JavaServer Pages
- Contain standard HTML
- Can contain Custom tags
- Can contain JSP elements
- JSP Actions
- JSP Directives
- Scripting Elements
- At run time, are compiled into Servlets
24JSP Authoring in PowerBuilder
- New PowerBuilder Target Type (JSP Target)
- Builds upon the existing Web Targets User
Interface - New Wizard - JSP Target
- Extensions to the Page Editor
- System Tree Additions
- Deployment Enhancements
- EAServers JSP Container
- Apache Tomcat
- Command Line Deployment
25JSP Authoring in PowerBuilder 9.0
- PowerBuilder 9 provides a powerful object model
for - Data transfer between the web client and the
application server - HTML generation
- JavaScript generation for server scripts
26JSP Authoring in PowerBuilder 9.0
- Wizard for
- Creating JSPs that call Web Services
- WYSIWYG editing of JSP pages
- Full access to the page source through the editor
27RAD JSP
- Seeing the Technology in Action
28XML DataWindow
- Importing and Exporting XML with the DataWindow
29Review of XML
- Extensible Markup Language
- Extends the ability to represent data
- Metadata languagetags and layout can be
customized - Data can be hierarchically structured with
nesting - Easily parsed across applications, platforms,
enterprises, and Web for data interchange - World Wide Web Consortium (W3C) XML 1.0
Recommendation at http//www.w3.org/TR/REC-xml
30XML Document
- Well-Formed if structure follows XML syntax rules
- Contains one or more elements
- Element is a tree/leaf containing start-tag,
content, end-tag - Start-tag is a name, enclosed by angle brackets,
with optional attributes - Attribute names must be unique for element order
insignificant - Attribute values must be quoted
- One root all element tags properly nested
- Parsed element cannot contain recursive reference
to itself - Valid if structure conforms to a DTD or Schema
- DTD defines grammar for XML document
- Subset can be internal or external
31XML Names and Entity References
- XML Names
- can only contain alphanumeric characters (also
non-english, such as ä, ç etc.), _ Underscore, -
Hyphen, . Period - have to start with letter or underscore
- are case-sensitive
- Predefined entity references cannot occur within
element text content and have to be replaced - lt replaces lt (less-than sign)
- gt replaces gt (greater-than sign)
- amp replaces (ampersand)
- quot replaces '' (double quote)
- apos replaces ' (single quote)
32XML Document Example
- lt?xml version"1.0" encoding"UTF-8"?gt
- lttag_namegt ? root element
- lttag_name2 attribute"female"gt
- ltnamegt
- ltemp_fnamegtFranlt/emp_fnamegt ? text
content - ltemp_lnamegtWhitneylt/emp_lnamegt
- lt/namegt
- ltempty_elementgtlt/empty_elementgt ? empty
element - ltanother_empty_element/gt ? alternative
notation - lt/tag_name2gt
- lt/tag_namegt
33XML Parsing
- DOM Parser
- DOM provides API access to XML tree model
- Useful if manipulating or re-traversing the
document - SAX Parser
- Event-driven
- Useful if extracting data once in single
traversal - Core Interfaces Specified by W3C
- Extensions denoted by DOM Level 2, DOM Level 3
34DataWindow Export/Import Template
- Defines the mapping between values from a
DataWindow and locations in an external document
format, like XML - References can be
- DataWindow control values (text)
- Text control
- Column
- Computed column
- Computed field
- Nested report
- DataWindow Expressions (evaluated at runtime)
- Data source column
35DataWindow Export/Import Template
- References in Template are specific to a DW
namespace - Template persists within DW definition in PBL
SRD as a dependent object - Multiple Templates may be defined saved for a
DW - Each Template must be uniquely named within a DW
namespace - A Template is applied by name in the DW Painter
or at runtime with the new DW property
UseTemplate - Templates are used for DW data export, data
import, or both
36Methods to Export XML Data
- DataWindow Painter
- FileSave Rows As menu item
- Save as type XML
37Methods to Export XML Data
- SaveAs method
- integer dwcontrol.SaveAs ( string filename,
- saveastype saveastype,
- boolean colheading )
- SaveAsType
38DataWindow Properties in PowerScript
- Data.XML
- String containing DataWindow data exported in
XML. - PowerBuilder dot notation
- dw_control.Object.DataWindow.Data.XML
- Describe argument
- DataWindow.Data.XML
39DataWindow Properties in PowerScript
- Data.XMLSchema
- String containing XML Schema generated from
Template. - PowerBuilder dot notation
- dw_control.Object.DataWindow.Data.XMLSchema
- Describe argument
- DataWindow.Data.XMLSchema
40DataWindow Properties in PowerScript
- Data.XMLDTD
- String containing DTD generated from Template.
- PowerBuilder dot notation
- dw_control.Object.DataWindow.Data.XMLDTD
- Describe argument
- DataWindow.Data.XMLDTD
41Importing XML Data into DataWindow
- Analogous to XML export
- DataWindow Import methods enhanced
- XML Default Import (No XML Template is assigned)
- Assumes coincident column data in XML document
- XML Template Import
- Piggybacks off same XML Template as for export to
interpret logical structure and DataWindow
mapping of XML document to import - Internally uses SAX parser for performance
42DataWindow XML Default Import
- Import without Import.XML.UseTemplate specified
- XML document data (element text content) has to
correspond to DataWindow column definition - XML element text content is imported in order of
occurrence within XML document - Element tag names and all other content of the
XML document are ignored - XML nesting within the document is disregarded
43Empty Elements in XML Default Import
- Empty elements are assumed to be empty values and
imported as such into the DataWindow column - An element that contains only space, carriage
return, new line or tab characters is treated as
an empty element - An element that contains no text content, but any
other content, e.g. a child element or comment,
is not parsed as an element, empty or otherwise,
and will be skipped for import
44Example XML Default Import
- XML Document
- lt?xml version"1.0" encoding"UTF-8"?gt
- ltemployee_listgt
- ltemployee dept_id"100"gt
- ltemp_idgt102lt/emp_idgt
- ltmanagergtlt/managergt ? empty element
- ltnamegt
- ltemp_fnamegtFranlt/emp_fnamegt
- ltemp_lnamegtWhitneylt/emp_lnamegt
- lt/namegt
- lt/employeegt
- lt/employee_listgt
- Column Import into DataWindow
- Column 1 Column 2 Column 3 Column 4
- 102 Fran Whitney
45Advantages of an XML Import Template
- XML document structure doesnt have to match
DataWindow columns - Order of elements within XML doesnt have to
reflect DataWindow column order - Attribute values can be imported
46DataWindow XML Import Template
- Import Template needs to be created in DataWindow
painter XML Template View - Template for export may be reused for import
- Import.XML.UseTemplate property needs to be
setin DataWindow painter or programmatically
47XML Import Template
- Defines mappings between XML element and
attribute names of the XML document and
DataWindow column names - Reflects nesting level where element and/or
attribute import items can be located within the
XML document
48XML Import Template
- If Starts Detail marker exists, element and
attribute contents above this marker line are
ignored
49XML Import Template
- If Starts Detail marker does not exist, all
element and attribute mappings within the
template are used for import - Other information within the Template (controls,
comments, etc.) is ignored
50PowerScript XML Parsing/Validation
- Parsing/validation of XML document in PowerScript
- can determine whether XML document is wellformed
- complies to W3C XML specification
- can determine whether XML document is valid
- also matches a given grammar (DTD or XMLSchema)
- uses Apache Xerces SAX http//xml.apache.org/xerc
es-c/index.html - needs PBXerces90.dll and Xerces-C_1_5_1.dll in
the path
51XML Parsing/Validation Functions
- New PowerScript system functions
- XMLParseFile
- long XMLParseFile(string xmlfilename
,valscheme validationscheme ,string
parsingerrors ,boolean namespaceprocessing
,boolean schemaprocessing ,boolean
schemafullchecking ) -
- XMLParseString
- long XMLParseString(string xmlstring
,valscheme validationscheme ,string
parsingerrors ,boolean namespaceprocessing
,boolean schemaprocessing ,boolean
schemafullchecking )
52Validation Scheme
- ValScheme new PowerBuilder enumerated value
- ValNever!
- Only check for wellformedness
- ValAlways!
- Validate the XML document. If no DTD or
XMLSchema exists the parse check will give an
error - ValAuto!
- If DTD or XMLSchema exists validate the XML
document, otherwise check for wellformedness only - Example, checking XML file for wellformedness
only - XMLParseFile(c\temp\mydoc.xml, ValNever!)
53Suppressing Error Messages
- To suppress the error message box when the parser
detects errors supply the optional argument
string parsingerrors - Example
- long ll_ret
- string ls_err
- ll_ret XMLParseFile(c\temp\mydoc.xml,
ls_err) - If ll_ret ltgt 0 then
- // do something, XMLParseFile returned error
- End if
54More Parsing/Validation Examples
- If external XMLSchema is referenced the document
will be validated, otherwise the parser will
check for wellformedness - XMLParseFile(c\temp\mydoc.xml, TRUE, TRUE)
- Parses XML document string, validates against a
referenced XMLSchema (has to exist), saves any
possible errors in a string variable (suppresses
message boxes on error) - XMLParseString(s_myXMLstring, ValAlways!, ls_err,
TRUE, TRUE) - Parses XML document, validates against a
referenced XMLSchema (has to exist) also parses
Schema itself for additional errors - XMLParseFile(c\temp\mydoc.xml, ValAlways!,
TRUE - TRUE,TRUE)
55XML DataWindow
- Seeing the Technology in Action
56XML Services
- Manipulating XML in PowerBuilder with PBDOM
57PBDOM Overview
- With no native XML support, existing PB apps that
need to process XML would use third party parsers
like MSXML - This required the use of OLEObjects
- This raises the problem of platform issues. (e.g.
MSXML is only supported in Wintel platforms)
58PBDOM Overview
- PBDOM is supported in Wintel as well as Unix
platforms - Parsers like MSXML primarily expose the low-level
W3C DOM APIs which are hard to learn and master - PBDOM presents a much higher-level set of
functions than MSXML, which incurs a shorter
learning curve and provides a much greater level
of productivity
59PBDOM Overview
- PBDOM lays out a standard set of PowerBuilder
objects with properties and functionalities that
allow for XML document navigation and content
manipulation - It does this by presenting a view of the contents
of an XML document as an interconnected
collection of objects which can be searched for,
read, modified, appended to and deleted from a
document
60PBDOM Overview
- When PBDOM is used to manage an XML document, the
first thing it does is parse the document and
break it down into individual objects that
represent the elements, attributes, comments,
etc. as found in the document
61PBDOM Overview
- As it parses the document, PBDOM analyzes and
maintains the innate relationships between the
objects in the document - In other words, the PBDOM models the items of an
XML document as a logical structure of objects
that resembles a tree
62XML Services
- Seeing the Technology in Action
63PBNI
- Using the PowerBuilder Native Interface to Extend
Your Applications
64Definition
- PBNI, the PowerBuilder Native Interface, is a
standard interface for writing PB extensions,
including PB non-visual extension, PB visual
extensions, and PB marshaler extensions, and for
embedding the PBVM into external C applications.
65Extending PowerScript
- PowerBuilder can call external C functions from
PowerScript - But there are some limitations with external
functions - It is not possible to declare an external
function that requires a callback function. E.g.
BOOL EnumWindows(WNDENUMPROC lpEnumFunc, LPARAM
lParam) - Some C data types cannot be mapped to PB data
types, such as double - An external function cannot callback into the
PBVM. - Using external functions is not object-oriented
66PBNI is a better solution
- To solve these limitations, PBNI has been
implemented in PB90 - Using PBNI, you get the following benefits
- The data passed between PowerScript and PB
extensions are in PBs native data types - PB extensions can callback into the PBVM to
perform various jobs, such as creating an object,
invoking a PowerScript function, triggering an
event, accessing a variable, accessing an array
item, and so on - Once the PBD file representing a PB extension is
included in a PB target, the classes implemented
by the PB extension can be used just like normal
NVOs or custom user objects
67PBNI makes the PB runtime open
- External C applications and PB extensions talk
to the PBVM through pre-defined interfaces
IPB_VM, IPB_Session, IPB_NonVisualObject, etc.
68What can be done with PBNI?
- With PBNI, you can
- Write PB non-visual extensions and use them in PB
just as normal NVOs - Write PB visual extensions and use them just as
custom user objects - Write PB marshaler extensions to call external
components and use them in PB just like what you
do with EAServer-deployed components - Embed the PBVM in external C applications to
call PowerScript functions
69Generating the PBD file
- Run pbx2pbd90.exe in Command console
- Example
- Pbx2pbd90 simplext.pbd simplext.dll
- What Happens?
- pbx2pbd90.exe loads the simplext.dll
- calls the PBX_GetDescription() function
- parses the description and generates a PBD file
holding the class definition for the simpleExt
class
70Using a PB extension
- Add the PBD file in the library list of the PB
target - Put the DLL file in the directory that is in the
PATH - Use the native class as a normal NVO or custom
user object
71Embedding the PBVM
- With PBNI, it is possible to embed the PBVM in an
external C application in order to call
PowerScript functions to perform certain jobs,
e.g. showing a DataWindow, updating a database,
or printing a DataStore - Through JNI (Java Native Interface) and PBNI, a
Java application can call PowerScript functions
72Tools
- pbx2pbd90.exe - generates a PBD file for the DLL.
- pbsig90.exe obtains function signature of PB
functions. - ejb2PB90.exe creates proxies for EJB.
- Visual C Wizard creates a base extension
project.
73PBNI
- Seeing the Technology in Action
74EJB Clients
- Accessing Enterprise Java Beans from a
PowerBuilder Client
75Definitions Enterprise Java
- EJB -- Enterprise JavaBeans
- Stateful Session Beans
- Stateless Session Beans
- Entity Beans
- Message-driven Beans
- JNDI -- Java Naming and Directory Interface
- JTS -- Java Transaction Service
- JDBC -- Java Database Connectivity
- RMI -- Remote Method Invocation
76Definitions - EJB Proxy
- EJB Proxy In PowerBuilder 9
- A PB object to represent the remote EJB Interface
and local Java class - It includes
- All public functions exposed by EJB
interfacelocal Java class and their signature - Exceptions that Java method throws
- Java class name that PB proxy represents as
instance property
77J2EE Example
J2EE Server
EJB Container
Home Interface
Home Object
Enterprise Information System
Client
bean
Remote Interface
Services Provided by Server to bean
Naming Transactions Security .
78Home Interface
- Provides remote client-view of methods affecting
the EJB lifecycle - Extends javax.ejb.EJBHome
- With EJB 2.0, can include business methods that
are not specific to a given EJB instance - No home interface for message-driven beans since
they have no client-view
79Remote Interface
- Provides remote client-side view of beans
business methods - Extends javax.ejb.EJBObject thus providing
methods to obtain access to Home interface and
Primary Key classes and to test for equality
between EJB instances - No remote interface for message-driven beans
since they have no client-view
80Local Interfaces
- Interfaces (home and component) used by clients
within the same Java Virtual Machine (VM) as the
EJB - javax.ejb.EJBLocalHome
- javax.ejb.EJBLocalObject
- Benefits lie in faster access and the less
complex programming possible due to lack of a
network layer -
- Primary drawback is the tight-coupling of the
client to the component thus eliminating location
independence and reducing options for
redistribution
81Implementation class
- Implements one of the extensions of the
javax.ejb.EnterpriseBean class which provide
lifecycle notification methods (e.g.,
ejbPassivate) - javax.ejb.EntityBean
- javax.ejb.SessionBean
- javax.ejb.MessageDrivenBean
- Class in which EJB developer codes the business
methods defined in the beans component
interface(s)
82Take advantage of PB EJB Client
- EJB Client makes PowerBuilder glue with any
application server - J2EE compliant - Development cycle with EJB client is much shorter
than using Java(short time-to-market) - Reuse the source code written in PB and attach
the PB strong power in manipulating DB
83Overview of EJB Client Implementation
- EJB Client PowerBuilder Native Interface(PBNI)
implementation - PowerBuilder Java VM Service
- Creates and manages a Java Virtual Machine(VM)
within its own process space and communicate with
Java objects - PowerBuilder proxy Objects
84EJB Client PBNI implementation
- EJB Client provides a bridge from PowerBuilder
into EJB
EJB Client PBEJBCLIENT90.DLL PBEJBCLIENT90.PBD PB
EJBCLIENT90.JAR
Java VM
PowerBuilder VM
JNI
PBNI
EJB
NVO
Java Object
NVO
JNI (Java native interface) http//java.sun.com/j
2se/1.4/docs/guide/jni/
85EJB Client Workflow
86EJB Client PBNI Classes
- JavaVM
- load or attach to a Java VM
- work with Java interface and class hierarchies
- EJBConnection
- connect to the J2EE server
- locate EJB via JNDI
- instantiate other Java classes
- EJBTransaction
- Manage the transaction (from the client)
87EJBLocator Java class
- PBEJBCLIENT90.JAR contains the com.sybase.powerbui
lder.ejb.EJBLocator class - It is used by the EJBConnection object to operate
on an instance of the javax.naming.InitialContext - PowerBuilder JVM Service automatically loads this
JAR file into the CLASSPATH of the Java VM
88JVM Service in PB IDE
- Sun JDK 1.4 is installed within
shared/PowerBuilder directory by PowerBuilder as
default - Modify this default setting using JDK Location
dialog - It is accessible from the Java tab of the Systems
Options Dialog access from PowerBuilders Tools
Menu, click the Set JDK Location button
89EJB Proxy Object
- EJB proxy object is a way to delegate requests to
and from the underlying Java classes - Each EJB proxy is inherited from nonvisualobject
or exception class like other PowerBuilder
proxies - To avoid conflicts with PowerBuilder reserved
words, proxy name is set a prefix java_ - Proxy includes all of the public methods defined
on its associated Java class - Method name adds a suffix _j if name conflicts
with PowerBuilder reserved words
90Generates EJB proxies
- PowerBuilder provides two methods to generate
proxy object - Within the development environment
- A standalone command-line application
- Relies on the Javap utility provided with the
JDK. - Fully qualified name of an EJBs remote interface
is required as parameter - Assumes that the home interface has the same name
followed by Home - An additional PB structure is generated as well,
that records the correspondence of the original
Java class to the resulting proxy object name
91Command-line utility -- EJB2PB
- The command-line utility(ejb2pb90.exe) is used to
generate proxies into multiple source(.srx) - The syntax for this command is
- ejb2pb90 -classpath pathlist EJBName
prefix - In addition to the proxy source files
- ejbproxies.txt -- listing the .srx files produced
- ejbproxies.err -- containing the diagnostic
message in the event an error occurs while the
proxies are generated - EJBName_ejb_pb_mapping.srs -- the mapping
structure
92Deploy EJB Client Application
- Need to package the following components
File Type
File List
Core PowerBuilder files
PBVM90.DLL,PBDWE90.DLL,LIBJSYBHEAP.DLL...
PowerBuilder EJB PBNI extension file
PBEJBCLIENT90.DLL,PBEJBCLIENT90.PBD, PBEJBCLIENT90
.JAR
JVM Service file
PBJVM90.DLL
JRE
Depends on the targeted EJB server
Vendor-specific client classes
e.g. WebLogic Server weblogic.jar
,weblogic_sp.jar
Stub classes for EJB
Including home and remote interface, other stub
classes
93EJB Clients
- Seeing the Technology in Action
94Break Time!
95Web Services and .Net
- Creating and Consuming Web Services with
PowerBuilder 9.0
96Web Services
- Web Services allow applications written in
different programming languages to communicate
with each other - Web Services are
- Platform independent
- Language independent
- Based on XML
97Introduction to Web Service Client
Client Side
Server Side
1. Create Server Side components 2. Wrap to
WS 3. Generate WSDL 4. Publish
5. Create WS proxy from WSDL 6. Use proxy to
invoke Web Services
3
WSDL Files
PowerScript
4
NVO or Other components
5
2
1
6
Invoke
Web service Proxy
Web service Stub
Data
98Web Services Support
- High level process
- Create web service proxy
- Import SOAP connection class
- Use SOAP connection and proxy in PowerScript
99PB Web Service Client Internals
PB 9
Info
Web Service Wizard
- Web Service Wizard
- Collect information such as the location of WSDL,
service, ports, etc. - Proxy Generator
- Create WS proxy based on the information above
- Universal SOAP Client
- Instantiate WS proxy, communicate to WS server
- Error Handling
- Capture exception/error
Generator Data Store
WSDL file
Proxy Generator
PB Proxy
PowerScript
Universal Soap Client
Proxy Instance
Exception Processor
100Web Services Support
- PowerBuilder 9.0 supports access to web services
using SOAP through HTTP - Allows developers to integrate web services into
PowerBuilder applications quickly - Hides much of the complexity of
- WSDL
- XML grammar
- SOAP development
101Standards Used In PB Web Service Client
- Standards supported in PB 9
- XML Schema 1.1
- WSDL 1.1
- SOAP 1.1 over HTTP
102Web Services and .Net
- Seeing the Technology in Action
103PowerBuilder 9.0 Enhancements
- SaveAs(PDF!)
- Debugger Enhancements
- Version Control Enhancements
104SaveAs(PDF!)
- Generating PDF Files From Your DataWindows
105Methods to Export PDF
- DataWindow Painter
- FileSave Rows As menu item
- Save as type PDF
106Methods to Export PDF
- SaveAs method
- integer dwcontrol.SaveAs ( string filename,
- saveastype saveastype,
- boolean colheading )
- SaveAsType
107SaveAs(PDF!)
108Debugger Enhancements
- Improving the Debugging Experience
109Debugger Enhancements
- TipWatch for Context Variable or Expression in
Debugger Source View - QuickWatch for Context Variable or Expression in
Debugger Source View - Predefined shortcut keys for some debugger menu
items.
110TipWatch
- TipWatch for Context Variable or Expression
- During debugging and script execution when
stopping at a breakpoint - Place mouse pointer over a variable string or
selected text as watch variable or expression in
debugger source view - A tip window will automatically popup to show
the current value of variable or expression - Watch string comes from the context variable or
expression in source view - Value of watch is shown in a popup window
111Examples for TipWatch
- TipWatch for simple type expression(Format exp
value)
112QuickWatch
- Select Debug\QuickWatch menu item or QuickWatch
popup menu - QuickWatch Dialog with QuickWatch View pops up
and shows the detail current information of the
watch variable or expression - Change the variable or expression
113Examples for QuickWatch
I
114Examples for QuickWatch
- QuickWatch for datawindow object properties
Type any dw dot notation string in exp editbox
and reevaluate it to get the dw data or obj
properties
115Examples for QuickWatch
- QuickWatch for datawindow object properties
116Examples for QuickWatch
Double click the variable item or select the item
and click Change Value Button to modify the
item value
117Predefined shortcut keys for some debugger menu
items
- Predefined shortcut keys are added for menu items
- Use mouse to watch the variable value and use
predefined shortcut keys to control script
execution
118Predefined shortcut keys for some debugger menu
items
119Version Control Enhancements
- Source Code Control and PowerBuilder 9.0
120Goals for SCC features in PB 9
- Automated target refresh
- Improve performance of status queries
- Improve detection of out of sync objects
- Closer integration with SCC providers
- User enhancement requests
121Automated target refresh
- ORCA / SCC integration (new)
- Batch build procedure with no operation
intervention - Rebuild PBLs from scratch
- Refresh PBLs
- Do not overwrite checked out objects
- Refresh from a previous version label or view
- OrcaScript utility (new)
- Scripting language for ORCA API
122OrcaScript example - Create PBDs and Executable
Start session Set liblist .\qadbtest\qadbtest.pbl
.\shared_obj\shared_obj.pbl.\chgreqs\chgreq
s.pbl.\datatypes\datatype.pbl Set application
.\qadbtest\qadbtest.pbl qadbtest build
library .\shared_obj\shared_obj.pbl ""
pbd build library .\datatypes\datatype.pbl ""
pbd build library .\chgreqs\chgreqs.pbl ""
pbd build executable .\qadbtest\qadbtest.exe
".\emp.ico" ".\qadbtest.pbr" "nyyy" End session
123Orcascript Example Summary
- No SCC connection required. Set library list and
current application via standard ORCA APIs - Builds PBDs for three support libraries in the
application. No .PBR file associated with these
PBDs - Build Pcode executable qadbtest\qadbtest.exe
- Emp.ico will be icon associated with the exe
- Qadbtest.pbr is the resource file for the exe
- nyyy means that objects from the first PBL in
the library list must be included in the exe.
Objects from the last three libraries in the
library list are PBDs, so do not include these
objects into the exe.
124User Enhancement Requests
- Support Reload Feature in SccHistory and
SccProperties - Resizable checkview dialog
- All SCC operations accessible from system view
context menus - Prompt user not to clobber checked out objects on
target-wide GetLatestVersion request - Require additional confirmation before removing
objects from source control - Suppress prompt to overwrite read-only files in
local project path
125Beyond PowerBuilder 9.0
- What else has Sybase been up to?
126Pocket PowerBuilder
- Developing Applications for Pocket PC Devices
127Objective
- Extend the PB Enterprise to WinCE devices
- Pocket PowerBuilder is supported on Windows 2000
and Windows XP - Target devices are PocketPC and HPC Professional
- Target operating system WinCE 3.0 or later
- Supported processors ARM and Xscale
- No Pocket PowerBuilder runtime licenses
- Develop using the same PowerBuilder IDE format
- Deploy to desktop, device or emulator
128Windows and Controls
- Controls are similar to desktop
- Checkbox
- Radiobutton
- Listbox
- Pushbutton
- Etc
- No mouse, no cursors
- Usually the only available cursor is the
wait-cursor
129Database Synchronization
- MobiLink
- ASA Databases
- The DBMLSYNC application on the device manages
the synchronization of data between the desktop
and the device - Use Sybase Central to define the synchronization
operation
130Debugging
- Desktop application
- Deploy to the desktop and use the PB Debug
interface. This could be done using PowerBuilder
or Pocket PowerBuilder - This should cover most of the application
problems, except perhaps for the database access - PPC Emulator for quick preview
- Use the emulator for instant device testing
- Always test on the real device (devices) before
shipping the application
131First Release of Pocket PowerBuilder
- Compatibility with PowerBuilder
- PowerBuilder Objects can be imported into Pocket
PowerBuilder - Pocket PowerBuilder objects can be imported into
PowerBuilder - A subset of PowerBuilder objects and methods
- No RichText Control
- No OLE
- Etc.
132Post Pocket PowerBuilder 1.0 Possible
Enhancements
- XML Support for DataWindows and PowerScript
- More Database Support
- IR Support
- Wireless Support
- .Net
133Pocket PowerBuilder
- Seeing the Technology in Action
134Complimentary Technology
- Every thing works better when every thing works
together
135Sybase ManageAnyhwere
- Take Control of Your Application Deployment
Process
136Manage Anywhere Studio
Central management of software and
hardware. Solution optimized for mobile, remote,
and distributed systems.
- Inventory and asset management
- Automated central software distribution
- Secure application and system configuration
- Live Support remote control
137Manage Anywhere Studio
- Inventory and asset management
- Build complete reports of software and
device-level hardware inventory - Software license metering/tracking
- Customizable inventory, custom fields
- Determine installation and version of deployed
PowerBuilder applications
138Manage Anywhere Studio
- Automated central software distribution
- Including file distribution and collection
- Centralized task scheduling and task management
- Remote command execution with built-in scripting
tool and package editor - Schedule deployment/upgrade of PowerBuilder or
Pocket PowerBuilder applications at any time - Automatically perform backup before upgrade
- Automatically remove old application and replace
with new one - Program files (EXEs, DLLs, PBDs)
- Registry entries
- PowerBuilder runtime DLLs
- Update open files
139Manage Anywhere Studio
- Secure application and system configuration
- Application self-healing and repair
- State management
- Imaging
- Delta changes
- User-proof environment
- Self-healing configurations
- Configuration enforcement
- Protect system configurations such as VPN
settings or dialup networking settings - Safeguard deployed PB and Pocket PB application
files and settings in PCs and Pocket PCs
140Manage Anywhere Studio
- Live Support remote control
- Support mission-critical mobile environment
- Troubleshoot and establish real-time remote
control sessions with users - Provide training to end-users
- Remote control PCs and Pocket PCs
141Supported Platforms
- Manage Anywhere Studio Server
- Windows NT 4.0 Server SP 6a
- Windows 2000/XP Professional, Server, or Adv
Server - Manage Anywhere Studio Agent
- Windows 9x/Me/2000/XP
- Windows CE 3.0/Pocket PC 2002 and higher
- Palm OS 3.0 and higher
- Connectivity
- LAN, WLAN
- Dial-up
- Wireless
142For Further Information
- Visit the Manage Anywhere Web site at
http//www.ianywhere.com/manage_anywhere - Where you will find
- Evaluation software
- Datasheets
- Whitepapers
- Technical documents
- Upcoming events
143Sybase SQL Anywhere
- Industry Leading Small Footprint Database
144SQL Anywhere
PowerBuilder includes the industry-leading small
footprint, full-featured, easily embeddable SQL
Anywhere database
- Easy to use
- Excellent out-of-box performance
- Embeddable and secure
- Provides interoperability and openness
- SQL Anywhere is an enterprise-class database
that is ideal for mobile, workgroup, and embedded
environments.
145SQL Anywhere
- Ease of use for developers, administrators and
end-users - Installation under 10 minutes
- Ability to copy database file from one platform
to any other (Windows, Unix, Netware) - Sybase Central Graphical Administration tool
- Stored Procedure profiler
- Stored procedure debugger
- Graphical query plan displayer
- Server Monitoring console
- Excellent documentation!
146SQL Anywhere
- Excellent out-of-box performance
- Support for dynamic cache sizing
- Cost-based query optimizer automatically finds an
efficient method to access the data requested - Optimization statistics automatically maintained
- SMP support ideal for workgroup environments
- Sophisticated caching algorithm satisfies needs
for OLTP and DSS - Separate storage for long values
- LONG BINARY, LONG VARCHAR, TEXT, IMAGE
- Large cache support on Windows 2000/XP
- 3G 64G capability
147SQL Anywhere
- Easily embeddable
- Small footprint resource efficient
- Simple installation can be scripted to be
silent - Can be made transparent for end-user
- InstallShield templates provided
- Self-tuning and self-managing
- Secure
- Full end-to-end security to protect your data
- 128-bit strong encryption of database file (AES
algorithm) - 128-bit strong encryption of client-server and
synchronization communication streams (Certicom
TLS)
148SQL Anywhere
- Interoperability and openness
- Open API and tools support
- ODBC, OLE/DB / ADO / ADO.NET / JDBC
- ANSI SQL and Transact SQL
- Replication with enterprise systems
- Flexible and robust bi-directional
synchronization - Support for Sybase, Oracle, IBM DB2, Microsoft
SQL Server - Support for sub-setting and partitioning of data
- Scalable to thousands of remote users
- Conflict detection and resolution
- Robust error handling
- Migration wizard eases data migration
149For Further Information
- Visit the SQL Anywhere Web site at
- http//www.ianywhere.com/sqlanywhere
- Here you will find
- Evaluation software
- Datasheets
- Whitepapers
- Technical documents
- Upcoming events
- Next major release Banff
- Beta registration available at
- http//www.ianywhere.com/promos/banff/banff
150PowerDesigner and PowerBuilder
- Reverse Engineer and Generate PowerBuilder
Objects with PowerDesigner
151PowerBuilder Support in PowerDesigner 9.5.2
- PowerDesigner 9.5.2 will support PowerBuilder 6,
7, 8 and 9 - PowerDesigner will reverse engineer and generate
ALL PowerBuilder objectsRound Trip Engineering! - The following objects are reverse engineered and
generated as classes - Application, User Object, Structure, Function,
Window, Proxy - The other objects (menu, DataWindow, etc.) are
reverse engineered and generated as is
152PowerBuilder Support in PowerDesigner 9.5.2
- Support libraries (.pbl) and source files (.sr?)
- PowerBuilder tool palette for creating new
objects - Model verification
- Roundtrip engineer PowerBuilder extended
attributes in Physical Data Model
153Reverse Engineering PowerBuilder Application
- Select LanguagegtReverse Engineer PowerBuilder
- Select the Library or source mode
- Select the Target or application
- You can select or deselect the objects
154Example of a Class Diagram
- The class diagram shows packages, inheritances,
associations, dependencies, attributes,
operations - Each library will create a package
- A stereotype and a mini icon shows the type of
object
155Example of a Class Diagram(Continued)
- The dependencies show which menu or data window
is used by which window - Window, user object, application, structure,
function and proxy are represented as classes and
the code is regenerated from the class definition - Controls are represented by inner classes
156Other Objects
- DataWindow, menu, query, pipeline, binary object
are represented by a class and the class symbol
is replaced by an icon - The source code for these object types is stored
in the Header attribute in the Script tab
157Working on the Class Diagram
- Use a tool bar to create PowerBuilder objects
- Create, modify or delete PowerBuilder objects or
links - Preview PowerScript code before it is generated
back out to the PB libraries or source files. - Modify the PowerBuilder code in the code preview
window - Write specification in RTF format. You can use
Word to edit the description or annotation - Generate reports in HTML or RTF formats
158Working with Controls
- Controls within windows or within custom user
objects are represented as inner classes - To see the list of controls
- Open the properties of a window or CUO
- Select the Inner Classes tab
- Open the properties of an inner class
159Previewing the Generated Code and Modifying the
Code
- Open the properties of an object
- Select the Preview tab
- For window, user object, application, structure,
function and proxy, you can change the code in
the Preview window (add attributes, modify
operations, ) then the model will be updated to
reflect the changes
160Verifying the Model
- You can use ToolsgtCheck Model to verify if the
model is well defined - PowerBuilder specific checks have been added
161Generating the Application
- Select LanguagegtGenerate PowerBuilder Code
- In the Select tab, you can select or unselect
objects - In the Options tab, you can select the library or
source mode, a target or application
162The Business / Technical Benefits
- PowerDesigner offers UML Modeling to PowerBuilder
163The Business / Technical Benefits
- UML modeling offers the PowerBuilder Community
the power to - Understand legacy systems through visual modeling
- Ease integration and maintenance
- Migrate existing client-server applications to
N-tier/service oriented architectures - Easily lift business logic out of existing
applications - Insert Business Logic visually into objects
generated to PowerBuilder
164The Business / Technical Benefits
- Documentation of complex multi-tier applications
- For ongoing development and maintenance
- Makes projects and systems more agile in
responding to changes in - Business Requirements
- Business Models
165Future Direction
- PowerBuilder will be able to embed PowerDesigner
views inside PowerBuilder - PowerBuilder will be able to generate complete
code from PowerDesigner models using OLE
automation
166Sybase Developer Network presents CodeXchange
- www.codexchange.sybase.com
167Share PB 9.0 code tools
- New SDN feature enables community collaboration
- Download samples created by Sybase
- Leverage contributions of others to exploit PBNI
- (i.e. PBNI CommonDialog, PBNI OLEObject
utilities) - Contribute your own code or start your own
collaborative project with input from other
PowerBuilder experts - Any SDN member can participate
- Log in using your MySybase account via SDN
- Join the collaboration already underway
- http//powerbuilder.codexchange.sybase.com or
- via SDN at www.sybase.com/developer
168www.pb9books.com
169PB to the Web CBTswww.Branick-Inc.com
- Computer Based Training
- Camtasia-based lectures and demos
- Extremely detailed presentations, nothing is left
to the imagination - Based on real world applications
- Solid foundation for Web and Distributed
development - Learn how to design components
- Learn how to quickly debug components
- Courses
- PowerBuilder to the Web, 9 hours
- JSP for the PowerBuilder Developer, 2 hours
- Web DataWindows, 3 hours
170Question and Answer TimeJohn Strano
(stranoj_at_sybase.com)
171Prize Raffle
172(No Transcript)