A missing feature of WF

Microsoft Workflow Foundation (WF) is designed to build a kind of Domain Specific Language. You can take WF as a higher level programming language. For example, it has "while" and "if" statements (activities). All the statements run sequentially.

At this time, WF is good for back end process, but not for (web) user interface. Why? Because WF does not support "Back" button. Let's suppose a web application using WF to control page flow. It is very common for user to input data across pages and want to go "back" to previous pages to change data. WF does not provide built-in mechanism to do that.

How to implement "Back" logic in WF? WF needs a stack to save states for previous activities. When user clicks "Back" button, WF should pop up previous state from stack and continue the "previous" work.

I hope the new version of ASP.NET integrated with WF can have that "Back" button feature.

Crystal Report .NET is lazy

Crystal Report .NET can bind .NET object to its report template, which I took for granted for a long time until I really get my hands dirty these days.

The question is: could you bind composited object in Crystal Report .NET? For example, an Employee class can be like this:

public class Employee
{
public string m_name;
public Address m_address;
public Salary m_salary;
}

Address and Salary are also classes.

How can I bind an Employee object to Crystal Report to show detailed Address and Salary information? It turns out Crystal Report .NET can only access the top level properties of an object (only m_name in this case)! Crystal Report .NET is too lazy to dig into the object hierarchy.

Ugly solution? You should create a flat class including all properties of all children classes! A mapping method to fill data to the flat class is needed of course.

In my current project, I have a class that is composited with many other child classes. If I make all fields flat in one class, there will be more than one hundred properties.

Except that I have to spend days to create flat classes, Crystal Report also gives me a big task from now on: to keep the flat classes synchronized with those hierarchical classes.