IP Library Granted Patent US 8,849,929
Granted Patent B2
US 8,849,929 · App. 13/095,110 · Granted Sep 30, 2014

Applying actions to item sets within a constraint

Inventors: David Bruce Lindsay (Kirkland, WA); Geoffrey M. Clark (Bothell, WA); Baskaran Dharmarajan (Palo Alto, CA); Ashutosh Tewari (Fremont, CA)
Assignee: Microsoft Corporation
G06F9/4843G06F9/5027
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 8,849,929
App. No.
13/095,110
Granted
Sep 30, 2014
Kind
B2
Abstract

Items of an item set may be stored by an item server (e.g., mail messages comprising a mailbox stored by a mail server) that supports the application of actions, but only within a constraint (e.g., a maximum duration or computational resources consumed by the action). The application of complex actions to large item sets may exceed the constraint if performed in one request. Moreover, the request may be made by a user interface of a user device, but the user interface may stall while interoperating with the item server to perform the action. Instead, a background process may issue a sequence of requests applying the action to respective batches of items within the constraint. This architecture may enable the user interface to remain responsive to the user while the action is performed, and even to be terminated without jeopardizing the completion of the action upon the item set.

Claims (71)

1. A method of applying, on a device having a processor, an action requested by a user through a user interface of a remote device, to items of an item set stored by an item server having a constraint presenting a resource limit on requests issued to the item server, the method comprising:

executing on the processor a process comprising instructions configured to:

select a batch size identifying a number of items to which the action is applicable within the resource limit of the constraint;

for respective batches of the item set, respective batches having a batch index and comprising a subset of items of the item set within the batch size:

sequentially request the item server to apply the action to the items of the batch; and

notify the remote device to update the user interface to reflect the batch index of the batch; and

upon detecting that the item server has achieved a completion of the action on the item set, notify the remote device to reflect the completion of the action on the item set.

2. The method of claim 1 :

the device configured to execute a user interface process presenting a user interface to a user;

the action comprising a request initiated by the user within the user interface; and

the process configured to receive the request from the user interface process.

3. The method of claim 1 :

the device comprising a front-end server configured to communicate with the item server;

the action comprising a request initiated by a user upon a user device; and

the device configured to receive the request from the user device.

4. The method of claim 1 :

the item server comprising a stateless item server; and

the action selected from an action set comprising:

an item tagging action specifying at least one tag to be applied to at least one item of the item set;

an item selecting action configured to select at least one item of the item set;

an item sending action configured to send at least one item of the item set to the server;

an item receiving action configured to receive at least one item of the item set from the item server;

an item updating action configured to update at least one item of the item set;

an item deleting action configured to delete at least one item of the item set;

an item locating action configured to set a location of at least one item within the item set.

5. The method of claim 1 , selecting the batch size comprising: estimating a batch size based on the item set, the action, and the constraint.

6. The method of claim 1 , selecting the batch size comprising: receiving a batch size specified by the item server.

7. The method of claim 1 , the instructions configured to:

detecting at least one performance factor from applications of the action to the items of respective batches by the item server; and

updating the batch size based on the at least one performance factor.

8. The method of claim 1 , respective batches of items selected according to an item order.

9. The method of claim 8 :

the request initiated by the user within the user interface presenting at least one item of the item set; and

the item order associated with the items presented in the user interface.

10. The method of claim 1 :

the action specifying at least one criterion of items to which the action is to be applied; and

requesting the item server to apply the action to the items of the batch comprising: for respective batches selected from the item set, requesting the server to identify items satisfying the at least one criterion.

11. The method of claim 1 :

the action specifying at least one criterion of items to which the action is to be applied; and

requesting the item server to apply the action to the items of the batch comprising: for respective batches of selected from the item set, requesting the server to apply the action to the items of the batch satisfying the at least one criterion.

12. The method of claim 1 :

the action to be applied to a selected item set of items within the item set; and

requesting the item server to apply the action to the items of the batch comprising: for respective batches selected from the selected item set, requesting the server to apply the action to the items of the batch.

13. The method of claim 1 , the instructions configured to, upon receiving from the item server a failure response indicating a failure to apply the action to a batch, reissue the request to apply the action to the batch.

14. The method of claim 1 :

the items of the item set having an item order;

requesting the item server to apply the action to the items of the batch comprising: requesting the item server to apply the action to items of the item set beginning at a specified item order and within the batch size; and

the instructions configured to:

receive from the item server an item applied count indicating a number of items of the item set to which the item server has applied the action; and

detect a completion of an application of the action to the item set upon receiving from the item server an applied item count less than the batch size.

15. The method of claim 1 , the instructions configured to, upon completing an application of the action to the item set, create a rule applying the action to subsequently received items of the item set.

16. The method of claim 1 :

at least one item of the item set presented to a user within a user interface; and

the instructions configured to, upon applying the action to an item presented to the user within the user interface, update the user interface.

17. The method of claim 1 :

at least one item of the item set presented to a user within a user interface; and

the instructions configured to present to the user within the user interface a progress indicator of progress applying the action to the items of the item set.

18. The method of claim 1 , the instructions further configured to, upon detecting a disconnection of the remote device from the device while sequentially requesting the item server to apply the action to the items of the respective batches of the item set, continue sequentially requesting the item server to apply the action to the items of the respective batches of the item set notwithstanding the disconnection.

19. A system configured to apply, on a device having a processor, an action requested by a user through a user interface of a remote device to items of an item set stored by an item server having a constraint presenting a resource limit on requests issued to the item server, the system comprising:

a batch size selecting component configured to select a batch size identifying a number of items to which the action is applied within the resource limit of the constraint; and

an action executing component configured to:

for respective batches of the item set within the batch size respectively having a batch index:

sequentially request the item server to apply the action to the items of the batch; and

notify the remote device to update the user interface to reflect the batch index of the batch; and

upon detecting that the item server has achieved a completion of the action on the item set, notify the remote device to reflect the completion of the action on the item set.

20. A computer-readable memory device storing instructions that, when executed by a processor of a device, apply actions requested by a user through a user interface of a remote device to messages to a user by:

selecting a batch size identifying a number of items to which the action is applicable within the resource limit of the constraint; and

for respective batches of the item set, respective batches having a batch index and comprising a subset of items of the item set within the batch size:

sequentially requesting the item server to apply the action to the items of the batch, and

notifying the remote device to update the user interface to reflect the batch index of the batch; and

upon the item server achieving a completion of the action on the item set, notify the remote device to reflect the completion of the action on the item set.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034544/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 28, 2011
From: LINDSAY, DAVID BRUCE; CLARK, GEOFFREY M.; DHARMARAJAN, BASKARAN; TEWARI, ASHUTOSH
To: MICROSOFT CORPORATION
Reel/Frame 026661/0318 →
Continuity (1)
Related Publication 20120278397A1 · Nov 1, 2012