IP Library › Granted Patent US 8,954,924
Granted Patent B2
US 8,954,924 · App. 13/207,347 · Granted Feb 10, 2015

Dynamic update of modularized programs in a continuation-based runtime

Inventors: Daniel Glick (Seattle, WA); Jae Lee (Redmond, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F8/20G06F8/71G06Q10/06
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,954,924
App. No.
13/207,347
Granted
Feb 10, 2015
Kind
B2
Abstract

A framework for aggregating updates for individual modules into an update for a containing module is disclosed. The containing module may be an entire program or workflow, for example. The updates may include changes to the contract of a module. Embodiments of the invention further provide a framework for detecting when changes to an inner module are incompatible with changes to the containing module.

Claims (61)

1. A computer-implemented method for dynamically updating a continuation-based program in response to one or more program changes, the method comprising:

receiving one or more original activity definitions;

identifying changes to the original activity definitions;

generating an implementation map for applying activity changes to implementations of the activity;

receiving an original workflow definition;

identifying changes to the original workflow definition;

identifying implementation maps for activities within the workflow;

generating an update map for the workflow for applying workflow changes to implementations of the workflow, the update map comprising implementation maps for the activities within the workflow; and

applying the update map to a current instance of the workflow to create an updated instance.

2. The computer-implemented method of claim 1 , wherein an inner activity is contained within an outer activity, and wherein the generating an update map further comprises:

aggregating an inner activity update into an outer activity without having an original version of the inner activity present at the time of aggregation.

3. The computer-implemented method of claim 1 , wherein an inner activity is contained within an outer activity, the method further comprising:

detecting when an implementation of the inner activity has changed in response to one or more changes in the outer activity.

4. The computer-implemented method of claim 1 , wherein an inner activity is contained within an outer activity, the method further comprising:

storing metadata relevant to an activity update; and

determining when there is a conflict between metadata for updates to the inner activity and metadata for updates to the outer activity.

5. The computer-implemented method of claim 1 , wherein an inner activity is contained within an outer activity, the method further comprising:

validating the update map for the workflow.

6. The computer-implemented method of claim 5 , wherein the validating comprises:

determining whether changes were made to an activity's arguments both inside the activity's implementation map and as part of updates to the outer activity.

7. The computer-implemented method of claim 5 , wherein the validating comprises:

determining whether original values were saved for a particular activity both as part of an implementation update and as part of updates to the outer activity.

8. The computer-implemented method of claim 5 , wherein the validating comprises:

determining whether an implementation of any activity changed in response to changes in the outer activity.

9. The computer-implemented method of claim 1 , wherein generating the update map further comprises:

adding update information to a current program tree for the continuation-based program to generate an updated program tree; and

determining one or more differences between the current program tree and the updated program tree.

10. The computer-implemented method of claim 9 , wherein determining one or more differences between the current program tree and the updated program tree further comprises:

accessing at least one previously updated workflow to ensure that newer updates do not conflict with previous updates.

11. The computer-implemented method of claim 1 , wherein the applying further comprises:

modifying an instance state of a program workflow according to the update map.

12. The computer-implemented method of claim 1 , wherein the program changes include an addition, removal or replacement of a child activity.

13. The computer-implemented method of claim 1 , wherein the program changes include an addition, removal or replacement of a variable or an argument.

14. The computer-implemented method of claim 1 , wherein the program changes include a modification of an argument expression or a default expression or a variable.

15. A computer program device for modifying the workflow instance state of a continuation-based program, the computer program device comprising one or more computer-readable storage media memories having stored thereon computer-executable instructions that, upon execution by one or more processors of a computing system, cause the computing system to:

receive one or more original activity definitions;

identify changes to the original activity definitions;

generate an implementation map for applying activity changes to implementations of the activity;

receive an original workflow definition;

identify changes to the original workflow definition;

identify implementation maps for activities within the workflow;

generate an update map for the workflow for applying workflow changes to implementations of the workflow, the update map comprising implementation maps for the activities within the workflow; and

apply the update map to a current instance of the workflow to create an updated instance.

16. The computer program device of claim 15 , wherein the computer-executable instructions, upon execution by the computing system, further cause the computing system to:

determine when there is a conflict between updates to an inner activity and a containing activity.

17. The computer program device of claim 15 , wherein the computer-executable instructions, upon execution by the computing system, further cause the computing system to:

validate the update map by determining:

whether an activity's arguments changed both inside the implementation map and as part of a containing activity update;

whether original values were saved a particular activity both as part of an implementation update and an containing activity update; and

whether implementation of any activity changed in response to changes in a containing activity.

18. A computer system for dynamically updating a continuation-based program in response to one or more program changes, the computer system comprising:

one or more processors; and

a memory coupled to the one or more processors, the memory having program instructions stored thereon that, upon execution by the one or more processors, cause the computer system to:

receive one or more original activity definitions;

identify changes to the original activity definitions;

generate an implementation map for applying activity changes to implementations of the activity;

receive an original workflow definition;

identify changes to the original workflow definition;

identify implementation maps for activities within the workflow;

generate an update map for the workflow for applying workflow changes to implementations of the workflow, the update map comprising implementation maps for the activities within the workflow; and

apply the update map to a current instance of the workflow to create an updated instance.

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 Aug 10, 2011
From: GLICK, DANIEL; LEE, JAE
To: MICROSOFT CORPORATION
Reel/Frame 026731/0191 →
Continuity (1)
Related Publication 20130042226A1 · Feb 14, 2013