I'm trying to understand some basic real-world usage of SWPDME, and I'm not sure about best practices:
In an oversimplified example, we want engineers to be able to checkout, modify, and check in documents. Documents will have three simple states; Approved --> Under change --> submit for approval --> (back to Approved).
First, I am assuming you would want the system to require engineers to change state to "Under Change" before allowing Check out. Right? Engineer makes changes, checks back in and then changes state to "submit for Approval". Once in this state, an engineer cannot Check Out. A checker checks documents and changes state to "Approved." Pretty simple (assuming my first assumption is correct).
An Engineer changes state to "Under change" so he/she can check out, but then changes his/her mind. Undoing checkout is easy, but how do you get back to Approved? Allowing Rollback to Engineers seems messy, but I don't see any other way.
Is there a better way to address this scenario?