Note: Descriptions are shown in the official language in which they were submitted.
CA 02376038 2002-03-07
DESCRIPTION
Graphical programming for XML Web Services
Contents
A. TECHNICAL FIELD
B. BACKGROUND INFORMATION AND PRIOR ART
C. LIST OF FIGURES
D. DETAILED DESCRIPTION OF THE INVENTION
E. EXAMPLE OF INTENDED USE
Description
CA 02376038 2002-03-07
A. TECHNICAL FIELD
The Internet is evolving. In its early stages providing static information to
the Web was a challenge. Then we were able to overcome and provide not
only interactive tools, but also integrate our systems with the Web. Now we
are facing the challenge of integrating our systems with other systems
across the Web, and respond quickly to changing needs. Web services
permits existing software to interoperate, communicate and integrate across
operating systems, networks, and software.
XML and SOAP
XML is eXtensible Markup Language and SOAP is Simple Object Access
Protocol. XML and SOAP are the technologies that enable systems to
communicate with each other, but as they're hidden in the background, you
really don't have to worry about it. XML is the standard for data encoding
just as ASCII is the standard for character encoding. XML is a method for
describing data and allows data to be viewed without the program that
produced it. Your software stays the same and is able to communicate with
different software across the Internet. SOAP enables a program running one
kind of operating system, such as Windows, to communicate with a program
running on another kind of operating system, such as Linux, by using the
World Wide Web's Hypertext Transfer Protocol (HTTP). SOAP describes how
to encode an HTTP header and an XML file so that a program in one
computer can call a program in another computer, and pass it information.
These two things are the basis for allowing the information on your
electronic calendar to be viewed and accessed by outside sources. Your
software is broken down into components and wrapped in XML, which
permits it to communicate with other software.
Description
CA 02376038 2002-03-07
XML Web Services
A Web service is the reusable software component based on the above
standard. It can be used like a building block to create complex applications
and tools. Web services provide businesses with flexibility and speed to
build applications by re-using components or purchasing new ones from Web
service providers. It saves time in the development cycle because you don't
have to build applications from scratch. It is the technology that not only
permits your software to integrate across systems, but gives you the
versatility to expand quickly as your needs change without having to spend
long costly hours rewriting your systems to do it.
ObjectView
ObjectView is a drag and drop development tool for accessing Web service
components and simplifying the process of creating complex tools and
applications. Further, its unique environment creates an object of the Web
service, essentially a picture, and by graphically connecting the objects
together, you can create complex applications without ever having to view
one line of code. It is freedom from the annoyance of acronyms and the
confusion of code.
Description 3
CA 02376038 2002-03-07
B. BACKGROUND INFORMATION AND PRIOR ART
The architecture of ObjectView attempts to combine the data flow and
control flow logic of Computer Aided Software Engineering (CASE) with the
complexities of the upcoming technologies such as XML, SOAP, WSDL, WSFL
and UDDI. The main aim is to hide the technology so that developers can
concentrate on the solution they are developing.
ObjectView takes the CASE paradigm one step further by providing an
infrastructure that tracks the development changes throughout the software
development lifecycle. This enables the Development Managers and the
Software Developers to work on the same scenario.
ObjectView functionality is unique and there are no alternatives available in
the market. There are only a handful of companies developing tools for Web
services; let alone provide a comprehensive graphical programming
environment.
The ObjectView architecture is based on object-oriented methodologies such
as:
Unified Modeling Language (UML),
~ Data flows,
~ Control flows,
~ Object Model,
~ Dynamic Model, and
~ Functional Model
Description 4
CA 02376038 2002-03-07
The traditional approach to software development is to build the entire
application from scratch. With the advent of reusable components and
object-oriented development this process was further refined. Several
Computer Aided Software Engineering (CASE) tools use these object-
oriented methodologies to automate software development. However, most
CASE tools fall short of supporting complete software lifecycles, since
reverse engineering a component is virtually impossible. In other words,
CASE tools are important earlier on during the requirements analysis.
However, as the development progresses, there is no way of maintaining
correlation between the source code and the CASE scenario.
The introduction of Web services opens a new chapter in web-application
development. Web services provide businesses with flexibility and speed to
build applications by re-using components. Finding Web services will soon be
as simple as looking up a number in a phone book. With the UDDI
(Universal Description, Discovery, and Integration) initiative rapidly on its
way, businesses will be able to register their Web services and allow others
to find them on the Internet. The registries contain WSDL (Web Services
Description Language) files, which describe the Web service and what it
does, so you can quickly find components that will suit your needs.
ObjectView in the Evolution: ObjectView extensively uses the above-
mentioned technologies in its RAD environment. The success of ObjectView's
architecture relies heavily on the Web service contract- WSDL. ObjectView
uses WSDL to provide one-step synchronization. As a Web service changes,
your scenario can be updated with a click of a button. There is no waiting for
the programmers to update code to reflect the changes in the Web services.
We believe this functionality is revolutionary and we expect over the next
few years, 70% of software programs to be developed using application
frameworks such as ObjectView.
Descriprion 5
i
CA 02376038 2002-03-07
c. DST~ of F=~uREs
Figure 1: Screenshot of ObjectView.
Figure 2: Representation of a Web service in ObjectView.
Figure 3: Loop Construct.
Figure 4: get and set data for Complex data types.
Figure 5: Using get and set objects with Web service objects.
Figure 6: Using Loop construct to iterate through an array.
Figure 7: Using setArray<DataType>
Figure 8: Linking data nodes to control nodes
Figure 9: Using If construct to set a condition on a link
Figure 10: Auto generation of XML/XSL files.
Figure 11: Case Study 1: Stocks Portfolio
Figure 12: Case Study 2: Data Synchronization between 2 Enterprises
Descriprion 6
CA 02376038 2002-03-07
D. DETAILED DESCRIPTION OF THE INVENTION
CONTENTS
Introduction
XML and SOAP
XML Web services
ObjectView
Importing Web Services
Using a WSDL address to import a Web service into a new project
Working with Web service components
Adding Objects to the Project Window
Representation of an Object
Object name
Output control node
Input control node
Input data node
Output data node
Run order
Web service indicator
Loop indicator
Working wig Object Data
Working with simple data types
Working with complex data types
Linking objects to create a flow
Linking different data types to create a data flow
Descriprion 7
CA 02376038 2002-03-07
Linking Objects
Creating data flows
Creating control flows
Linking objects to create a flow
Linking different data types to create a data flow
Run Order
Run order and data flow
Viewing the run order of a project
Positioning of objects and run order
Running and Viewing Results
Viewing the result of a single object
Viewing results in XML
If Construct
Creating an If construct
Loop Construct
Creating a Loop construct
Generating XML and XSL files
Creating an XSL file
Description 8
CA 02376038 2002-03-07
Introduction
XML Web services are reusable software components. ObjectViewT"' lets you
integrate Web service components into its unique drag and drop
environment. When a Web service is imported into ObjectView, the
components are represented as graphical objects, which can be used as
building blocks to create complex applications.
Complex applications are created by objects that have been linked together
to pertorm a series of functions. When an individual object or project is
executed, ObjectView generates a SOAP request, which is sent to the Web
server. The Web server processes the SOAP request and sends a SOAP
response back to ObjectView. ObjectView parses the SOAP response and
sets the correct value to object's output.
ObjectView is a fast, flexible and functional way to build customized
applications and tools that can interoperate, communicate, and integrate
across operating systems, networks, and software.
ObjectView provides the intelligence to simplify your solution:
1. Fast - import Web service components into the drag and drop
environment
2. Flexible - graphically connect objects together to create a data flow
scenario
3. Functional - run the scenario and view the result
Description 9
.. .~__..~..-..__..~_~_~ ...__._...~.._..____.T_....
CA 02376038 2002-03-07
Importing Web Services
Using a WSDL address to import a Web service into a new
project
In order to access and import a Web service you need to know the Web
service WSDL (Web Service Description Language) address. A WSDL address
is an URL that points to the location that describes the Web service and its
components.
Once a Web service has been imported into ObjectView it is automatically
added to the library for future use again.
Working with Web service components
All the Web services imported to your project are displayed on the tabs in
the component window at the bottom of your project window. Click the Web
service name tab to view all of its components.
The right side of the component window lists the Web service component
name, any inputs and outputs, the source, as well as any description. Once a
Web service component is added to the project window it is represented as a
graphical object.
Adding Objects to the Project Window
Click the Web service name tab at the bottom of the project window. Select
a Web service component and drag it into the project window. Once a Web
service component is added to the project window it is represented as a
graphical object.
Description 10
CA 02376038 2002-03-07
Working with objects
Objects are representations of Web service components. Once a component
has been added to the project window it is represented as a graphical object.
Each object has an object name, data input node, data output node, control
input node, control output node, and Web service indicator, as shown in
Figure 2.
Object name
Object name is the name of the Web service component.
Output control node
The top node on the right side of the object is the output control node and is
used to set the control flow or order of execution of the objects. An object
that is sending output to another object is executing first.
Input control node
The top node on the left side of the object is the input control node. An
object that is receiving input from another object is executing second.
Input data node
An object may contain multiple input data nodes. The number of input data
nodes depends on the definition of the component. By default the data type
and name is shown, and contains the data to be executed by the object.
A data node that is shaded gray contains default values for the object.
Description 11
CA 02376038 2002-03-07
Output data node
An object may contain multiple output data nodes. The number of output
data nodes depends on the definition of the component. By default the data
type and name is shown, and contains the results of the executed
component.
A data node that is shaded green contains executed result values for the
object.
Run order
The run order number displays the order of execution for each of the objects
in a project. The run order states which objects will execute in which order.
Each object functions on its own until linked to another object.
When two or more objects are linked together, the first object passes its
result to the next object to execute.
The order of execution can also be changed by connecting the output control
node of one object to the input control node of another object.
Web service indicator
An object marked with an asterisk (*) is an actual Web service component.
Only these components send and receive SOAP requests and responses. An
object marked with an exclamation point (d) is a local component. This
means that the component is used to create SOAP requests from simple data
types or to parse SOAP responses into simple data types. These components
are executed locally on your machine.
Loop indicator
An Object marked with a circle (O) in its header indicates that the object is
contained within a Loop construct, as shown in Figure 3.
Description _ 12
CA 02376038 2002-03-07
Working with Object Data
Once a Web service component is added to the project window it is
represented as a graphical object. Generally, each object has a minimum of
one input data node and one output data node.
An input data node contains the default value to be executed by the object.
An output data node contains the result of the executed object.
By linking the output node of one object to the input node of another object
you are instructing the project to execute an object's data and then pass the
result to the next object to execute. The runtime value overrides the default
value during execution. This is the data flow.
Generally, only data that is of similar type can be linked, such as strings to
strings (text to text) or floats to floats (numbers to numbers). You can force
a link between different data types, but this may result in odd behavior and
should only be done with caution.
Working with simple data types
By default Object View supports the following simple data types:
string: A string is a data type that is sequence of characters or text,
such as letters or numbers.
int (integer): The integer data type is a whole number that can be
either positive or negative.
For example: -1, 0, 12678967543233, +100000
float: The float data type is a number that may have decimals and be
positive or negative, but is limited to 108 or 32 bits.
For example: -1, 1267.43233, -12.78, 12
Descriprion 13
CA 02376038 2002-03-07
double: The double data type is a number that may have decimals and
be positive or negative, but is limited to 1064 or 64 bits.
For example: -1, 1267.43233, -12.78, 12
decimal: The decimal data type is a number that may be positive or
negative and represents a fraction by separating the number by a
period as a decimal indicator.
For example: -1.23, 12678967.543233, +100000.00, 210
duration: The duration data type represents a duration of time and is
ordered by year, month, day, hour, minute and second.
Format: PnYn MnDTnH nMnS
For example: To indicate a duration of 1 year, 2 months, 3 days, 10
hours, and 30 minutes, one would write: P1Y2M3DT10H30M
DateTime: The dateTime data type represents a specific instant of
time.
Format: CCYY-MM-DDThh:mm:ss
For example: 1999-05-31713:20:00-05:00
date: The date data type represents a calendar date.
Format: CCYY-MM-DD
For example: 1999-05-31
time: The time data type represents an instant of time that
recurs every day.
Format: hh:mm:ss.sss
For example: 13:20:00-05:00
Description 14
._.._.-.__._ . _.__._ . ... _,
CA 02376038 2002-03-07
Working with complex data types
In addition to simple data types, ObjectView can generate components that
support complex data types. Complex data types are user defined data types
such as client records. For example, consider the following data type in a
Web service:
public class Address
public string Name;
public string Street;
public string City;
public string State;
public string Zip;
public string Country;
ObjectView automatically creates components that can get and set data for
the above data types, as shown in Figure 4.
We can use these components to create a SOAP request or to parse a SOAP
response. The Figure 5 illustrates how you can use these components:
Note that the setAddress and the getAddress components are denoted by
an exclamation (l) mark. This means that the component is acting as a
parser for the SOAP messages. These components are executed locally on
your machine. Components denoted by an asterisk (*) mark are actual Web
service components. Only these components send and receive SOAP
requests and responses.
Description 15
CA 02376038 2002-03-07
Get array data types
If a Web service component returns an array of strings as output, a
getArrayOfstring component is added to the list of objects. You can use this
component to parse the SOAP response of the Web service component.
Note that the getArrayOfstring component has an index as one of its inputs.
You can use this index to traverse the array. An index value of 0 returns the
first element, 1 for the second element, 2 for the third element, and so on.
Please refer to Figure 6 for an illustration of how to iterate through an
array
of strings.
Set array data types
If a Web service component requires an array of strings as input, a
setArrayOfstring component is added to the list of objects. You can use this
component to create a SOAP request to the Web service component.
Note that only setArray<DataType> accepts multiple inputs. In the Figure 7,
three strings are appended to create an array of strings. The resulting data
is then sent to DeleteAddress. The setstring and setArrayOfstring
components are executed locally on your machine. DeleteAddress is an
actual Web service and is denoted by an asterisk (*). Only DeleteAddress
sends and receives a SOAP request and response. The other components are
used to create data.
Descriprion 16
CA 02376038 2002-03-07
Linking Objects
Creating data flows
A single object can perform a function. By entering data into its input data
nodes and running the object you can view a result. An object only executes
its own values until linked to another object.
By linking the output data node of one object to the input data node of
another object, you can execute a series of functions: data flow. When two
or more objects are linked, the first object passes its result to the next
object to execute.
Generally, only data that is of similar type can be linked, such as strings to
strings (text to text) or floats to floats (numbers to numbers). You can force
a link between different data types, but this may result in odd behavior and
should only be done with caution.
Creating control flows
The top node on the right side of the object is the output control node and is
used to set the control flow or order of execution of the objects. When you
link the output control node of one object to the input control node of
another object you are setting first object to execute before the next.
Linking data nodes to control nodes and vice-versa
The data nodes can be connected to a control node and vice-versa to create
a control flow, as shown in Figure 8. Generally, you would use this to set an
If condition on the link.
Description 17
CA 02376038 2002-03-07
Run Order
Run order and data flow
Run order is the order that objects get executed when a project is run.
Run order is first determined by the positioning of the objects: objects
placed at the top of the project window execute first, from top to bottom,
then left to right.
Data flow is the order that data gets executed when a project is run.
By linking the output node of one object to the input node of another object
you are instructing the project to execute an object's data and then pass the
result to the next object to execute. This is the data flow.
Positioning of objects and run order
The vertical and horizontal position of the objects first determines the run
order. Objects placed in the top most position in the project window execute
first, from top to bottom, then left to right.
Description 18
CA 02376038 2002-03-07
Running and Viewing Rasults
Running a Project
To run a project: On the Project menu, click Run.
Viewing the result of a single object
1. Right-click the object and select Run Object from the shortcut menu.
The object turns green when it has finished executing.
2. Do one of the following:
~ Mouse-over the output data node to view the tool tip pop-up.
The value is the executed result of the object.
~ Double-click the output data node to view the results in the Result
window.
Viewing results in XML
1. Run an object or project.
2. Right-click the output data node of the object that contains the final
result of your project and select View Result... from the shortcut menu.
The Result window opens:
~ The XML/XSL tab displays the result in a table by applying an
auto-generated XSL stylesheet to the XML data.
~ Click the Tree tab to view the XML data in the tree form.
~ Click the Text tab to view the actual XML text.
Descriprion 19
CA 02376038 2002-03-07
If Construct
An If construct is a function that changes the state of a project, such as
stopping a project, if a certain condition is reached. You can set an If
construct on any data flow or control flow line, as shown in Figure 9.
Creating an If construct
To create an If construct:
1. Click a data flow (solid) line or control flow (dotted) line linking two
objects.
2. Right-click the dotted line and select Properties from the shortcut menu.
3. Select the Allow the data to pass only if the following condition is
true check box.
4. In the Incoming data is box, select a condition from the drop down box:
~ valid
~ invalid (the operation failed)
~ equal to Compare Data
~ not equal to Compare Data
~ greater than Compare Data
~ greater than or equal to Compare Data
~ less than Compare Data
~ less than or equal to Compare Data
5. In the Compare Data box, type the If condition value.
6. Click OK.
Description 20
CA 02376038 2002-03-07
Loop Construct
A loop is a sequence of functions or instructions that is continually repeated
until a certain condition is reached. The EndLoop component sets the
condition that is to be met. Please refer to Figure 6 for an illustration of
Loop
Construct.
A Loop construct is the same thing as adding a Loop component to a project.
Creating a Loop construct
To add a Loop to a project:
1. Click the Main tab at the bottom left corner of the Components window.
2. Select Loop from the component list and do one of the following:
~ double-click the Loop component
click the Loop component and drag it into the Project window.
3. Resize the Loop to surround the objects by clicking and dragging the Loop
bounds.
All objects inside the Loop are denoted with a circle (O) in the object
header.
4. Set the EndLoop condition by dragging an output node from an object to
the input node on the EndLoop object. A dotted line is formed.
5. Select the dotted line and right-click the dotted line and select
Properties from the shortcut menu.
6. Set the If condition.
7. Click OK.
Description 21
_._._._.._ .. , _
CA 02376038 2002-03-07
Generating XML and XSL Files
Extensible Markup Language, XML is used to describe data. Extensible
Stylesheet Language, XSL is used to transform XML documents into HTML
documents.
Creating an XSL File
ObjectView automatically generates XSL files to display XML data in a
readable user-friendly format. To create an XSL file:
1. Select object that contains the result you want outputted to an XML file.
2. Right-click and select Properties... from the shortcut menu.
3. Click the Outputs tab and select the data output node name from the
Name list.
4. Check the Save the runtime value to XML file check box.
S. Enter an XSL label in the XS~ Label for the data box. This label
appears as a heading on the XSL file.
6. Click OK.
7. Run your project. ObjectView opens and displays the XSL file in your
browser.
You can view the XML~XSL output as shown in Figure 10, after running a
project by right-clicking the output data node and then selecting View
Result. The XML and XSL files are saved to your Projects folder.
Description 22
CA 02376038 2002-03-07
E. EXAMPLE OF INTENDED USE
Stocks Portfolio
The example as shown in Figure 11, illustrates how to calculate the current
worth of a stock portfolio by using a stocks database web service and an
online stock quote Web service. It retrieves an array of holdings from the
stocks database, and then uses the online stock quote Web service to
calculate the current worth of the portfolio.
Data Synchronization between two Enterprises
The example as shown in Figure 12, illustrates how two different companies
running different operating systems and using different databases can use
ObjectView to synchronize their business objects. Once this scenario is
created, the companies can publish it as a Web service onto their servers,
using ObjectView.
Description 23