IP Library Granted Patent US 7,412,707
Granted Patent B2
US 7,412,707 · App. 10/622,106 · Granted Aug 12, 2008

No-reset option in a batch billing system

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,412,707
App. No.
10/622,106
Granted
Aug 12, 2008
Kind
B2
Abstract

A system for processing a batch which is distributed into a plurality of independent segments. A preferred embodiment of this invention calls for implementation on a symmetrical multiprocessing platform, however, the invention is also applicable to massively parallel architectures as well as uniprocessor environments. Each segment comprises a plurality of discrete events, each discrete event comprising a plurality of sub-events to be processed. The system operates to process each discrete event within each segment sequentially and each sub-event within each discrete event sequentially. The plurality of segments may be processed on an uniprocessor, an SMP system or an MPP system. By balancing the number of discrete events in each segment using a “coarse grain” approach, a flexible but efficient use of processor availability is obtained.

Claims (46)

1. A method of processing a plurality of discrete events, each discrete event comprising a plurality of independent sub-events, the method comprising:

distributing each discrete event into one of a plurality of segments, each segment comprising a sequence of at least one discrete event to be processed;

maintaining a data table, the data table containing data associated with each of the plurality of segments;

initiating each of the plurality of segments to execute concurrently on at least one processor;

for each segment, processing each discrete event contained within the segment sequentially;

for each discrete event, processing each independent sub-event of the discrete event sequentially and then storing the results of the processing;

monitoring each of the segments to detect failures;

deactivating each segment for which a failure is detected;

retreiving initialization data, from the data table, corresponding to each failed segment;

re-initializing each failed segment with the initialization data corresponding to that failed segment; and

re-initiating each failed segment.

2. The method of claim 1 wherein at least one discrete event of the plurality of discrete events is a customer account and the processing each discrete event comprises determining billing information for the customer account.

3. The method of claim 2 , the method further comprising:

generating an invoice for the customer account after processing the customer account.

4. The method of claim 1 wherein at least one discrete event of the plurality of discrete events is a customer account and at least one independent sub-event of the discrete event comprises one or more customer calls.

5. The method of claim 1 wherein the processing the plurality of discrete events is performed using one of a symmetrical multiprocessing system, a massively parallel processing system, and a loosely coupled distributed processing system.

6. The method of claim 1 wherein the distributing each discrete event comprises:

determining a number of segments in the plurality of segments at least partially based on a number of processors included in the at least one processor.

7. The method of claim 1 wherein the distributing each discrete event comprises:

determining a size of individual segments of the plurality of segments at least partially based on a number of customer accounts being processed.

8. The method of claim 7 wherein the distributing each discrete event further comprises:

associating parent and child customer accounts with the same segment, and wherein the size of the segment is partially determined thereby.

9. An apparatus comprising:

at least one memory circuit, contents of the memory circuit including data associated with corresponding ones of a plurality of segments, individual segments comprising a sequence of at least one discrete event to be processed, individual discrete events comprising a plurality of independent sub-events; and

at least one processor configured to process the plurality of discrete events, the at least one processor being configured to concurrently process individual ones of the plurality of segments, wherein the at least one processor is configured to sequentially process individual discrete events contained within a segment, sequentially process individual independent sub-events of an individual discrete event, and store the results in the at least one memory circuit,

wherein the at least one processor is configured to re-process individual, failed segments after deactivating and reinitializing the individual, failed segment with corresponding data retrieved from the at least one memory circuit.

10. The apparatus of claim 9 wherein at least one discrete event of the plurality of discrete events is a customer account and the at least one processor is configured to determine billing information for the customer account.

11. The apparatus of claim 10 wherein the at least one processor is configured to generate an invoice for the customer account after processing the customer account.

12. The apparatus of claim 9 wherein at least one discrete event of the plurality of discrete events is a customer account and at least one independent sub-event of the discrete event comprises one or more customer calls.

13. The apparatus of claim 9 wherein the at least one processor is included in one of a symmetrical multiprocessing system, a massively parallel processing system, and a loosely coupled distributed processing system.

14. The apparatus of claim 9 wherein the number of segments is at least partially based on a number of processors included in the at least one processor.

15. The apparatus of claim 9 wherein the size of individual segments is at least partially based on a number of customer accounts being processed.

16. The apparatus of claim 15 , wherein parent and child customer accounts are associated with the same segment and the size of the segment is partially based on the association.

17. A method of processing a plurality of discrete events, individual discrete events of the plurality of discrete events comprising a plurality of independent sub-events, the method comprising:

distributing individual discrete events of the plurality of discrete events into individual segments of a plurality of segments, the individual segments comprising a sequence of at least one discrete event to be processed;

maintaining a data table, the data table of the plurality of segments;

concurrently processing, on at least one processor, the individual segments based on the data associated with the individual segments, wherein processing a segment of the individual segments comprises:

sequentially processing individual discrete events associated with the segment;

sequentially processing individual independent sub-events of the discrete event;

storing the results of the sequential processing individual independent sub-events;

monitoring the processing of the individual segments to detect failures; and

when a failure is detected, deactivating processing of the segment corresponding to the failure and reprocessing the segment corresponding to the failure based on the contents of the data table.

18. The method of claim 17 wherein at least one discrete event of the plurality of discrete events is a customer account and the processing each discrete event comprises determining billing information for the customer account.

19. The method of claim 18 wherein the method ftirther comprises:

generating an invoice for the customer account after processing the customer account.

20. The method of claim 17 wherein at least one discrete event of the plurality of discrete events is a customer account and at least one independent sub-event of the discrete event comprises one or more customer calls.

Assignments (5)
CHANGE OF NAME Recorded May 12, 2008
From: AT&T MOBILITY II, LLC
To: AT&T MOBILITY II LLC
Reel/Frame 020936/0228 →
CHANGE OF NAME Recorded Apr 28, 2008
From: CINGULAR WIRELESS II, LLC
To: AT&T MOBILITY II, LLC
Reel/Frame 020864/0225 →
CERTIFICATE OF CONVERSION Recorded Mar 29, 2006
From: CINGULAR WIRELESS II, INC.
To: CINGULAR WIRELESS II, LLC
Reel/Frame 017696/0375 →
CERTIFICATE OF CONVERSION Recorded Apr 22, 2005
From: CINGULAR WIRELESS II, INC.
To: CINGULAR WIRLEESS II, LLC
Reel/Frame 017546/0612 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 22, 2005
From: NEW CINGULAR WIRELESS SERVICES, INC. F/K/A AT&T WIRELESS SERVICES, INC.
To: CINGULAR WIRELESS II, INC.
Reel/Frame 017555/0711 →