<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Workflow: A Triumph of Hope over Experience</title>
	<atom:link href="http://blog.nakedobjects.org/2007/11/19/workflow-a-triumph-of-hope-over-experience/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.nakedobjects.org/2007/11/19/workflow-a-triumph-of-hope-over-experience/</link>
	<description>Ideas and experiences relating to the Naked Objects framework</description>
	<lastBuildDate>Thu, 01 Apr 2010 10:33:58 +0200</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Sebastián Slutzky</title>
		<link>http://blog.nakedobjects.org/2007/11/19/workflow-a-triumph-of-hope-over-experience/comment-page-1/#comment-4354</link>
		<dc:creator>Sebastián Slutzky</dc:creator>
		<pubDate>Thu, 19 Mar 2009 17:14:27 +0000</pubDate>
		<guid isPermaLink="false">http://blog.nakedobjects.org/2007/11/19/workflow-a-triumph-of-hope-over-experience/#comment-4354</guid>
		<description>Richard,

I think your vision of &quot;workflow&quot; as an utopic target is correct. 

From my experience developing with Naked Objects, I think that even if you try to model a process-driven model (somehow a contradiction), the NOF paradigm will still give more power to the user than the controller (i.e. the process).

Far from dangerous, this proofs to be a very powerful aspect. Turning the user into a mere process follower tends to either fail in the long run (....probably because is not in the homo-sapiens nature...I guess is the same reason why Taylorism doesn&#039;t work either from a human viewpoint). 

Sebastián</description>
		<content:encoded><![CDATA[<p>Richard,</p>
<p>I think your vision of &#8220;workflow&#8221; as an utopic target is correct. </p>
<p>From my experience developing with Naked Objects, I think that even if you try to model a process-driven model (somehow a contradiction), the NOF paradigm will still give more power to the user than the controller (i.e. the process).</p>
<p>Far from dangerous, this proofs to be a very powerful aspect. Turning the user into a mere process follower tends to either fail in the long run (&#8230;.probably because is not in the homo-sapiens nature&#8230;I guess is the same reason why Taylorism doesn&#8217;t work either from a human viewpoint). </p>
<p>Sebastián</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mohammed Salahat, Huddersfield University, UK</title>
		<link>http://blog.nakedobjects.org/2007/11/19/workflow-a-triumph-of-hope-over-experience/comment-page-1/#comment-1160</link>
		<dc:creator>Mohammed Salahat, Huddersfield University, UK</dc:creator>
		<pubDate>Tue, 12 Aug 2008 10:47:33 +0000</pubDate>
		<guid isPermaLink="false">http://blog.nakedobjects.org/2007/11/19/workflow-a-triumph-of-hope-over-experience/#comment-1160</guid>
		<description>To Richard Pawson
Currentley i&#039;m working in a research project (PhD) which combining soft issues and hard issues of the system using SSM &amp; UML. I&#039;m trying to extendthe work to include implementation stage using Naked Objects. The work will model BPM as a workflow system and the output from this stage will be  an input to the implemenation stage using Naked Objects. I&#039;m worry about what you said, but i thing UML Class Diagaram is compatabile with Naked Objects framework. Is it possible or not to implement the class diagram using Naked Objects? Using Naked Objects, can we reach a final running  software system ? Using Naked Objects as an implementation approach, is it possible to jump from asnalysis stage(modelling)to the implementation without proceeding through the design stage?
I will be happy and appreciate your effort if guide me in this issue</description>
		<content:encoded><![CDATA[<p>To Richard Pawson<br />
Currentley i&#8217;m working in a research project (PhD) which combining soft issues and hard issues of the system using SSM &amp; UML. I&#8217;m trying to extendthe work to include implementation stage using Naked Objects. The work will model BPM as a workflow system and the output from this stage will be  an input to the implemenation stage using Naked Objects. I&#8217;m worry about what you said, but i thing UML Class Diagaram is compatabile with Naked Objects framework. Is it possible or not to implement the class diagram using Naked Objects? Using Naked Objects, can we reach a final running  software system ? Using Naked Objects as an implementation approach, is it possible to jump from asnalysis stage(modelling)to the implementation without proceeding through the design stage?<br />
I will be happy and appreciate your effort if guide me in this issue</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ashley McNeile</title>
		<link>http://blog.nakedobjects.org/2007/11/19/workflow-a-triumph-of-hope-over-experience/comment-page-1/#comment-44</link>
		<dc:creator>Ashley McNeile</dc:creator>
		<pubDate>Wed, 21 Nov 2007 22:09:30 +0000</pubDate>
		<guid isPermaLink="false">http://blog.nakedobjects.org/2007/11/19/workflow-a-triumph-of-hope-over-experience/#comment-44</guid>
		<description>I think if you have built systems that have a concept of an atomic unit of update that result in a move from one coherent (i.e., business meaningful) state to another, then you have implemented what I would call events -- whether that&#039;s the name you use when you model/design them or not.

I think my main reason for advocating events as distinguished primitives of design/modelling is the power this gives in terms of composition, and therefore abstraction and reuse, of behaviour (see http://www.metamaxim.com/download/documents/OEPM.pdf ). I haven&#039;t seen anything like this built from the standard notions of OO programming (objects, methods, properties and hierarchical inheritance).

&gt; One of the issues I have with your concept, though, is that it is a tool for simulating 
&gt; the final system. I think your argument would be more powerful, if, as with Naked 
&gt; Objects, the modelling exercise led directly into the delivered system, with full round-
&gt; trip modification.

That&#039;s a fair comment. But I don&#039;t think it is an issue with the *concept* so much as our particular current implementation of it. I see no reason in principle why what you propose could not be done -- although how best to do it is another matter!

Rgds
Ashley</description>
		<content:encoded><![CDATA[<p>I think if you have built systems that have a concept of an atomic unit of update that result in a move from one coherent (i.e., business meaningful) state to another, then you have implemented what I would call events &#8212; whether that&#8217;s the name you use when you model/design them or not.</p>
<p>I think my main reason for advocating events as distinguished primitives of design/modelling is the power this gives in terms of composition, and therefore abstraction and reuse, of behaviour (see <a href="http://www.metamaxim.com/download/documents/OEPM.pdf" rel="nofollow">http://www.metamaxim.com/download/documents/OEPM.pdf</a> ). I haven&#8217;t seen anything like this built from the standard notions of OO programming (objects, methods, properties and hierarchical inheritance).</p>
<p>&gt; One of the issues I have with your concept, though, is that it is a tool for simulating<br />
&gt; the final system. I think your argument would be more powerful, if, as with Naked<br />
&gt; Objects, the modelling exercise led directly into the delivered system, with full round-<br />
&gt; trip modification.</p>
<p>That&#8217;s a fair comment. But I don&#8217;t think it is an issue with the *concept* so much as our particular current implementation of it. I see no reason in principle why what you propose could not be done &#8212; although how best to do it is another matter!</p>
<p>Rgds<br />
Ashley</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Richard Pawson</title>
		<link>http://blog.nakedobjects.org/2007/11/19/workflow-a-triumph-of-hope-over-experience/comment-page-1/#comment-43</link>
		<dc:creator>Richard Pawson</dc:creator>
		<pubDate>Wed, 21 Nov 2007 13:20:46 +0000</pubDate>
		<guid isPermaLink="false">http://blog.nakedobjects.org/2007/11/19/workflow-a-triumph-of-hope-over-experience/#comment-43</guid>
		<description>Yes, exactly.  I have never used process modelling tools or process algebras, although I do have a basic understanding of those approaches.

When I&#039;m working with clients, we strive, DDD style, for an ubiquitous language, where everything in that language translates, very directly, into a construct in the final code --  as you say, into an object, or a property on an object, or a method.  The fact that I have done this on a large scale, and large complexity business models, without ever coming across the need to model an event (in the sense that you use it) combined with the fact that such things wouldn&#039;t anyway translate into any distinct construct within the target (OO) technology platform, is why I can&#039;t see any value in introducing them. (Note that the applications we work on don&#039;t always end up running on Naked Objects  -  sometimes we are using that just for the prototyping  -  but they do always end up being OOP).

I have not (at least in recent years!) fallen into the trap of claiming that pure OO is the only correct (or even the &#039;natural&#039;) representation of the real (business) world.  Just that I have found it to be the most effective.

If the target platform was one in which Events (in the sense you use them) were tangible software constructs, then, of course, it does make sense to seek to capture requirements in terms of events.  One of the issues I have with your concept, though, is that it is a tool for simulating the final system.  I think your argument would be more powerful, if, as with Naked Objects, the modelling exercise led directly into the delivered system, with full round-trip modification.  One of the big advantages we have is that we are effectively modelling in a language (can be Java or C#) that is ultimately capable of implementing, reasonably well, all the requirements of a business system.  My concern about process/event language is that, even though it can be proven at a theoretic algebraic level that they can model all requirements (as can a Turing machine), in practice they are not considered to be comprehensive programming languages.  So you end up having to augment your process/event language with implementations in, what shall we call it, a &#039;pragmatic&#039; programming language.</description>
		<content:encoded><![CDATA[<p>Yes, exactly.  I have never used process modelling tools or process algebras, although I do have a basic understanding of those approaches.</p>
<p>When I&#8217;m working with clients, we strive, DDD style, for an ubiquitous language, where everything in that language translates, very directly, into a construct in the final code &#8212;  as you say, into an object, or a property on an object, or a method.  The fact that I have done this on a large scale, and large complexity business models, without ever coming across the need to model an event (in the sense that you use it) combined with the fact that such things wouldn&#8217;t anyway translate into any distinct construct within the target (OO) technology platform, is why I can&#8217;t see any value in introducing them. (Note that the applications we work on don&#8217;t always end up running on Naked Objects  &#8211;  sometimes we are using that just for the prototyping  &#8211;  but they do always end up being OOP).</p>
<p>I have not (at least in recent years!) fallen into the trap of claiming that pure OO is the only correct (or even the &#8216;natural&#8217;) representation of the real (business) world.  Just that I have found it to be the most effective.</p>
<p>If the target platform was one in which Events (in the sense you use them) were tangible software constructs, then, of course, it does make sense to seek to capture requirements in terms of events.  One of the issues I have with your concept, though, is that it is a tool for simulating the final system.  I think your argument would be more powerful, if, as with Naked Objects, the modelling exercise led directly into the delivered system, with full round-trip modification.  One of the big advantages we have is that we are effectively modelling in a language (can be Java or C#) that is ultimately capable of implementing, reasonably well, all the requirements of a business system.  My concern about process/event language is that, even though it can be proven at a theoretic algebraic level that they can model all requirements (as can a Turing machine), in practice they are not considered to be comprehensive programming languages.  So you end up having to augment your process/event language with implementations in, what shall we call it, a &#8216;pragmatic&#8217; programming language.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ashley McNeile</title>
		<link>http://blog.nakedobjects.org/2007/11/19/workflow-a-triumph-of-hope-over-experience/comment-page-1/#comment-42</link>
		<dc:creator>Ashley McNeile</dc:creator>
		<pubDate>Wed, 21 Nov 2007 12:24:30 +0000</pubDate>
		<guid isPermaLink="false">http://blog.nakedobjects.org/2007/11/19/workflow-a-triumph-of-hope-over-experience/#comment-42</guid>
		<description>Hi Richard

I think I understand your difficulty with &quot;events&quot; better now.

I think my comfort with the notion of event stems from my background in modelling (JSD, Syntropy, Catalysis, etc.) and process algebras (CSP, CCS, etc.) where the concept is well embedded.

It doesn&#039;t have a counterpart in OO programming, so you have to represent an event (in the modelling sense above) as either a method or an object. If this your background/focus, the concept of &quot;event&quot; is probably a bit alien.

Rgds
Ashley

P.S. I haven&#039;t written a book -- but perhaps it&#039;s a good idea!</description>
		<content:encoded><![CDATA[<p>Hi Richard</p>
<p>I think I understand your difficulty with &#8220;events&#8221; better now.</p>
<p>I think my comfort with the notion of event stems from my background in modelling (JSD, Syntropy, Catalysis, etc.) and process algebras (CSP, CCS, etc.) where the concept is well embedded.</p>
<p>It doesn&#8217;t have a counterpart in OO programming, so you have to represent an event (in the modelling sense above) as either a method or an object. If this your background/focus, the concept of &#8220;event&#8221; is probably a bit alien.</p>
<p>Rgds<br />
Ashley</p>
<p>P.S. I haven&#8217;t written a book &#8212; but perhaps it&#8217;s a good idea!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Richard Pawson</title>
		<link>http://blog.nakedobjects.org/2007/11/19/workflow-a-triumph-of-hope-over-experience/comment-page-1/#comment-41</link>
		<dc:creator>Richard Pawson</dc:creator>
		<pubDate>Wed, 21 Nov 2007 09:46:50 +0000</pubDate>
		<guid isPermaLink="false">http://blog.nakedobjects.org/2007/11/19/workflow-a-triumph-of-hope-over-experience/#comment-41</guid>
		<description>Your question confirms my view that we do view events differently, but I don&#039;t think I explained my concept very well. What I meant by &#039;CustomerHasDied&#039; is that somewhere else in the system (or another system) the fact of a customer&#039;s death has been processed (i.e. presumably on the Customer object).  This change is then broadcast (e.g. via P&amp;S) as an event to other objects that might be interested (e.g. schemes paying benefits) which might or might not then act upon that event.  So, in other words, I am not modelling the real-world event of the customer dying, I am modelling an internal event  -  effectively a broadcast message.  Perhaps it would be clearer if I called my event CustomersDeathHasBeenRecorded  -  I was making up the example on the fly!  My example of OrderHasBeenCancelled added to the confusion:  what was in my mind was that this event was generated by another system, on which the order had been cancelled, and this was being notified e.g. to the credit-control or manufacturing systems.

To me Cancel is a method on Order, and withdraw is a method on Account (whether or not they create Cancellation or Withdrawal objects in the process).  I understand that you model cancel and withdraw as events, but I just can&#039;t think of events that way.

My comment about your approach not being OO was possibly too strong  -  but as you say it is not standard OO.  (Ironically, I do think of Naked Objects as being just plain old OO  -  even though everyone else seems to think its very radical!). I certainly don&#039;t have any problem with AOP or the approach of inheritance by mixin instead of by hierarchy  -  that fits very well conceptually with Naked Objects, though we haven&#039;t really used AOP in anger yet.  

I guess it is just this Events thing that is the real blocker for me.  Incidentally, there is no Event concept in Eric Evan&#039;s Domain Driven Design  -  the word doesn&#039;t even feature in the index.  Not that I consider DDD to be any kind of definitive reference (though an increasing number of people seem to) -to me it is just an aspirational idea plus a number of very specific patterns.

I will, however, order and read your book.

Richard</description>
		<content:encoded><![CDATA[<p>Your question confirms my view that we do view events differently, but I don&#8217;t think I explained my concept very well. What I meant by &#8216;CustomerHasDied&#8217; is that somewhere else in the system (or another system) the fact of a customer&#8217;s death has been processed (i.e. presumably on the Customer object).  This change is then broadcast (e.g. via P&#038;S) as an event to other objects that might be interested (e.g. schemes paying benefits) which might or might not then act upon that event.  So, in other words, I am not modelling the real-world event of the customer dying, I am modelling an internal event  &#8211;  effectively a broadcast message.  Perhaps it would be clearer if I called my event CustomersDeathHasBeenRecorded  &#8211;  I was making up the example on the fly!  My example of OrderHasBeenCancelled added to the confusion:  what was in my mind was that this event was generated by another system, on which the order had been cancelled, and this was being notified e.g. to the credit-control or manufacturing systems.</p>
<p>To me Cancel is a method on Order, and withdraw is a method on Account (whether or not they create Cancellation or Withdrawal objects in the process).  I understand that you model cancel and withdraw as events, but I just can&#8217;t think of events that way.</p>
<p>My comment about your approach not being OO was possibly too strong  &#8211;  but as you say it is not standard OO.  (Ironically, I do think of Naked Objects as being just plain old OO  &#8211;  even though everyone else seems to think its very radical!). I certainly don&#8217;t have any problem with AOP or the approach of inheritance by mixin instead of by hierarchy  &#8211;  that fits very well conceptually with Naked Objects, though we haven&#8217;t really used AOP in anger yet.  </p>
<p>I guess it is just this Events thing that is the real blocker for me.  Incidentally, there is no Event concept in Eric Evan&#8217;s Domain Driven Design  &#8211;  the word doesn&#8217;t even feature in the index.  Not that I consider DDD to be any kind of definitive reference (though an increasing number of people seem to) -to me it is just an aspirational idea plus a number of very specific patterns.</p>
<p>I will, however, order and read your book.</p>
<p>Richard</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ashley McNeile</title>
		<link>http://blog.nakedobjects.org/2007/11/19/workflow-a-triumph-of-hope-over-experience/comment-page-1/#comment-40</link>
		<dc:creator>Ashley McNeile</dc:creator>
		<pubDate>Tue, 20 Nov 2007 19:44:48 +0000</pubDate>
		<guid isPermaLink="false">http://blog.nakedobjects.org/2007/11/19/workflow-a-triumph-of-hope-over-experience/#comment-40</guid>
		<description>Richard

Many thanks for your comments.
 
&gt; You use the term ‘Event’ somewhat differently to the way that I use it in my modelling. I 
&gt; use it in a rather narrower sense. To me an ‘event’ is a notification that something has 
&gt; happened somewhere OUTSIDE the system that you are modelling, such as ‘Customer Has 
&gt; Died’, ‘Order Has Been Cancelled’. 

I view events exactly in this manner. I don&#039;t think we differ here at all. However the names you use: &quot;Customer Has Died&quot;, &quot;Order Has Been Cancelled&quot; are really names of states, of Customer and Order respectively. You can tell that they are states because they persist: the predicate &quot;Customer has died&quot; remains true through time. The corresponding event names are, I hope you will agree, &quot;Customer Dies&quot; and &quot;Someone Cancels the Order&quot;; and these are not persistent predicates, so not states.

&gt; So, if I was writing a banking system where I was providing specific functionality for 
&gt; opening accounts, making withdrawals and/or transfers, I would not personally refer to 
&gt; Open, Withdraw or Transfer as ‘Events’. 

Can you tell me what you would regard as &quot;events&quot; in world of Accounts? Surely &quot;Close an Account&quot; is not that different from &quot;Cancel an Order&quot; (which you give above as an example of an event)? They both represent business decisions that result in change to the state of an object represented in the system.

&gt; The issue about involving more than one object is a bit of a red herring, I feel. 

Good. I agree with that.

&gt; Personally, your representation does not resonate with me. 

That&#039;s a pity - as many of our ideas are very similar. In particular, we agree on the main point: the desirability and feasibility of eliminating the &quot;Controller&quot; layer. Perhaps what we are doing is &quot;Naked Events&quot;?

&gt; I also don’t think yours is really an object-oriented representation at all: it is an 
&gt; event-transition representation. 

This is a comment I don&#039;t understand. The  event-transitions are used to model object behaviour, in a good object-oriented way. There are certainly differences between &quot;standard&quot; O-O and what we have been doing, relating mainly to the inheritance model. We have (for very good reasons) adopted a pure mixin approach to inheritance, rather than a hierarchical one. This comes very naturally from our use of CSP (per Tony Hoare) composition as the means of combining partial behavioural descriptions. Other than that, I think we are pretty much in line with O-O.

&gt; I originally read Engineering Science at university, and 90% of the degree seemed to be 
&gt; about considering alternative representations for the same problem space (Laplace 
&gt; transforms, z-transforms and so on).

Mathematics myself (Cambridge). So we have similar background here, and I understand what you are getting at.

&gt; I think that the approach I’ve advocated is gaining a lot of ground, particularly with 
&gt; advent of the Domain Driven Design movement (with which it is very compatible). But new 
&gt; representations emerge all the time: Aspects being in the ascendancy right now.

Indeed. CSP based composition applies very nicely to modelling stateful (behavioural) aspects. And CSP composition allows local (modular) reasoning across composed behavioural descriptions, which in my book is &quot;a must&quot; if you are to retain intellectual control over complexity in the world of Aspects.

I think we both aim to address DDD.

All the best,

Ashley</description>
		<content:encoded><![CDATA[<p>Richard</p>
<p>Many thanks for your comments.</p>
<p>&gt; You use the term ‘Event’ somewhat differently to the way that I use it in my modelling. I<br />
&gt; use it in a rather narrower sense. To me an ‘event’ is a notification that something has<br />
&gt; happened somewhere OUTSIDE the system that you are modelling, such as ‘Customer Has<br />
&gt; Died’, ‘Order Has Been Cancelled’. </p>
<p>I view events exactly in this manner. I don&#8217;t think we differ here at all. However the names you use: &#8220;Customer Has Died&#8221;, &#8220;Order Has Been Cancelled&#8221; are really names of states, of Customer and Order respectively. You can tell that they are states because they persist: the predicate &#8220;Customer has died&#8221; remains true through time. The corresponding event names are, I hope you will agree, &#8220;Customer Dies&#8221; and &#8220;Someone Cancels the Order&#8221;; and these are not persistent predicates, so not states.</p>
<p>&gt; So, if I was writing a banking system where I was providing specific functionality for<br />
&gt; opening accounts, making withdrawals and/or transfers, I would not personally refer to<br />
&gt; Open, Withdraw or Transfer as ‘Events’. </p>
<p>Can you tell me what you would regard as &#8220;events&#8221; in world of Accounts? Surely &#8220;Close an Account&#8221; is not that different from &#8220;Cancel an Order&#8221; (which you give above as an example of an event)? They both represent business decisions that result in change to the state of an object represented in the system.</p>
<p>&gt; The issue about involving more than one object is a bit of a red herring, I feel. </p>
<p>Good. I agree with that.</p>
<p>&gt; Personally, your representation does not resonate with me. </p>
<p>That&#8217;s a pity &#8211; as many of our ideas are very similar. In particular, we agree on the main point: the desirability and feasibility of eliminating the &#8220;Controller&#8221; layer. Perhaps what we are doing is &#8220;Naked Events&#8221;?</p>
<p>&gt; I also don’t think yours is really an object-oriented representation at all: it is an<br />
&gt; event-transition representation. </p>
<p>This is a comment I don&#8217;t understand. The  event-transitions are used to model object behaviour, in a good object-oriented way. There are certainly differences between &#8220;standard&#8221; O-O and what we have been doing, relating mainly to the inheritance model. We have (for very good reasons) adopted a pure mixin approach to inheritance, rather than a hierarchical one. This comes very naturally from our use of CSP (per Tony Hoare) composition as the means of combining partial behavioural descriptions. Other than that, I think we are pretty much in line with O-O.</p>
<p>&gt; I originally read Engineering Science at university, and 90% of the degree seemed to be<br />
&gt; about considering alternative representations for the same problem space (Laplace<br />
&gt; transforms, z-transforms and so on).</p>
<p>Mathematics myself (Cambridge). So we have similar background here, and I understand what you are getting at.</p>
<p>&gt; I think that the approach I’ve advocated is gaining a lot of ground, particularly with<br />
&gt; advent of the Domain Driven Design movement (with which it is very compatible). But new<br />
&gt; representations emerge all the time: Aspects being in the ascendancy right now.</p>
<p>Indeed. CSP based composition applies very nicely to modelling stateful (behavioural) aspects. And CSP composition allows local (modular) reasoning across composed behavioural descriptions, which in my book is &#8220;a must&#8221; if you are to retain intellectual control over complexity in the world of Aspects.</p>
<p>I think we both aim to address DDD.</p>
<p>All the best,</p>
<p>Ashley</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gerald Loeffler</title>
		<link>http://blog.nakedobjects.org/2007/11/19/workflow-a-triumph-of-hope-over-experience/comment-page-1/#comment-39</link>
		<dc:creator>Gerald Loeffler</dc:creator>
		<pubDate>Tue, 20 Nov 2007 16:45:12 +0000</pubDate>
		<guid isPermaLink="false">http://blog.nakedobjects.org/2007/11/19/workflow-a-triumph-of-hope-over-experience/#comment-39</guid>
		<description>i remember having read in a recent infoq interview with you that Naked Objects is one of the most opinionated java frameworks out there. reading your reply i can now see that this not only applies to Naked Objects itself ;-) ...and it think that diversity of memes is absolutely necessary for progress!</description>
		<content:encoded><![CDATA[<p>i remember having read in a recent infoq interview with you that Naked Objects is one of the most opinionated java frameworks out there. reading your reply i can now see that this not only applies to Naked Objects itself <img src='http://blog.nakedobjects.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  &#8230;and it think that diversity of memes is absolutely necessary for progress!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Richard Pawson</title>
		<link>http://blog.nakedobjects.org/2007/11/19/workflow-a-triumph-of-hope-over-experience/comment-page-1/#comment-38</link>
		<dc:creator>Richard Pawson</dc:creator>
		<pubDate>Tue, 20 Nov 2007 14:47:18 +0000</pubDate>
		<guid isPermaLink="false">http://blog.nakedobjects.org/2007/11/19/workflow-a-triumph-of-hope-over-experience/#comment-38</guid>
		<description>Gerald

I am very familiar with these arguments, and I accept that far more people would agree with your position than with mine.

In particular, most people would agree with your statement that &#039;business procss is a very useful scoping mechanism&#039;.  After all, almost every methodology, from waterfall to agile, is &#039;use-case driven&#039;.  But I do not agree with this.  Use-case driven analysis leads to poor object modelling in my experience.  My position on this is that use-cases should be used to validate the object model, not to identify it.  That is a subtle but very important distinction.

I have been in several situations (some documented in the book), where there has been a very strong pro-process lobby.  Indeed I have been many times told that &#039;you can&#039;t possibly model the business without starting from the business processes&#039;.  Or that &#039;the business processes fundamentally ARE the business.&#039;  But we have, and we have succeeded.  The DSFA will confirm that we designed and built their complete Common BOM without anything that resembled a business process representation.  When we were done, another consultancy came in to do the change management programme, and the first thing they did was draw enormous process diagrams that covered the whole wall of a large room.  It added no value and was never ultimately used.  In fact the DSFA&#039;s own conclusion was that this was a much weaker representation of the essence of their business than the BOM itself.

You are not the first person to suggest that the Naked Objects concept could be applied to a (process-like) &#039;higher level abstraction&#039;, but I&#039;ve yet to see anyone do it.  If you do decide to go ahead with it, I would, of course, be very interested to see the results.

Richard</description>
		<content:encoded><![CDATA[<p>Gerald</p>
<p>I am very familiar with these arguments, and I accept that far more people would agree with your position than with mine.</p>
<p>In particular, most people would agree with your statement that &#8216;business procss is a very useful scoping mechanism&#8217;.  After all, almost every methodology, from waterfall to agile, is &#8216;use-case driven&#8217;.  But I do not agree with this.  Use-case driven analysis leads to poor object modelling in my experience.  My position on this is that use-cases should be used to validate the object model, not to identify it.  That is a subtle but very important distinction.</p>
<p>I have been in several situations (some documented in the book), where there has been a very strong pro-process lobby.  Indeed I have been many times told that &#8216;you can&#8217;t possibly model the business without starting from the business processes&#8217;.  Or that &#8216;the business processes fundamentally ARE the business.&#8217;  But we have, and we have succeeded.  The DSFA will confirm that we designed and built their complete Common BOM without anything that resembled a business process representation.  When we were done, another consultancy came in to do the change management programme, and the first thing they did was draw enormous process diagrams that covered the whole wall of a large room.  It added no value and was never ultimately used.  In fact the DSFA&#8217;s own conclusion was that this was a much weaker representation of the essence of their business than the BOM itself.</p>
<p>You are not the first person to suggest that the Naked Objects concept could be applied to a (process-like) &#8216;higher level abstraction&#8217;, but I&#8217;ve yet to see anyone do it.  If you do decide to go ahead with it, I would, of course, be very interested to see the results.</p>
<p>Richard</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gerald Loeffler</title>
		<link>http://blog.nakedobjects.org/2007/11/19/workflow-a-triumph-of-hope-over-experience/comment-page-1/#comment-37</link>
		<dc:creator>Gerald Loeffler</dc:creator>
		<pubDate>Tue, 20 Nov 2007 14:29:38 +0000</pubDate>
		<guid isPermaLink="false">http://blog.nakedobjects.org/2007/11/19/workflow-a-triumph-of-hope-over-experience/#comment-37</guid>
		<description>Richard,

i strongly sympathise with your aversion against &quot;command-and-control&quot;-type management, but i&#039;m afraid that this (rather then true employee empowerment) still is the dominant form of management - regardless of how Naked Objects deals with business processes and workflows.

the fact that business processes are contested at all is because they essentially comprise the true value of an information-oriented business - hence the urge for managers to get them under their control (often with sinistre intentions).

the use of a &quot;Task&quot; object as you describe it is the ad-hoc creation of an element of business processes. nothing inherently wrong with that.

but you *do* lose the other elements of business processes and workflows that can be very useful:

1. the fact that a business process is a very useful scoping mechanism: some entities (aka process variables) are needed during the course of a business process (and need to be persisted because the process is long-lived) but not afterwards.

2. the fact that a business process is a state machine that is a very effective means of capturing/communicating the more coarse-grained flow of information and control amongst objects (or services; but i guess you don&#039;t like that word). your use of &quot;Active&quot; and &quot;Completed&quot; also strongly points into that direction. just like you did it with &quot;Task&quot; it&#039;s probably quite straighforward to create a &quot;BusinessProcess&quot; in an ad-hoc fashion with Naked Objects...

3. contrary to your statement that business processes &quot;do not work in practice&quot; i would argue that many processes do have a very useful default flow - the default transitions in the state machine that the process is. many users may be thankful for a &quot;now proceed as usual&quot;-button that essentially tells the business process to take the default transition. i suppose your argument about business processes &quot;not working&quot; is an argument against to rigidly defined processes transitions.

i must confess that i don&#039;t know how this fits with Naked Objects, other then having a hunch that it is somehow missing as a higher abstraction above the domain model and that Naked Objects and it&#039;s &quot;reflective&quot; UI could very well make good use of workflow-related features, as hinted at above...

  regards,
  gerald</description>
		<content:encoded><![CDATA[<p>Richard,</p>
<p>i strongly sympathise with your aversion against &#8220;command-and-control&#8221;-type management, but i&#8217;m afraid that this (rather then true employee empowerment) still is the dominant form of management &#8211; regardless of how Naked Objects deals with business processes and workflows.</p>
<p>the fact that business processes are contested at all is because they essentially comprise the true value of an information-oriented business &#8211; hence the urge for managers to get them under their control (often with sinistre intentions).</p>
<p>the use of a &#8220;Task&#8221; object as you describe it is the ad-hoc creation of an element of business processes. nothing inherently wrong with that.</p>
<p>but you *do* lose the other elements of business processes and workflows that can be very useful:</p>
<p>1. the fact that a business process is a very useful scoping mechanism: some entities (aka process variables) are needed during the course of a business process (and need to be persisted because the process is long-lived) but not afterwards.</p>
<p>2. the fact that a business process is a state machine that is a very effective means of capturing/communicating the more coarse-grained flow of information and control amongst objects (or services; but i guess you don&#8217;t like that word). your use of &#8220;Active&#8221; and &#8220;Completed&#8221; also strongly points into that direction. just like you did it with &#8220;Task&#8221; it&#8217;s probably quite straighforward to create a &#8220;BusinessProcess&#8221; in an ad-hoc fashion with Naked Objects&#8230;</p>
<p>3. contrary to your statement that business processes &#8220;do not work in practice&#8221; i would argue that many processes do have a very useful default flow &#8211; the default transitions in the state machine that the process is. many users may be thankful for a &#8220;now proceed as usual&#8221;-button that essentially tells the business process to take the default transition. i suppose your argument about business processes &#8220;not working&#8221; is an argument against to rigidly defined processes transitions.</p>
<p>i must confess that i don&#8217;t know how this fits with Naked Objects, other then having a hunch that it is somehow missing as a higher abstraction above the domain model and that Naked Objects and it&#8217;s &#8220;reflective&#8221; UI could very well make good use of workflow-related features, as hinted at above&#8230;</p>
<p>  regards,<br />
  gerald</p>
]]></content:encoded>
	</item>
</channel>
</rss>

