IP Library Granted Patent US 10,185,605
Granted Patent B2
US 10,185,605 · App. 13/601,228 · Granted Jan 22, 2019

In-order message processing with message-dependency handling

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 10,185,605
App. No.
13/601,228
Granted
Jan 22, 2019
Kind
B2
Abstract

The disclosure generally describes computer-implemented methods, software, and systems for modeling and deploying decision services. One computer-implemented method includes operations for identifying a sequence number of a first message, the sequence number indicating a position of the first message within a first sequence of messages. If a second message positioned prior to the first message in the first sequence is in a final processing state and the second message in the first sequence is a parent message, a plurality of child messages associated with the second message are identified. Each child message is associated with a sequence number indicating a position of the child message within a second sequence associated with the plurality of child messages. The computer-implemented method determines whether a child message positioned at the end of the second sequence is in a final processing state.

Claims (66)

1. A computer-implemented method, comprising:

receiving, at a first processing node and from a queuing database, a first message;

identifying a sequence number of the first message, the sequence number indicating a position of the first message within a first sequence of messages at the queuing database, the first sequence of messages comprising a serialized sequence of messages wherein messages positioned prior in the serialized sequence must be processed before messages positioned thereafter in the serialized sequence; and

after receiving the first message and before processing the first message:

identifying a second message positioned prior to the first message in the first sequence of messages based on the sequence number;

querying the queuing database to determine that the second message prior to the first message is in a final processing state, wherein the second message is processed by a second processing node different than the first processing node;

in response to determining that the second message is in the final processing state, querying the queuing database to determine whether the second message in the first sequence of messages is a parent message associated with a plurality of child messages;

in response to determining that the second message is a parent message, identifying the plurality of child messages associated with the second message, each one of the plurality of child messages associated with a sequence number indicating a position of the respective child message within a second sequence separate from the first sequence and a sequence identifier identifying the second sequence, wherein the second sequence is a serialized sub-sequence of the second message in the first sequence;

determining whether a child message of the plurality of child messages positioned at the end of the second sequence is in a final processing state;

determining a retention deadline for the second message based on a predefined retention period; and

in response to determining that the second message has reached the retention deadline and that the child message of the plurality of child messages positioned at the end of the second sequence is in the final processing state, removing the second message and the plurality of child messages associated with the second message.

2. The computer-implemented method of claim 1 , wherein:

the identifying the second message positioned prior to the first message in the first sequence of messages further includes locating the second message based on a serialization context of the first message.

3. The computer-implemented method of claim 1 , wherein the identifying the plurality of child messages associated with the second message includes accessing a mapping table that indicates an association between the second message and the plurality of child messages.

4. The computer-implemented method of claim 1 , further comprising:

determining that the child message of the plurality of child messages positioned at the end of the second sequence is not in the final processing state; and

returning the first message to a message queue.

5. The computer-implemented method of claim 1 , further comprising:

determining that the child message of the plurality of child messages positioned at the end of the second sequence is in the final processing state; and

processing the first message.

6. The computer-implemented method of claim 5 , wherein the processing the first message includes delivering the first message to a destination included in the first message.

7. The computer-implemented method of claim 1 , wherein the determining whether the second message is a parent message includes determining whether the second message is appended with a designation indicating a parent.

8. A system comprising:

one or more computers associated with an enterprise portal; and

a computer-readable medium coupled to the one or more computers including instructions stored thereon which, when executed by the one or more computers, cause the one or more computers to perform operations comprising:

receiving, at a first computer of the one or more computers and from a queuing database, a first message;

identifying a sequence number of the first message, the sequence number indicating a position of the first message within a first sequence of messages at the queuing database, the first sequence of messages comprising a serialized sequence of messages wherein messages positioned prior in the serialized sequence must be processed before messages positioned thereafter in the serialized sequence; and

after receiving the first message and before processing the first message:

identifying a second message positioned prior to the first message in the first sequence of messages based on the sequence number;

querying the queuing database to determine that the second message prior to the first message is in a final processing state, wherein the second message is processed by a second computer of the one or more computers different than the first computer;

in response to determining that the second message is in the final processing state, querying the queuing database to determine whether the second message in the first sequence of messages is a parent message associated with a plurality of child messages;

in response to determining that the second message is a parent message, identifying the plurality of child messages associated with the second message, each one of the plurality of child messages associated with a sequence number indicating a position of the respective child message within a second sequence separate from the first sequence and a sequence identifier identifying the second sequence, wherein the second sequence is a serialized sub-sequence of the second message in the first sequence;

determining whether a child message of the plurality of child messages positioned at the end of the second sequence is in a final processing state;

determining a retention deadline for the second message based on a predefined retention period; and

in response to determining that the second message has reached the retention deadline and that the child message of the plurality of child messages positioned at the end of the second sequence is in the final processing state, removing the second message and the plurality of child messages associated with the second message.

9. The system of claim 8 , wherein:

the identifying the second message positioned prior to the first message in the first sequence of messages further includes locating the second message based on a serialization context of the first message.

10. The system of claim 8 , wherein the identifying the plurality of child messages associated with the second message includes accessing a mapping table that indicates an association between the second message and the plurality of child messages.

11. The system of claim 8 , wherein the computer-readable medium further includes instructions stored thereon which, when executed by the one or more computers, cause the one or more computers to perform operations comprising:

determining that the child message of the plurality of child messages positioned at the end of the second sequence is not in the final processing state; and

returning the first message to a message queue.

12. The system of claim 8 , wherein the computer-readable medium further includes instructions stored thereon which, when executed by the one or more computers, cause the one or more computers to perform operations comprising:

determining that the child message of the plurality of child messages positioned at the end of the second sequence is in the final processing state; and

processing the first message.

13. The system of claim 12 , wherein the processing the first message includes delivering the first message to a destination included in the first message.

14. A computer-program product encoded on a tangible, non-transitory storage medium, the product comprising computer-readable instructions for causing one or more processors to perform operations comprising:

receiving, at a first processor of the one or more processors and from a queuing database, a first message;

identifying a sequence number of the first message, the sequence number indicating a position of the first message within a first sequence of messages at the queuing database, the first sequence of messages comprising a serialized sequence of messages wherein messages positioned prior in the serialized sequence must be processed before messages positioned thereafter in the serialized sequence; and

after receiving the first message and before processing the first message:

identifying determining that a second message positioned prior to the first message in the first sequence of messages based on the sequence number;

querying the queuing database to determine that the second message prior to the first message is in a final processing state, wherein the second message is processed by a second processor of the one or more processors different than the first processor;

in response to determining that the second message is in the final processing state, querying the queuing database to determine whether the second message in the first sequence of messages is a parent message associated with a plurality of child messages;

in response to determining that the second message is a parent message, identifying the plurality of child messages associated with the second message, each one of the plurality of child messages associated with a sequence number indicating a position of the respective child message within a second sequence separate from the first sequence and a sequence identifier identifying the second sequence, wherein the second sequence is a serialized sub-sequence of the second message in the first sequence;

determining whether a child message of the plurality of child messages positioned at the end of the second sequence is in a final processing state;

determining a retention deadline for the second message based on a predefined retention period; and

in response to determining that the second message has reached the retention deadline and that the child message of the plurality of child messages positioned at the end of the second sequence is in the final processing state, removing the second message and the plurality of child messages associated with the second message.

15. The computer-program product of claim 14 , wherein:

the identifying the second message positioned prior to the first message in the first sequence of messages further includes locating the second message based on a serialization context of the first message.

16. The computer-program product of claim 14 , wherein the identifying the plurality of child messages associated with the second message includes accessing a mapping table that indicates an association between the second message and the plurality of child messages.

17. The computer-program product of claim 14 , further comprising computer-readable instructions for causing one or more processors to perform operations comprising:

determining that the child message of the plurality of child messages positioned at the end of the second sequence is not in the final processing state; and

returning the first message to a message queue.

18. The computer-program product of claim 14 , further comprising computer-readable instructions for causing one or more processors to perform operations comprising:

determining that the child message of the plurality of child messages positioned at the end of the second sequence is in the final processing state; and

processing the first message.

19. The computer-program product of claim 18 , wherein the processing the first message includes delivering the first message to a destination included in the first message.

Assignments (2)
CHANGE OF NAME Recorded Aug 26, 2014
From: SAP AG
To: SAP SE
Reel/Frame 033625/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 4, 2012
From: HOLZLEITNER, MANUEL; TROBITIUS, JAN
To: SAP AG
Reel/Frame 028896/0600 →