| 2010-08-12 02:40:43 utc | brain_in_vat | jmettraux: a workflow is a state machine which may involve different actors! |
| 2010-08-12 02:40:50 utc | brain_in_vat | this is my definition, tell me why it's wrong :) |
| 2010-08-12 02:41:35 utc | jmettraux | why did you use ruote then ? |
| 2010-08-12 02:41:51 utc | jmettraux | there is no state in ruote |
| 2010-08-12 02:42:06 utc | brain_in_vat | well, right now I'm not talking about the preservation of state |
| 2010-08-12 02:42:14 utc | brain_in_vat | and I used ruote for something else (an integration system) |
| 2010-08-12 02:42:29 utc | brain_in_vat | right now I'm thinking about a workflow component for a content framework I'm working on |
| 2010-08-12 02:42:34 utc | jmettraux | a workflow is a [documented] way of achieving a result |
| 2010-08-12 02:42:39 utc | jmettraux | I understand |
| 2010-08-12 02:43:03 utc | brain_in_vat | hrm, that seems too loose a df to me |
| 2010-08-12 02:43:21 utc | brain_in_vat | and what is the difference between a workflow and a state machine ? |
| 2010-08-12 02:43:49 utc | jmettraux | if you produce hammers you manage the state of wooden handles and steel heads |
| 2010-08-12 02:43:59 utc | jmettraux | to which one will you bind the "workflow" ? |
| 2010-08-12 02:44:22 utc | brain_in_vat | the production method |
| 2010-08-12 02:44:34 utc | jmettraux | the production method is the "workflow" |
| 2010-08-12 02:44:45 utc | jmettraux | the documented way to produce a result |
| 2010-08-12 02:44:57 utc | brain_in_vat | yes, but what is the difference to a state machine? |
| 2010-08-12 02:45:15 utc | jmettraux | a state machine is bound to 1 resource |
| 2010-08-12 02:45:17 utc | brain_in_vat | from my thinking, a workflow is a state machine which can involve different actors |
| 2010-08-12 02:45:32 utc | jmettraux | you're managing the state of a unique resource ? |
| 2010-08-12 02:45:52 utc | brain_in_vat | hammers, hyes |
| 2010-08-12 02:46:06 utc | jmettraux | what about steel heads and wooden handles ? |
| 2010-08-12 02:46:23 utc | brain_in_vat | what about the atoms inside of steel heads and wooden handles? |
| 2010-08-12 02:46:24 utc | jmettraux | states = { standalone, in hammer } |
| 2010-08-12 02:46:47 utc | jmettraux | a state machine never cares about actors |
| 2010-08-12 02:46:50 utc | brain_in_vat | there's nothing in the definition of a state machine which mandates that you must break things down into their basic elements, and that a state machine deals with the base element |
| 2010-08-12 02:46:55 utc | brain_in_vat | yeh, that's right |
| 2010-08-12 02:47:04 utc | jmettraux | there are only transition and states |
| 2010-08-12 02:47:09 utc | brain_in_vat | which is where the difference between a workflow and a state machine appears, I think |
| 2010-08-12 02:47:26 utc | jmettraux | work flow is about work not state |
| 2010-08-12 02:48:03 utc | brain_in_vat | that's tautologous |
| 2010-08-12 02:48:36 utc | brain_in_vat | workflow is about processing *something* for the purpose of business, and it involves a state machine |
| 2010-08-12 02:49:05 utc | jmettraux | state or state machine ? |
| 2010-08-12 02:49:06 utc | brain_in_vat | if I want to fill out an annual leave application - i send it into the system, my manager approves it, his manager rejects it |
| 2010-08-12 02:49:12 utc | brain_in_vat | that's a classic workfloiw |
| 2010-08-12 02:49:25 utc | jmettraux | state machines are strong for protocols and lifecycle |
| 2010-08-12 02:49:28 utc | brain_in_vat | it's about the state of the application |
| 2010-08-12 02:49:57 utc | jmettraux | in a hammer factory, what is the application ? |
| 2010-08-12 02:50:09 utc | jmettraux | the state of the application is the state of the factory ? |
| 2010-08-12 02:50:10 utc | brain_in_vat | whatever makes the hammers |
| 2010-08-12 02:50:24 utc | brain_in_vat | well, the factory is, probably |
| 2010-08-12 02:50:28 utc | jmettraux | making hammers or in vacation |
| 2010-08-12 02:51:26 utc | brain_in_vat | I still think a workflow has a state machine |
| 2010-08-12 02:51:33 utc | jmettraux | workflows can be modeled by state machines, but not all state machines are workflows |
| 2010-08-12 02:51:39 utc | brain_in_vat | that's right |
| 2010-08-12 02:51:47 utc | jmettraux | a workflow may manage the state of multiple resources |
| 2010-08-12 02:51:50 utc | brain_in_vat | a workflow is a looser concept |
| 2010-08-12 02:52:16 utc | jmettraux | a documented way of producing a result |
| 2010-08-12 02:52:22 utc | jmettraux | loose enough you said |
| 2010-08-12 02:52:56 utc | brain_in_vat | a documented way of producing a result is too ambiguous I think |
| 2010-08-12 02:53:14 utc | jmettraux | why ? |
| 2010-08-12 02:53:17 utc | brain_in_vat | I would call that a process |
| 2010-08-12 02:53:23 utc | brain_in_vat | well, because a workflow implies a state machine |
| 2010-08-12 02:53:32 utc | jmettraux | why ? |
| 2010-08-12 02:53:36 utc | brain_in_vat | by definition it implies the flow of work |
| 2010-08-12 02:53:50 utc | brain_in_vat | which to me brings it close to a state machine |
| 2010-08-12 02:53:59 utc | jmettraux | the state of what ? |
| 2010-08-12 02:54:06 utc | brain_in_vat | of a work item |
| 2010-08-12 02:54:16 utc | brain_in_vat | the use of the word flow in this way |
| 2010-08-12 02:54:19 utc | brain_in_vat | like a flow chart |
| 2010-08-12 02:54:49 utc | brain_in_vat | it depicts or documents how a work process handles an item to produce a result |
| 2010-08-12 02:55:01 utc | jmettraux | I have to agree that you end up with a powerful workflow if you bind a state machine to a task or a workitem |
| 2010-08-12 02:55:19 utc | brain_in_vat | hrm, yeh, but I just want to nail down definitions |
| 2010-08-12 02:55:19 utc | jmettraux | is it OK with multiple items ? |
| 2010-08-12 02:55:42 utc | brain_in_vat | a workflow? sure, but it's also okay with one item |
| 2010-08-12 02:55:58 utc | jmettraux | you're looking for a state machine library but you're calling it a workflow |
| 2010-08-12 02:56:11 utc | brain_in_vat | like I said, a workflow has a state machine |
| 2010-08-12 02:56:29 utc | jmettraux | http://en.wikipedia.org/wiki/Workflow |
| 2010-08-12 02:56:36 utc | jmettraux | not a word about state in there |
| 2010-08-12 02:57:05 utc | jmettraux | a workflow instance may have multiple workitems each in a different state |
| 2010-08-12 02:57:08 utc | brain_in_vat | hrm. |
| 2010-08-12 02:58:01 utc | brain_in_vat | jmettraux: yes, I still think a workflow has state machines |
| 2010-08-12 02:58:37 utc | brain_in_vat | I think state is implicit in the wikipedia definition |
| 2010-08-12 02:58:58 utc | brain_in_vat | "More abstractly, a workflow is a pattern of activity enabled by a systematic organization of resources, defined roles and mass, energy and information flows, into a work process that can be documented and learned" |
| 2010-08-12 02:59:19 utc | brain_in_vat | those things involve states - like you say a workflow may have many state machines |
| 2010-08-12 02:59:26 utc | brain_in_vat | ah, here's the difference |
| 2010-08-12 02:59:35 utc | jmettraux | so you want to bind a workflow to a folder or a page ? |
| 2010-08-12 02:59:42 utc | brain_in_vat | the definition of a workflow needn't be concerned about state! |
| 2010-08-12 03:00:08 utc | brain_in_vat | yeh, the simplest example is being able to draft or publish a page |
| 2010-08-12 03:00:20 utc | jmettraux | state may be effected by workflow |
| 2010-08-12 03:00:23 utc | brain_in_vat | but someone may come along and add a workflow so the page needs to be approved by several levels of management |
| 2010-08-12 03:00:47 utc | jmettraux | what would the state machine look like ? |
| 2010-08-12 03:01:23 utc | brain_in_vat | page.state == draft; page.publish!; page.state == published |
| 2010-08-12 03:01:32 utc | brain_in_vat | in the easiest example |
| 2010-08-12 03:01:49 utc | jmettraux | so you're not managing the state of a workitem but of a page |
| 2010-08-12 03:01:58 utc | brain_in_vat | a page is a work item |
| 2010-08-12 03:02:18 utc | brain_in_vat | and, also, making it a workflow, is the actor who has the permissions to publish it |
| 2010-08-12 03:02:42 utc | brain_in_vat | brb |
| 2010-08-12 03:11:12 utc | brain_in_vat | back |
| 2010-08-12 03:11:30 utc | jmettraux | back to your initial definition "a workflow is a state machine which may involve different actors!", it implies that non-workflow state machines are single actor |
| 2010-08-12 03:11:40 utc | jmettraux | but there are workflows with a single actor |
| 2010-08-12 03:11:59 utc | brain_in_vat | that's right |
| 2010-08-12 03:14:10 utc | brain_in_vat | I think a better definition is 'a workflow is a reproducible cycle which finalizes an item of work' |
| 2010-08-12 03:15:02 utc | brain_in_vat | and that brings workflows into coincidence with state machines, but also clearly identifies that they not simply concerned about state |
| 2010-08-12 03:15:33 utc | jmettraux | a result is better I think, this last definition implies there is only one item and I suspect you're thinking it's the same item throughout |
| 2010-08-12 03:16:15 utc | brain_in_vat | that's true |
| 2010-08-12 03:16:21 utc | jmettraux | so you think you can model any workflow with a state machine ? |
| 2010-08-12 03:16:38 utc | brain_in_vat | 'a workflow is a reproducible cycle which determines a result' |
| 2010-08-12 03:17:02 utc | brain_in_vat | no, I think can model any workflow with a state machine and other things |
| 2010-08-12 03:17:08 utc | jmettraux | very close to "a workflow is a documented way to produce a result" |
| 2010-08-12 03:17:22 utc | brain_in_vat | the difference is the word 'cycle' |
| 2010-08-12 03:17:38 utc | brain_in_vat | because documenting something doesn't necessarily give you a way to enact it |
| 2010-08-12 03:17:45 utc | jmettraux | that's a very restrictive word |
| 2010-08-12 03:17:47 utc | brain_in_vat | but a workflow is a way of enacting |
| 2010-08-12 03:18:22 utc | jmettraux | but you can own the document describing how to produce hammers, but not have the initial materials |
| 2010-08-12 03:18:35 utc | brain_in_vat | let's agree that an example of a workflow is filing an invoice in a filing cabinet, following a tax system |
| 2010-08-12 03:18:35 utc | jmettraux | you cannot reproduce it, but it's documented |
| 2010-08-12 03:18:46 utc | brain_in_vat | that sound ok? |
| 2010-08-12 03:18:49 utc | jmettraux | ok |
| 2010-08-12 03:19:27 utc | brain_in_vat | ok, so the workflow is not the document explaining how to use the filing cabinet |
| 2010-08-12 03:19:30 utc | jmettraux | a workflow is closer to a recipe |
| 2010-08-12 03:19:44 utc | brain_in_vat | the workflow is the process described by the document |
| 2010-08-12 03:19:52 utc | jmettraux | no a workflow is not a user manual |
| 2010-08-12 03:20:22 utc | brain_in_vat | so, I think the documentation part of your definition can be taken out |
| 2010-08-12 03:20:37 utc | brain_in_vat | which leaves it as |
| 2010-08-12 03:20:44 utc | brain_in_vat | 'a workflow is a way to produce a result' |
| 2010-08-12 03:20:58 utc | jmettraux | you're right |
| 2010-08-12 03:21:07 utc | jmettraux | workflows are not all documented |
| 2010-08-12 03:21:07 utc | brain_in_vat | mine is (after your feedback) 'a workflow is a reproducible cycle to produce a result' |
| 2010-08-12 03:21:22 utc | brain_in_vat | the thing about a workflow is that it must be repeatable |
| 2010-08-12 03:21:34 utc | brain_in_vat | and that it's predictable |
| 2010-08-12 03:21:54 utc | brain_in_vat | so our def.s are very close - but I have 'reproducible cycle' where you have 'way' |
| 2010-08-12 03:22:35 utc | jmettraux | taylor style workflows yes, most workflows knowledge workers care about are hard to predict, there's so many factors involved |
| 2010-08-12 03:23:03 utc | jmettraux | cycle is a bit constrained for me |
| 2010-08-12 03:23:08 utc | brain_in_vat | hrm ok |
| 2010-08-12 03:23:10 utc | brain_in_vat | what would you use? |
| 2010-08-12 03:23:13 utc | jmettraux | way |
| 2010-08-12 03:23:24 utc | jmettraux | reproducible way sounds good |
| 2010-08-12 03:23:49 utc | jmettraux | reproducible could imply 'documented' |
| 2010-08-12 03:24:10 utc | jmettraux | it could imply 'have the capacity and knowledge to reproduce' |
| 2010-08-12 03:24:37 utc | brain_in_vat | yep, cool |
| 2010-08-12 03:25:04 utc | jmettraux | sorry to waste your time |
| 2010-08-12 03:25:19 utc | brain_in_vat | and I think, generally, in software, workflows will often use state machines, though it's not part of the definition of a workflow |
| 2010-08-12 03:25:29 utc | brain_in_vat | no, not a waste, thanks for taking the time to clarify it |
| 2010-08-12 03:25:48 utc | brain_in_vat | cheers :) |
| 2010-08-12 03:25:57 utc | jmettraux | not a waste of time on my side either |
| 2010-08-12 03:26:00 utc | jmettraux | cheers :) |
| 2010-08-12 03:26:39 utc | jmettraux | enjoy your day of coding ! I have to leave |
| 2010-08-12 03:26:42 utc | brain_in_vat | I guess better language would be |
| 2010-08-12 03:27:00 utc | brain_in_vat | 'a workflow is a repeatable way of producing a result' |
| 2010-08-12 03:27:02 utc | brain_in_vat | ok later, cheers |
| 2010-08-12 03:27:16 utc | jmettraux | sounds great :) |
| 2010-08-12 03:28:12 utc | jmettraux | someone in 1832 wrote about it, I extracted quotes in http://jmettraux.wordpress.com/2010/08/06/methodismus/ |
| 2010-08-12 03:28:14 utc | jmettraux | ciao ! |