ID 352 An XML / PowerBuilder Messaging System - PowerPoint PPT Presentation

About This Presentation
Title:

ID 352 An XML / PowerBuilder Messaging System

Description:

Not your Power Builder executable. Using SRVINSTW Step 4. PowerBuilder and NT Services ... Free downloads from Microsoft. Questions ... – PowerPoint PPT presentation

Number of Views:158
Avg rating:3.0/5.0
Slides: 70
Provided by: Sybas9
Category:

less

Transcript and Presenter's Notes

Title: ID 352 An XML / PowerBuilder Messaging System


1
ID 352An XML / PowerBuilder Messaging System
  • Paul Donohue
  • Technical Architect
  • JP Morgan (London)
  • techwave_at_pauldonohue.com

2
Overview
Topics we will cover
  • The AutoTrade System
  • Overview of XML
  • PowerBuilder and XML
  • PowerBuilder and NT Services
  • Summary
  • Questions

3
The AutoTrade System
4
The AutoTrade System
Bond trading in England was old fashioned
  • Deals were sent by phone or fax
  • Systems did not communicate
  • Data was entered many times
  • Delays were common

5
The AutoTrade System
Something had to be done
  • A multi-bank working group investigated possible
    solutions and chose IssueLink from a vendor
    called CapitalNET.
  • JP Morgan developed the AutoTrade suite of
    programs to interface with IssueLink.

6
The AutoTrade System
IssueLink is a B2B bond trading system
  • Browser based
  • Automates workflow
  • Interfaces with back office systems
  • XML messaging

7
The AutoTrade System
The participants
JP Morgan
Dealers
IssueLink
Clearing Systems
Other Banks
8
The AutoTrade System
The technology
AutoTrade (PB)
Browser or In-house
HTTP or XML
XML
IssueLink (C)
HTTP or XML
CNTrade (C)
Browser or In-house
XML
9
The AutoTrade System
There are four AutoTrade components
  • All developed with PowerBuilder
  • AutoTrade Server
  • AutoTrade Console
  • AutoTrade Administrator
  • AutoTrade Support

10
The AutoTrade System
What is AutoTrade Server?
  • An NT Service
  • Receives XML messages
  • Parses XML messages
  • Processes XML messages
  • Sends XML messages

11
The AutoTrade System
A success story
  • 6 weeks development
  • Runs 24 x 7
  • Processed 20,000,000,000 USD in 9 months
  • Quickest trade was 1 minute 8 seconds
  • 25 of trades in less than 15 minutes

12
Overview of XML
13
Overview of XML
What is XML?
  • XML Extensible Markup Language
  • Uses tags like in HTML
  • A format for describing structured data
  • Describes data structure and content
  • Separates data from its presentation

14
Overview of XML
Why use XML?
  • Industry standard
  • Platform vendor independent
  • Self describing
  • Flexible
  • Caters for nested repeating data

15
Overview of XML
An example
  • lt?xml version"1.0"?gt
  • lt!--Example XML file--gt
  • ltpresentation code"ID352"gt
  • lttitlegtA PB / XML Messaging Systemlt/titlegt
  • ltpresentergtPaul Donohuelt/presentergt
  • ltaudiencegtPowerBuilder Developerslt/audiencegt
  • lttimegt1330lt/timegt
  • ltdategt2001-08-13lt/dategt
  • lt/presentationgt

16
Overview of XML
Parts of an XML document
  • XML Declaration

lt?xml version"1.0"?gt lt!DOCTYPE presentation
SYSTEM DEMO.DTD"gt lt!--Example XML
file--gt ltpresentation code"ID352" gt lttitlegtA PB
/ XML Messaging Systemlt/titlegt ltpresentergtPaul
Donohuelt/presentergt ltaudiencegtPowerBuilder
Developerslt/audiencegt lttimegt1330lt/timegt ltdategt200
1-08-13lt/dategt lt/presentationgt
  • Prolog
  • Elements
  • Attributes
  • Comments
  • Other Parts

17
Overview of XML
Valid and well formed
  • Document Type Definitions (DTDs) define rules
    about XML data
  • DTDs are optional
  • Well formed XML follows the basic rules of XML
  • Valid XML follows the rules of the DTD
  • Get your DTD correct before you code

18
Overview of XML
SAX vs DOM
  • Two XML interfaces
  • DOM Document Object Model
  • SAX Simple API for XML
  • AutoTrade uses DOM

19
Overview of XML
Demonstration
20
PowerBuilder and XML
21
PowerBuilder and XML
Why use PowerBuilder?
  • Why not?
  • PB can access OLE objects
  • PB is good at data manipulation
  • PB is good at database access

22
PowerBuilder and XML
The Microsoft Redistributable XML Parser
  • There are many XML parsers
  • Internet Explorer includes a parser
  • An OLE object
  • Can be distributed royalty free
  • Current version is 3
  • Easy to use

23
PowerBuilder and XML
How to parse an XML file
  • Connect to the parser
  • Load the XML file
  • Walk the tree
  • Process the results
  • Disconnect

24
PowerBuilder and XML
Parsing XML - Connecting
  • Declare an OLE object variable
    oleobject iole_xml
  • Connect to the XML parser
    iole_xml .ConnectToNewObject("Microsoft
    .XMLDOM")
  • Set parser attributes
    iole_xml.async
    FALSE iole_xml.validateOnParse TRUE
    iole_xml.preserveWhiteSpace FALSE

25
PowerBuilder and XML
Parsing XML - Loading
  • Load the XML file
    iole_xml.load(filename)
  • Any errors will be in the parseerror property
    iole_xml.parseerror
    .errorCode iole_xml.parseerror.reason
    iole_xml.parseerror.filepos iole_xml.parseerror.li
    ne iole_xml.parseerror.linepos iole_xml.parseerror
    .srcText

26
PowerBuilder and XML
Parsing XML - Walking
  • Find the root element
    lole_root iole_xml.documentElement
  • Use a recursive function to walk the tree
  • Arguments for the function are
  • The node to process (start with the root)
  • This nodes level (start with 1)
  • A stack to hold node details

27
PowerBuilder and XML
Parsing XML - Walking (in circles)
  • Find the nodes name, type and value
    ls_node_name aole_node.nodename
    ls_node_type aole_node.nodetypestring
    ls_node_value String(aole_node.nodevalue)
  • Add this nodes details to the stack
    ll_max_nodes UpperBound(ai_level) 1
    ai_xml_node_levelll_max_nodes ai_node_level
    as_xml_node_namell_max_nodes ls_node_name
    as_xml_node_typell_max_nodes ls_node_type
    as_xml_node_valuell_max_nodes ls_node_value

28
PowerBuilder and XML
Parsing XML - Walking (in circles)
  • Process this nodes attributes
  • ll_max_nodes 0
  • lole_node_list aole_node.attributes
  • IF IsValid(lole_node_list) THEN
  • ll_max_nodes lole_node_list.length
  • END IF
  • FOR ll_idx 0 TO ll_max_nodes 1
  • lole_node lole_node_list.Item(ll_idx)
  • of_process_node (ai_level 1, lole_node,
    stack)
  • NEXT

29
PowerBuilder and XML
Parsing XML - Walking (in circles)
  • Repeat the recursion for the child elements
    lole_node_list
    aole_node.childNodes
  • There is a hasChildNodes property
    lb_any_children aole_node.hasChildNodes
  • But there is no hasAttributeNodes property

30
PowerBuilder and XML
Parsing XML - Processing
  • After parsing the XML data can be processed
  • Examples
  • Update the database
  • Call a business rule object
  • Write to a file
  • Send an email

31
PowerBuilder and XML
Parsing XML - Disconnecting
  • Disconnect from the XML parser
    iole_xml.DisConnectObject()
  • Destroy the OLE object variable
    DESTROY iole_xml

32
PowerBuilder and XML
The XML DOM tree
Presentation
Code (ID352)
text (ID352)
comment (Example XML file)
Title (NULL)
text (A PB/XML Messaging System)
Presenter (NULL)
text (Paul Donohue)
33
PowerBuilder and XML
Handy hints
  • Record macros
  • Generating XML files

34
PowerBuilder and XML
Demonstration
35
PowerBuilder and NT Services
36
PowerBuilder and NT Services
Why use PowerBuilder?
  • Why not?
  • PB can generate an EXE
  • PB is fairly reliable

37
PowerBuilder and NT Services
How to write an NT service
  • Create a timer object
  • Use the NT event log
  • Run the EXE as a service

38
PowerBuilder and NT Services
Creating the timer object
  • Standard class inherited from timing
  • Add a function to initialise the service
  • Add a function to finalise the service
  • Add code to the timer event

39
PowerBuilder and NT Services
The initialise function
  • Open an invisible window
    Open (w_service)
    ll_app_handle Handle(xml_service)
    IF ll_app_handle 0 THEN
    w_service.Visible True
    END IF
  • Record the start in the NT event log
  • Start the timer running
    This.Start(5)

40
PowerBuilder and NT Services
The finalise function
  • Perform any housekeeping
  • Record the stop in the NT event log

41
PowerBuilder and NT Services
The timer event
  • Stop the timer
    This.Stop()
  • Perform one cycle of work
    This.of_process_a_cycle()
  • Force garbage collection
    GarbageCollect()
  • Restart the timer
    This.Start(5)

42
PowerBuilder and NT Services
A cycle of work
  • A discrete unit of work
  • Should be stateless
  • For an XML messaging service this might be
  • Check for incoming XML files
  • Parse the XML files
  • Process the XML
  • Generate any outgoing XML files

43
PowerBuilder and NT Services
A cycle of work
  • Services can not access network drives
  • Services can not interact with the user
  • Connect to database each cycle?
  • Maintain connection between cycles?

44
PowerBuilder and NT Services
The NT event log
  • Use Win32 API calls to write to the event log
  • RegisterEventSource() Retrieves a handle to the
    event log
  • ReportEvent() Writes an entry to the event log
  • DeregisterEventSource() Closes the event log
    handle

45
PowerBuilder and NT Services
The nasty event log warning
  • All messages are prefixed by a nasty warning
  • This is because we dont have a message file

46
PowerBuilder and NT Services
Message files
  • The wording of events is stored in message files
  • Each has a unique ID
  • Messages can have placeholders
  • Message files are compiled into DLLs
  • PowerBuilder cant create message file DLLs
  • Make a generic message file

47
PowerBuilder and NT Services
Using the timer object
  • Declare a global variable
    n_cst_service gnv_service
  • Instantiate the object in Application Open event
    gnv_service CREATE n_cst_service
    gnv_service.of_initialise()
  • Destroy the object in Application Close event
    gnv_service.of_finalise() DESTROY
    gnv_service

48
PowerBuilder and NT Services
Running as a service
  • Compile your application into an EXE.
  • Windows NT4 Resource Kit utilities
  • SRVANY run any EXE as an NT service
  • SRVINSTW install an NT service

49
PowerBuilder and NT Services
Using SRVINSTW Step 1
  • An easy to follow wizard interface

50
PowerBuilder and NT Services
Using SRVINSTW Step 2
  • Select local machine

51
PowerBuilder and NT Services
Using SRVINSTW Step 3
  • Give your service a name

52
PowerBuilder and NT Services
Using SRVINSTW Step 4
  • The executable is SRVANY.EXE
  • Not your Power Builder executable

53
PowerBuilder and NT Services
Using SRVINSTW Step 5
  • The service should be its own process

54
PowerBuilder and NT Services
Using SRVINSTW Step 6
  • The system account does not require a user id or
    password
  • SRVANY needs to interact with the desktop

55
PowerBuilder and NT Services
Using SRVINSTW Step 7
  • Set the startup option to automatic
  • NT will start the service when the machine boots
  • With no need for a user to log on

56
PowerBuilder and NT Services
Using SRVINSTW Step 8
  • Press Finish to create the service

57
PowerBuilder and NT Services
Configuring SRVANY
  • SRVINSTW will create an registry entry for your
    service under the key
    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services
  • Add two new keys called Parameters and Enum
    under your service

58
PowerBuilder and NT Services
Configuring SRVANY
  • Add three string values under the Parameters
    key
  • Application Your services path EXE
  • AppDirectory Your services working directory
  • AppParameters Any command line parameters
  • Do not add any values under the Enum key
  • These will be added when the service is first run

59
PowerBuilder and NT Services
Controlling your service
  • SRVANY uses TerminateProcess() to stop your EXE
  • No application or window Close events
  • Use a registry entry to request a shut down
  • Check the registry each cycle
  • Close the invisible window to stop your EXE

60
PowerBuilder and NT Services
Handy hints
  • Make your app bullet proof
  • Test for memory leaks
  • Reconnect lost database connections
  • Write an administration utility

61
PowerBuilder and NT Services
Demonstration
62
Summary
63
Summary
What have we learnt?
  • A little about XML
  • How XML can be used in a B2B system
  • How to process XML with PowerBuilder
  • How to write an NT Service with PowerBuilder

64
Summary
Recommended reading
Title Professional XML Author Mark Birbeck et
al Publisher Wrox Press Inc ISBN 1861003110
65
Summary
Recommended reading
Title Professional NT Services Author Kevin
Miller Publisher Wrox Press Inc ISBN 1861001304
66
Summary
XML resources on the internet
  • http//www.xml.com
  • http//www.xml.org
  • http//www.w3.org/xml
  • http//msdn.microsoft.com/xml/default.asp

67
Summary
Free downloads from Microsoft
  • The Microsoft Parser other tools
    http//msdn.microsoft.com/downloads
  • XML Notepad http//msdn.microsoft.com/xml/notepad/
    intro.asp
  • Windows NT4 Resource Kit utilities
    ftp//ftp.microsoft.com /bussys/winnt/winnt-public
    /reskit/nt40/i386/

68
Questions
  • If you have any questions about this presentation
    or you would like a copy of the PB objects please
    email me or visit my web site.
  • Email techwave_at_pauldonohue.com
  • Web http//www.pauldonohue.com/techwave

69
About The Author
Paul Donohue
  • Paul has 15 years experience as a solution
    provider.
  • He has worked with PowerBuilder since version 2
    and is a Certified PowerBuilder Developer.
  • He now concentrates on XML, Java, EJB, JSP and
    other distributed technologies.
Write a Comment
User Comments (0)
About PowerShow.com