I have created a very simple workflow in Sitecore 7.2 (rev. 140228) which follows the out-of-box sample workflow exactly the same except that saving a "Draft" item doesn't also automatically push the item into the review state for a certain role. I have applied this workflow to the standard values item on a base template via the Default workflow field.
Whenever a user (non-admin) creates an item derived from the inherited base template, that new item's initial state as defined by the workflow is appropriately set to "Draft". I can then run that item through the workflow to reach the "Done" state. Basically, the workflow seems to work as intended!
However, when the user hits edit to create a new version of the item, the item's history then shows that user's item history as having "Changed from ? to Draft".
I cannot determine how to set the initial state of a given item's version to something that will not result in a version's state intially being shown as "?" in the item history.
As an example: I can (wrongly, I believe) set the State field on the Standard Values item for my base template (which many other items inherit from) to the "Draft" state but, when I check the Standard Values for the item templates which inherit from that base template, they don't inherit that value in the State field.
I can set the State field in the Standard Values for an item template itself and new versions of that item still show "Changed from ? to Draft" when new versions are created.
Can anyone explain how to get new versions of items to indicate in history that they "Changed from Done to Draft"? Is there something here I am missing entirely?
I've tried the suggestion from Jay below and the result is the same:
I modified the workflow as suggested
I start an item through the workflow, and then just run it through to "Done"
Go to edit the item (which creates a new version) and I'm still getting "?"
Just to add to this from the permissions standpoint, the two roles I'm testing this workflow with literally have full access to the workflow across the board.
I've noted that workflow state names show "?" when a role's access to that state is restricted in various ways, but I'm at a loss when it comes to why things aren't showing up properly with permissions as they currently are.
I think jRobbins has the size of it. While it doesn't really make much sense from the standpoint of user understanding, I can see why the workflow state is showing up the way it is. I can only hope that Sitecore will look to provide a way of addressing this in a more simplistic manner in the future!
By design, the new version of your Item is created in the Initial State of its Template's Workflow, not the state of it's the previous version. Therefore you will not achieve your desired "Changed from Done to Draft" entry in the Item's history.
I agree that "Changed from ? to Draft" is not an accurate entry but I think you may have to live with it unless you want to write some custom code on the function that creates a new item version.
Additionally;
"As an example: I can (wrongly, I believe) set the State field on the Standard Values item for my base template."
You are correct, setting the State field of the Standard Value of the template actually enters that Standard Value Item into workflow itself. You should only be setting "Default workflow".
See this link for more info - http://sdn.sitecore.net/upload/sitecore6/workflow_cookbook_a4.pdf