This is my first post about WF4's Activity Data Model. The focus of this post is a high level principle which drives data model redesign between WF3 and WF4: separation of data and program. WF3 has Activity's runtime state stored in the Activity itself which caused a lot of problems. WF4 abstracts out concept like Argument and Variable and pushes the real storage to ActivityContext available only at runtime. This model is consistent with mainstream programming languages like C#.

I'll have more posts later to talk about WF Argument and Variable in details.