Content State-Machine-Style Pattern?

I have been looking at different content publication models, and state machine concepts continually come up. But curious to know if there are patterns for state-machine-style usage.

I am not trying to exactly create a “state machine”, but more looking at how some of the state machine flow concepts can be applied to workflow.

Example scenario:

I used something like the workflow of content being published (say on a website). Someone initially creates a content object (the start event) and sets the initial state of the content. Then based on received messages from the client, the state would be updated.

I have tried to keep the picture as simple as possible, so there are certain aspects that are inferred that you would add in practice.

Is there a better way to model this? Other patterns? People’s thoughts?

Thanks

Hi Stephen,

I found that Harel Statecharts had quite a nice mapping to BPMN. In particular I found substates in the statecharts mapped nicely to nested scopes in the bpmn engine…

Harel Statecharts Reference

regards

Rob

@Webcyberrob do you have a bpmn example file of this?

Hi Stephen,

Heres one for bill payment. A bill is in the unpaid or paid states. In the unpaid state there is due and overdue sub-states. Within the due state there is the payment scheduled sub-state etc. Hence hopefully you can see these as nested scopes…

regards

Rob

Given content management implies a more object centered or document-centric approach to process modeling, maybe a CMMN model provides a better illustration? For example, a document’s state may go directly from “published” back to “draft” - this implying a person/worker noticed an error, and outside the context of the process model, set the content’s “review” status to something like “contains errors” (i.e. draft-state).

Now, regardless of the token’s position in our process model, it must jump from “state:published” to “state: draft” - basically representing the need for cross-cutting a BPMN model so that all tasks become reasonably accessible regardless of path. Hence, CMMN is the better solution.

BPMN models tend to “straight-jacket” documents into activities - as described above in an absence of path from “published” to “draft”. Acknowledging that your model doesn’t represent actual activities… though implied given a request for “state-machine-style” (also taking a liberal position for discussion).

Given need for document-centric design (content state machine), we’re looking at case management… (Van der Aalst):

The core features of case handling are:

• avoid context tunneling by providing all information available (i.e., present the case as a whole rather than showing just bits and pieces),

• decide which activities are enabled on the basis of the information available rather than the activities already executed,

• separate work distribution from authorization and allow for additional types of roles, not just the execute role,

• allow workers to view and add/modify data before or after the corresponding activities have been executed (e.g., information can be registered the moment it becomes available).

See:
Van der Aalst, Wil MP, Mathias Weske, and Dolf Grünbauer. “Case handling: a new paradigm for business process support.” Data & Knowledge Engineering 53.2 (2005): 129-162.