IP Library Granted Patent US 7,028,312
Granted Patent B1
US 7,028,312 · App. 09/274,979 · Granted Apr 11, 2006

XML remote procedure call (XML-RPC)

Assignee: webMethods
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,028,312
App. No.
09/274,979
Granted
Apr 11, 2006
Kind
B1
Abstract

A Remote Procedure Call (RPC) uses a message expressed in a mark-up language message encoding, with type labels indicating data item types.

Claims (93)

1. A method of invoking a service at a first machine from a second machine, said method comprising the steps of:

generating a service invocation request message at said second machine in compliance with a markup language-based message encoding wherein said message includes elements representing data items of at least one argument and associated with type labels selected from a group of type labels, said group including at least an array type label indicating that the corresponding element is an array element representing an n-dimensional array containing a plurality of data items, where n is an integer and n≧1, said message including at least one element associated with said array type label and representing a multi-level nested array where each element nesting level corresponds to a respective dimension of said array; and

transmitting said service invocation request message from said second machine.

2. A method of invoking a service at a first machine, comprising the steps of:

receiving at said first machine a service invocation request message generated at a second machine in compliance with a markup language-based message encoding wherein said message includes elements representing data items of at least one argument and associated with type labels selected from a group of type labels, said group including at least an array type label indicating that the corresponding element is an array element representing an n-dimensional array containing a plurality of data items, where n is an integer and n≧1, said message including at least one element associated with said array type label and representing a multi-level nested array where each element nesting level corresponds to a respective dimension of said array; and

invoking said service in response to said message.

3. A method of invoking a service at a first machine, said method comprising the steps of:

receiving at said first machine a service invocation request;

invoking said service in response to said request; and

transmitting from said first machine a service invocation reply message in compliance with a markup language-based message encoding wherein said message includes elements representing data items of at least one argument and associated with type labels selected from a group of type labels, said group including at least an array type label indicating that the corresponding element is an array element representing an n-dimensional array containing a plurality of data items, where n is an integer and n≧1, said message including at least one element associated with said array type label and representing a multi-level nested array where each element nesting level corresponds to a respective dimension of said array; and

transmitting said service invocation reply message from said second machine.

4. A method of invoking a service at a first machine, said method comprising the steps of:

transmitting a service invocation request from a second machine; and

receiving at said second machine a service invocation reply message in compliance with a markup language-based message encoding wherein said message includes elements representing data items of at least one argument and associated with type labels selected from a group of type labels, said group including at least an array type label indicating that the corresponding element is an array element representing an n-dimensional array containing a plurality of data items, where n is an integer and n≧1, said message including at least one element associated with said array type label and representing a multi-level nested array where each element nesting level corresponds to a respective dimension of said array.

5. A method of invoking a service at a first machine from a second machine, said method comprising the steps of:

generating a service invocation request message at said second machine in compliance with a mark-up language-based message encoding wherein said message includes elements representing data items of at least one argument and associated with type labels selected from a group including at least an array type label indicating that the corresponding element is an array element representing an n-dimensional array containing a plurality of data items, where n is an integer and n≧1, said request message including at least one element associated with said array type label and representing an array of dimension n and further including an array label associated with said at least one element and requiring that all data items represented within said array have the same type as one another; and

transmitting said service invocation request message from said second machine.

6. A method of invoking a service at a first machine, comprising the steps of:

receiving at said first machine a service invocation request message generated at a second machine in compliance with a markup language-based message encoding wherein said message includes elements representing data items of at least one argument and associated with type labels selected from a group including at least an array type label indicating that the corresponding element is an array element representing an n-dimensional array containing a plurality of data items, where n is an integer and n≧1, said request message including at least one element associated with said array type label and representing an array of dimension n and further including an array label associated with said at least one element and requiring that all data items represented within said array have the same type as one another; and

invoking said service in response to said message.

7. A method of invoking a service at a first machine, said method comprising the steps of:

receiving at said first machine a service invocation request;

invoking said service in response to said request; and

transmitting from said first machine a service invocation reply message in compliance with a markup language-based message encoding wherein said message includes elements representing data items of at least one argument and associated with type labels selected from a group including at least an array type label indicating that the corresponding element is an array element representing an n-dimensional array containing a plurality of data items, where n is an integer and n≧1, said reply message including at least one element associated with said army type label and representing an array of dimension n and further including an array label associated with said at least one element and requiring that all data items represented within said array have the same type as one another; and

transmitting said service invocation reply message from said second machine.

8. A method of invoking a service at a first machine, said method comprising the steps of:

transmitting a service invocation request from a second machine; and

receiving at said second machine a service invocation reply message in compliance with a markup language-based message encoding wherein said message includes elements representing data items of at least one argument and associated with type labels selected from a group including at least an array type label indicating that the corresponding element is an array element representing an n-dimensional array containing a plurality of data items, where n is an integer and n≧1, said reply message including at least one element associated with said array type label and representing an array of dimension n and further including an array label associated with said at least one element and requiring that all data items represented within said array have the same type as one another.

9. A method according to any one of claims 5 – 8 , wherein said array label identifies said same type.

10. A method according to any one of claims 5 – 8 , wherein said mark-up language is XML, said at least one element is expressed as an XML element, and said array label is expressed as an XML attribute of said XML element such that the dimension n is given by the value of said XML attribute.

11. A method according to any one of claims 1 – 4 and 5 – 8 , wherein said message is an XML document.

12. A method according to any one of claims 1 – 4 , wherein said message includes a type label associated with the nesting element at each said element nesting level and designating said nesting element as having an array type.

13. A method according to claim 12 , wherein said nesting element contains at least one member element representing a data item, with all data items represented by the direct children elements of said nesting element being of the same type as one another.

14. A method according to claim 13 , wherein said message includes an array label associated with said nesting element and said array label indicates the type associated with all data items represented by said direct children elements.

15. A method according to any one of claims 1 – 4 , wherein said message includes an array label associated with said nesting element and said array label indicates a value of n but does not indicate a size for each of said n dimensions.

16. A method according to any one of claims 1 – 4 , wherein said message includes an array label associated with said at least one element and requiring that all data items contained within said array have the same type as one another.

17. A method according to claim 16 , wherein said array label identifies said same type.

18. A method according to any one of claims 1 – 4 , wherein all elements in said message designating data items are associated with type labels.

19. A method of invoking a service at a first machine from a second machine, comprising the steps of:

generating a service invocation request message at said second machine in compliance with a markup language-based message encoding, wherein said message includes plural elements representing data items of at least one argument and associated with type labels selected from an encoding group having a predetermined number of members, including at least a first type label for designating an element containing lexical data, and a second type label for designating an element containing other elements associated with type labels selected from said group, and a third type label for designating an element containing other elements associated with type labels selected from said group; and

transmitting said message.

20. A method according to claim 19 , wherein said group includes at least a fourth type label and a fifth type label always designating an element containing a data item specifying an ID value, wherein said message associates an element having said fourth type label with an ID value, and wherein said message includes an element associated with said fifth type label which specifies said ID value.

21. A method according to claim 19 , wherein said group includes at least one placeholder type label that designates a placeholder element which represents the absence of data.

22. A method of invoking a service at a first machine, comprising the steps of:

receiving at said first machine a service invocation request message generated at a second machine in compliance with a markup language-based message encoding, wherein said message includes plural elements representing data items of at least one argument and associated with type labels selected from an encoding group having a predetermined number of members, including at least a first type label for designating an element containing lexical data, and a second type label for designating an element containing other elements associated with type labels selected from said group, and a third type label for designating an element containing other elements associated with type labels selected from said group; and

invoking said service in response to said message.

23. A method according to claim 22 , wherein said group includes at least a fourth type label and a fifth type label always designating an element containing a data item specifying an ID value, wherein said message associates an element having said fourth type label with an ID value, and wherein said message includes an element associated with said fifth type label which specifies said ID value.

24. A method according to claim 22 , wherein said group includes at least one placeholder type label that designates a placeholder element which represents the absence of data.

25. A method of invoking a service at a first machine, said method comprising the steps of:

receiving at said first machine a service invocation request;

invoking said service in response to said request; and

transmitting from said first machine a service invocation reply message in compliance with a markup language-based message encoding, wherein said message includes plural elements representing data items of at least one argument and associated with type labels selected from an encoding group having a predetermined number of members, including at least a first type label for designating an element containing lexical data, and a second type label for designating an element containing other elements associated with type labels selected from said group, and a third type label for designating an element containing other elements associated with type labels selected from said group.

26. A method according to claim 25 , wherein said group includes at least a fourth type label and a fifth type label always designating an element containing a data item specifying an ID value, wherein said message associates an element having said fourth type label with an ID value, and wherein said message includes an element associated with said fifth type label which specifies said ID value.

27. A method according to claim 25 , wherein said group includes at least one placeholder type label that designates a placeholder element which represents the absence of data.

28. A method of invoking a service at a first machine, said method comprising the steps of:

transmitting a service invocation request from a second machine; and

receiving at said second machine a service invocation reply message in compliance with a markup language-based message encoding, wherein said message includes plural elements representing data items of at least one argument and associated with type labels selected from an encoding group having a predetermined number of members, including at least a first type label for designating an element containing lexical data, and a second type label for designating an element containing other elements associated with type labels selected from said group, and a third type label for designating an element containing other elements associated with type labels selected from said group.

29. A method according to claim 28 , wherein said group includes at least a fourth type label and a fifth type label always designating an element containing a data item specifying an ID value, wherein said message associates an element associated with said fourth type label with an ID value, and wherein said message includes an element associated with said fifth type label which specifies said ID value.

30. A method according to claim 28 , wherein said group includes at least one placeholder type label that designates a placeholder element which represents the absence of data.

31. A method of invoking a service at a first machine from a second machine, comprising the steps of:

generating a service invocation request message at said second machine in compliance with a markup language-based message encoding, wherein said message includes plural elements representing data items of at least one argument and associated with type labels selected from an encoding group having a predetermined number of members, including at least a first type label for designating an element containing lexical data, and a second type label for designating an element containing other elements associated with type labels selected from said group, said encoding providing a lexical type indicator associated with an element having said first type label and wherein an element associated with said first type label with no lexical type indicator is assumed to contain data of string lexical type; and

transmitting said message.

32. A method of invoking a service at a first machine, comprising the steps of:

receiving at said first machine a service invocation request message generated at a second machine in compliance with a markup language-based message encoding, wherein said message includes plural elements representing data items of at least one argument and associated with type labels selected from an encoding group having a predetermined number of members, including at least a first type label for designating an element containing lexical data, and a second type label for designating an element containing other elements associated with type labels selected from said group, said encoding providing a lexical type indicator associated with an element having said first type label and wherein an element associated with said first type label with no lexical type indicator is assumed to contain data of string lexical type; and

invoking said service in response to said message.

33. A method of invoking a service at a first machine, said method comprising the steps of:

receiving at said first machine a service invocation request;

invoking said service in response to said request; and

transmitting from said first machine a service invocation reply message in compliance with a markup language-based message encoding, wherein said message includes plural elements representing data items of at least one argument and associated with type labels selected from an encoding group having a predetermined number of members, including at least a first type label for designating an element containing lexical data, and a second type label for designating an element containing other elements associated with type labels selected from said group, said encoding providing a lexical typo indicator associated with an element having said first type label and wherein an element associated with said first type label with no lexical type indicator is assumed to contain data of string lexical type.

34. A method of invoking a service at a first machine, said method comprising the steps of:

transmitting a service invocation request from a second machine; and

receiving at said second machine a service invocation reply message in compliance with a markup language-based message encoding, wherein said message includes plural elements representing data items of at least one argument and associated with type labels selected from an encoding group having a predetermined number of members, including at least a first type label for designating an element containing lexical data, and a second type label for designating an element containing other elements associated with type labels selected from said group, said encoding providing a lexical type indicator associated with an element having said first type label and wherein an element associated with said first type label with no lexical type indicator is assumed to contain data of string lexical type.

35. A method according to any one of claims 19 – 28 , wherein said encoding group includes a fourth type label for designating an element containing other elements associated with type labels selected from said group.

36. A method according to any one of claims 19 – 28 , wherein said encoding group includes a fourth type label for designating an element uniquely identifying another element within a particular message.

37. A method according to claim 36 , wherein said encoding group includes a fifth type label for designating the absence of data.

38. A method according to claim 37 , wherein said encoding group includes a sixth type label for designating an element containing other elements associated with type labels selected from said group.

39. A method according to any one of claims 19 – 28 , wherein said encoding group includes a fourth type label for designating the absence of data.

40. A method according to any one of claims 19 , 22 , 25 , 28 , wherein said third type label designates an element containing an n-dimensional array (where n is an integer such that n≧1) of elements associated with type labels selected from said encoding group.

41. A method according to any one of claims 19 , 22 , 25 , 28 , wherein said encoding provides a lexical type indicator associated with an element having said first type label.

42. A method according to claim 41 , wherein an element associated with said first type label with no lexical type indicator is assumed to contain data of string lexical type.

43. A method according to claim 41 , wherein said mark-up language is XML, said elements are expressed as XML elements, said type labels are expressed as XML element type names, and said lexical type indicator is expressed as an XML attribute on an XML element associated with said first type label, with the lexical type of the data contained in said XML element being designated by the value of said XML attribute.

44. A method according to any one of claims 19 , 22 , 25 , 28 , wherein said encoding group further includes a fourth type label for designating an element representing a numeric value.

45. A method according to any one of claims 19 , 22 , 25 , 28 , wherein said encoding group includes multiple type labels each designating a respective different type of lexical data contained in an associated element.

46. A method according to any one of claims 19 , 22 , 25 , 28 , wherein said message further includes a semantic label for at least one data item of an argument in said message.

47. A method according to claim 46 , wherein said mark-up language is XML, said at least one element is expressed as an XML element, and said semantic label is expressed as the value of an XML attribute on said XML element.

48. A method according to any one of claims 21 , 24 , 27 , 30 , wherein said placeholder element represents a programming language null object reference.

49. A method according to any one of claims 21 , 24 , 27 , 30 , wherein said placeholder element identifies an element contained elsewhere in said message.

50. A method according to any one of claims 21 , 24 , 27 , 30 , wherein said message includes a second type label associated with said placeholder element.

51. A method according to claim 50 , wherein said message includes a semantic label associated with said placeholder element.

52. A method according to any one of claims 21 , 24 , 27 , 30 , wherein said message includes a semantic label associated with said placeholder element.

53. A method according to any one of claims 20 , 23 , 26 , 29 , wherein said encoding permits any element in a message to be associated with an ID which uniquely identifies said element within said message.

54. A method according to claim 53 , wherein said mark-up language is XML, said element is expressed as an XML element, and said ID is associated with said element via an XML attribute on said XML element whose value is said ID.

55. A method according to any one of claims 5 – 8 or 20 , 23 , 26 , 29 , 21 , 24 , 27 , 30 , wherein all elements of said message representing data items are associated with type labels.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 30, 2024
From: SUPER IPAAS INTEGRATION LLC
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 069440/0958 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 19, 2024
From: SOFTWARE AG, LLC
To: SUPER IPAAS INTEGRATION LLC
Reel/Frame 069319/0220 →
CHANGE OF NAME Recorded Oct 31, 2024
From: SAG 1, LLC
To: SOFTWARE AG, LLC
Reel/Frame 069287/0635 →
CHANGE OF NAME Recorded Sep 26, 2024
From: SOFTWARE AG, INC.
To: SAG 1, LLC
Reel/Frame 069064/0575 →
MERGER Recorded Sep 25, 2024
From: SOFTWARE AG USA, INC.
To: SOFTWARE AG, INC.
Reel/Frame 068693/0619 →
CHANGE OF NAME Recorded Jun 15, 2015
From: WEBMETHODS, INC. (ALSO D/B/A WEBMETHODS)
To: SOFTWARE AG USA, INC.
Reel/Frame 035909/0432 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 21, 1999
From: MERRICK, PHILLIP; ALLEN, STEWART; LAPP, JOSEPH
To: WEBMETHODS
Reel/Frame 009962/0424 →
Continuity (2)
Provisional Application 6009690900 · Aug 17, 1998
Provisional Application 6007910000 · Mar 23, 1998