I finally finished the long overdued last installment of the Activity Data Model series. In this post, I focused on workflow variables. Conceptually workflow variables are very similar to variables in procedure programming languages like C#. But one thing special about workflow variables is the concept of "public" versus "implementation" variables. "Public" variables means variables defined by activity users and could not be used by the activity's implementation. "Implementation" variables are very similiar to the concept of local varible in C#. Both variables and arguments are scoped in WF4, which is a big improvement compared to WF3.