<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>processi</title>
	<atom:link href="http://jmettraux.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://jmettraux.wordpress.com</link>
	<description>about processes and engines</description>
	<pubDate>Wed, 14 May 2008 13:15:43 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
	<language>en</language>
			<item>
		<title>workflow vs bpm</title>
		<link>http://jmettraux.wordpress.com/2008/05/12/workflow-vs-bpm/</link>
		<comments>http://jmettraux.wordpress.com/2008/05/12/workflow-vs-bpm/#comments</comments>
		<pubDate>Mon, 12 May 2008 01:00:29 +0000</pubDate>
		<dc:creator>John Mettraux</dc:creator>
		
		<category><![CDATA[bpm]]></category>

		<category><![CDATA[workflow]]></category>

		<guid isPermaLink="false">http://jmettraux.wordpress.com/?p=436</guid>
		<description><![CDATA[I watch (at least) two slices of the blogging cloud (no &#8220;sphere&#8221; today), the &#8220;programmers&#8221; one and the &#8220;business process management&#8221; one.
The term &#8220;workflow&#8221; appears more in the &#8220;programmers&#8221; slice these days, see for example &#8220;My Git Workflow&#8221;.
If you take a look at what&#8217;s currently popular in the &#8220;workflow&#8221; bookmarks, you&#8217;ll see that in the [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I watch (at least) two slices of the blogging cloud (no &#8220;sphere&#8221; today), the &#8220;programmers&#8221; one and the &#8220;business process management&#8221; one.</p>
<p>The term &#8220;workflow&#8221; appears more in the &#8220;programmers&#8221; slice these days, see for example <a href="http://osteele.com/archives/2008/05/my-git-workflow">&#8220;My Git Workflow&#8221;</a>.</p>
<p><a href="http://jmettraux.files.wordpress.com/2008/05/del.png"><img src="http://jmettraux.files.wordpress.com/2008/05/del.png?w=108&h=96" alt="" width="108" height="96" class="alignright size-thumbnail wp-image-437" /></a>If you take a look at what&#8217;s currently <a href="http://del.icio.us/popular/workflow">popular in the &#8220;workflow&#8221; bookmarks</a>, you&#8217;ll see that in the top ten there are 4 items that are not about workflow in the &#8216;pure&#8217; business process management sense. But they qualify as <a href="http://thoughtfulprogrammer.blogspot.com/2008/05/what-is-managed-business-process.html">managed business processes</a> in John Reynolds&#8217; terms, where </p>
<blockquote><p>
If a Process has multiple Participants, at least one of the Participants is Human, and the transitions between the Activities are controlled by an automated system, then it&#8217;s a Managed Business Process.</p></blockquote>
<p>But a person going through the routine of his personal photography workflow is probably not going to call it a &#8220;business process&#8221;.</p>
<p>So what <a href="http://openwferu.rubyforge.org">I do</a> is probably more about <a href="http://www.mmartins.com/mmartins/bpmdetection/bpmdetection.asp">BPM</a>, the term workflow sliding towards &#8220;my own personal work flow&#8221;.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jmettraux.wordpress.com/436/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jmettraux.wordpress.com/436/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jmettraux.wordpress.com/436/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jmettraux.wordpress.com/436/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jmettraux.wordpress.com/436/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jmettraux.wordpress.com/436/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jmettraux.wordpress.com/436/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jmettraux.wordpress.com/436/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jmettraux.wordpress.com/436/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jmettraux.wordpress.com/436/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jmettraux.wordpress.com/436/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jmettraux.wordpress.com/436/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jmettraux.wordpress.com&blog=120793&post=436&subd=jmettraux&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jmettraux.wordpress.com/2008/05/12/workflow-vs-bpm/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/jmettraux-128.jpg" medium="image">
			<media:title type="html">jmettraux</media:title>
		</media:content>

		<media:content url="http://jmettraux.files.wordpress.com/2008/05/del.png?w=108" medium="image" />
	</item>
		<item>
		<title>restful workflow engine (on Sinatra)</title>
		<link>http://jmettraux.wordpress.com/2008/05/07/restful-workflow-engine-on-sinatra/</link>
		<comments>http://jmettraux.wordpress.com/2008/05/07/restful-workflow-engine-on-sinatra/#comments</comments>
		<pubDate>Wed, 07 May 2008 08:49:51 +0000</pubDate>
		<dc:creator>John Mettraux</dc:creator>
		
		<category><![CDATA[bpm]]></category>

		<category><![CDATA[openwferu]]></category>

		<category><![CDATA[rest]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[workflow]]></category>

		<guid isPermaLink="false">http://jmettraux.wordpress.com/?p=427</guid>
		<description><![CDATA[It may seem as an exercise, writing something restful. In the first take, I used Ruby on Rails to wrap OpenWFEru with a RESTful interface.
In this second take, I considered the alternatives among the Ruby web frameworks and went for Sinatra by Blake Mizerany.
Ruote-rest is mainly the result of a collaboration with a company which [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>It may seem as an exercise, writing something restful. In the <a href="http://jmettraux.wordpress.com/2007/12/20/restful-workflow-engine/">first take</a>, I used Ruby on Rails to wrap <a href="http://openwferu.rubyforge.org">OpenWFEru</a> with a RESTful interface.</p>
<p>In this second take, I considered the alternatives among the Ruby web frameworks and went for <a href="http://sinatrarb.com">Sinatra</a> by <a href="http://github.com/bmizerany">Blake Mizerany</a>.</p>
<p>Ruote-rest is mainly the result of a collaboration with a company which is integrating OpenWFEru (ruote) among its .NET applications. Its software artifacts speak XML over HTTP with ruote.</p>
<p>Ruote-rest, as a &#8220;take two&#8221;, is also the refinement of the concepts explored in the take one.</p>
<p>So what&#8217;s this RESTful workflow/BPM engine ?</p>
<p>It&#8217;s named &#8220;ruote-rest&#8221; and it&#8217;s available from GitHub at <a href="http://github.com/jmettraux/ruote-rest">http://github.com/jmettraux/ruote-rest</a>.</p>
<p>It provides for now 3 resources, <tt>/processes</tt>, <tt>/participants</tt> and <tt>/workitems</tt> (and the special <tt>/expressions</tt> resource).</p>
<ul>
<li><tt>/processes</tt> - running [business] process instances</li>
<li><tt>/participants</tt> - participants in the processes (out of the box there are two &#8216;worklist&#8217; participants provided &#8216;alpha&#8217; and &#8216;bravo&#8217;, but you can POST others and DELETE those)</li>
<li><tt>/workitems</tt> - the workitems held by &#8216;worklist&#8217; participants (for human consumption generally)</li>
</ul>
<p>These resources are sufficient for</p>
<ul>
<li>launching processes
<li>fetching workitems, update their payload and let them resume in their business process
<li>canceling part or all of a process
<li>modifying a process on the fly
<li>adding or removing participants to business processes
</ul>
<p>Ruote-rest currently provides two representations of its resources, an XML one and an HTML one. The XML representation is meant for automated consumption, the main case, while the HTML one is meant for learning / debugging.</p>
<p>The installation instructions are in the <a href="http://github.com/jmettraux/ruote-rest/tree/master/README.txt">README.txt</a>, and there is also a <a href="http://rubyforge.org/frs/download.php/36713/ruote-rest-0.9.18pre0.zip">packaged release available</a>.</p>
<p><em> &#8212; warning : boring technical post ahead &#8212; </em></p>
<p><span id="more-427"></span></p>
<p><strong>a resource tour</strong></p>
<p>Let&#8217;s have a look at ruote-rest once it&#8217;s running, through its &#8216;HTML interface&#8217;, which demonstrates the API ruote-rest exposes, via hyperlinks and forms.</p>
<p><a href="http://jmettraux.files.wordpress.com/2008/05/processes.png"><img src="http://jmettraux.files.wordpress.com/2008/05/processes.png?w=108" alt="GET /processes" class="alignleft size-thumbnail wp-image-428" /></a><tt>/processes</tt> enumerates the <strong>processes</strong> currently running in the engine. </p>
<p>New process instances can be launched (POSTed) with the form at the bottom of the HTML representation of <tt>/processes</tt>.</p>
<p>The form shows two ways of providing a process definition to the engine, via an URL (first input box) or by providing the process definition directly (text area). </p>
<p>Let&#8217;s just hit <tt>POST /processes</tt>.</p>
<p><a href="http://jmettraux.files.wordpress.com/2008/05/processes201.png"><img src="http://jmettraux.files.wordpress.com/2008/05/processes201.png?w=128" alt="" width="128" height="53" class="alignleft size-thumbnail wp-image-429" /></a>Ruote-rest answers with an HTTP 201 reply containing a link to the newly created process instance. (The current <a href="http://www.w3.org/Protocols/HTTP/HTRESP.html">HTTP status code</a> is indicated on the top right of the HTML page, most of the time it&#8217;s at 200 OK).</p>
<p><a href="http://jmettraux.files.wordpress.com/2008/05/processes_jitsu.png"><img src="http://jmettraux.files.wordpress.com/2008/05/processes_jitsu.png?w=115" alt="" width="115" height="96" class="alignleft size-thumbnail wp-image-430" /></a>Getting <tt>/processes/20080507-buparijitsu</tt> yields an HTML representation of the running [business] process instance (the workflow instance id being the <tt>20080507-buparijitsu</tt> mentioned in the URI).</p>
<p>This page features links to all the <strong>expressions</strong> (<tt>/expressions/:wfid</tt>) that make up a process instance and to the JSON representation of the process definition itself. </p>
<p>It&#8217;s this representation that is interpreted in <a href="http://difference.openwfe.org:3000">ruote-web</a> when rendering graphically a process definition to some subset of BPMN. (Note that if the process instance got modified &#8220;en route&#8221;, it&#8217;s the process definition as running, not as launched which is returned).</p>
<p>There are two fat submit buttons, one for pausing (or resuming) the process instance (a PUT), and one for terminating (canceling) it altogether (a DELETE).</p>
<p>There is also a link to the &#8220;currently active expression&#8221; in the process (in other words, where the process is currently waiting). If there are concurrent execution paths for the process, there will be multiple &#8220;currently active expressions&#8221;.</p>
<p><a href="http://jmettraux.files.wordpress.com/2008/05/expressions_jitsu.png"><img src="http://jmettraux.files.wordpress.com/2008/05/expressions_jitsu.png?w=103" alt="" width="103" height="96" class="alignleft size-thumbnail wp-image-431" /></a>A process instance is made up of expressions linked in an execution tree. The most common expressions are <em>participant</em>, <em>sequence</em> and <em>concurrence</em>.</p>
<p>The <em>participant</em> expression is used to link the execution of a workflow with an [external] participant, be it a service, a human, a small snip of code, &#8230;</p>
<p>OpenWFEru allows to modify the expressions in a running process instance. It may be necessary for administrative or business purposes (missing plan B maybe).</p>
<p><a href="http://jmettraux.files.wordpress.com/2008/05/expressions_wfid_eid.png"><img src="http://jmettraux.files.wordpress.com/2008/05/expressions_wfid_eid.png?w=128" alt="" width="128" height="88" class="alignleft size-thumbnail wp-image-432" /></a>Expressions are stored in two states : unapplied and applied. Unapplied expressions have not yet been reached by the execution flow, they mainly are stored &#8220;raw&#8221;, uninterpreted (the whole branch they form with their unwound children expression).</p>
<p>The <tt>/expression/:wfid/:expid</tt> page features links back to the process and to the list of all expressions. There are also links to the parent expression, the environment expression (scope) and the children expressions, if any.</p>
<p>At the end of the page, there is a submit button for terminating the expression (cancelling it) (DELETE). If the execution path is located in the branch being terminated, the flow will be resumed after the cancelled branch.</p>
<p><a href="http://jmettraux.files.wordpress.com/2008/05/expressions_wfid_eid_shown.png"><img src="http://jmettraux.files.wordpress.com/2008/05/expressions_wfid_eid_shown.png?w=80" alt="" width="80" height="96" class="alignleft size-thumbnail wp-image-433" /></a>By hitting the <em>show</em> link above the delete button, a text area containing the YAML representation of the expression will be displayed, along with a submit button for PUTting the updated expression back in the workflow engine.</p>
<p>That shows how to update business process instances, on the fly (this subject has been addressed for ruote-web in <a href="http://jmettraux.wordpress.com/2008/03/10/process-gardening/">process gardening</a>). </p>
<p><a href="http://jmettraux.files.wordpress.com/2008/05/workitems_wid.png"><img src="http://jmettraux.files.wordpress.com/2008/05/workitems_wid.png?w=118" alt="" width="118" height="96" class="alignleft size-thumbnail wp-image-434" /></a>Ruote-rest, like <a href="http://difference.openwfe.org:3000">ruote-web</a> integrates a worklist for storing workitems for human consumption (not comestible though).</p>
<p>From the <tt>/workitems</tt>, the page for each individual workitem can be reached. It is also OK to query for the <strong>workitems</strong> belonging to just one process (<tt>/workitems?wfid=20080507-buparijitsu</tt> for example).</p>
<p>The HTML representation of a workitem has a text area containing the current payload of the workitem, as a JSON string, ready for being PUT back. If the &#8220;proceed&#8221; box is checked, the process will resume (with the updated payload).</p>
<p><a href="http://jmettraux.files.wordpress.com/2008/05/participants.png"><img src="http://jmettraux.files.wordpress.com/2008/05/participants.png?w=102" alt="" width="102" height="96" class="alignleft size-thumbnail wp-image-435" /></a>The <tt>/participants</tt> page allows for addition / deletion of <strong>participants</strong>. </p>
<p>It currently only provides the way to add &#8220;active participants&#8221;, ie participants that place workitem in the integrated worklist. Other classes of participants can be added via the <tt>conf/participants.rb</tt> configuration file.</p>
<p><strong>now and then</strong></p>
<p>Ruote-rest is not finished. For example the <tt>/errors</tt> resource is not yet implemented (replaying a business process after an error is something important).</p>
<p>The initial representation is XML, along with HTML for educational purposes. JSON is a must. Why not some AtomPub like Kisha (the &#8220;take one&#8221; approach) included ?<br />
Maybe YAML would be interesting too, for Ruby clients at least.</p>
<p>I&#8217;ve chosen <a href="http://sinatrarb.com">Sinatra</a> because I adhere to its convention :</p>
<pre name="code" class="ruby">

get &quot;/things/:tid&quot; do
    &quot;&lt;p&gt;I&#039;m thing and my name is #{params[:tid]}&lt;/p&gt;&quot;
end
</pre>
<p>On the todo list is also some support for etags and if-modified-since, let&#8217;s make ruote-rest a good, respectful HTTP citizen.</p>
<p>The security stuff is rudimentary for now, here is how it looks :</p>
<pre name="code" class="ruby">

# called before each request gets processed
#
before do

    throw :halt, [ 401, &quot;get off !&quot; ] \
        if request.env[&#039;REMOTE_ADDR&#039;] != &#039;127.0.0.1&#039;
end
</pre>
<p>The company for which ruote-rest is being specifically developed for doesn&#8217;t require any fancy auth mecha. But with Sinatra, they aren&#8217;t that far (see the <a href="http://github.com/jcrosby/so">so project</a> for example or <a href="http://groups.google.com/group/oauth-ruby/search?group=oauth-ruby&amp;q=sinatra">these posts</a>).</p>
<p>Talking about security, the readers will certainly have noticed that the process definition can be fed directly into the engine, that&#8217;s very practical but you have to trust your auth mechanisms&#8230;</p>
<p>For persistence, ruote-rest currently uses the filesystem for the engine itself and a database (via Ruby on Rails&#8217; ActiveRecord) for its worklist.</p>
<p>I&#8217;m thinking about integrating the automatic graphical process rendering found in ruote-web (ex-Densha) into the HTML &#8220;educational pages&#8221;, it would look good and help people understand what&#8217;s going on.</p>
<p><strong>at the github</strong></p>
<p>All this happens at <a href="http://github.com/jmettraux/ruote-rest">http://github.com/jmettraux/ruote-rest</a>, feel free to fork. Find the mailing lists at <a href="http://groups.google.com/groups/dir?lnk=srgmt&amp;q=openwferu">google groups</a>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jmettraux.wordpress.com/427/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jmettraux.wordpress.com/427/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jmettraux.wordpress.com/427/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jmettraux.wordpress.com/427/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jmettraux.wordpress.com/427/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jmettraux.wordpress.com/427/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jmettraux.wordpress.com/427/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jmettraux.wordpress.com/427/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jmettraux.wordpress.com/427/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jmettraux.wordpress.com/427/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jmettraux.wordpress.com/427/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jmettraux.wordpress.com/427/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jmettraux.wordpress.com&blog=120793&post=427&subd=jmettraux&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jmettraux.wordpress.com/2008/05/07/restful-workflow-engine-on-sinatra/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/jmettraux-128.jpg" medium="image">
			<media:title type="html">jmettraux</media:title>
		</media:content>

		<media:content url="http://jmettraux.files.wordpress.com/2008/05/processes.png?w=108" medium="image">
			<media:title type="html">GET /processes</media:title>
		</media:content>

		<media:content url="http://jmettraux.files.wordpress.com/2008/05/processes201.png?w=128" medium="image" />

		<media:content url="http://jmettraux.files.wordpress.com/2008/05/processes_jitsu.png?w=115" medium="image" />

		<media:content url="http://jmettraux.files.wordpress.com/2008/05/expressions_jitsu.png?w=103" medium="image" />

		<media:content url="http://jmettraux.files.wordpress.com/2008/05/expressions_wfid_eid.png?w=128" medium="image" />

		<media:content url="http://jmettraux.files.wordpress.com/2008/05/expressions_wfid_eid_shown.png?w=80" medium="image" />

		<media:content url="http://jmettraux.files.wordpress.com/2008/05/workitems_wid.png?w=118" medium="image" />

		<media:content url="http://jmettraux.files.wordpress.com/2008/05/participants.png?w=102" medium="image" />
	</item>
		<item>
		<title>Pat is a subsversive restafarian</title>
		<link>http://jmettraux.wordpress.com/2008/04/26/pat-is-a-subsversive-restafarian/</link>
		<comments>http://jmettraux.wordpress.com/2008/04/26/pat-is-a-subsversive-restafarian/#comments</comments>
		<pubDate>Sat, 26 Apr 2008 11:17:50 +0000</pubDate>
		<dc:creator>John Mettraux</dc:creator>
		
		<category><![CDATA[bpm]]></category>

		<category><![CDATA[geobpms]]></category>

		<category><![CDATA[rest]]></category>

		<category><![CDATA[workflow]]></category>

		<guid isPermaLink="false">http://jmettraux.wordpress.com/?p=426</guid>
		<description><![CDATA[Sandy almost called the security to get Pat bounced out of Architecture &#38; Process 2008. I&#8217;m joking, she just wondered what was Pat doing there.
If you consider the fact that &#8220;Architecture and Process&#8221; website is hosted at http://www.transformationandinnovation.com, then RESTful BPM is a nice fit for this event.
If you&#8217;re still not convinced, go and read [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Sandy almost called the security to get Pat bounced out of <a href="http://www.transformationandinnovation.com/pages/ArchitectureProcess2008.htm">Architecture &amp; Process 2008</a>. I&#8217;m joking, she just <a href="http://www.column2.com/2008/04/architecture-process-pat-cappelaere/">wondered</a> what was Pat doing there.</p>
<p>If you consider the fact that &#8220;Architecture and Process&#8221; website is hosted at <a href="http://www.transformationandinnovation.com">http://www.transformationandinnovation.com</a>, then RESTful BPM is a nice fit for this event.</p>
<p>If you&#8217;re still not convinced, go and read <a href="http://jasonwoodruff.wordpress.com/2008/04/25/wfxml-r/">Jason&#8217;s reaction</a> and <a href="http://geobliki.com/articles/2008/04/25/architecture-process-what-was-wfxml-r-doing-at-that-conference">Pat&#8217;s reply</a>.</p>
<p>Congrats to Pat Cappelaere for his success with <a href="http://geobliki.com/articles/2008/04/24/restful-wfxml-accepted-by-the-wfmc">RESTful WfXML</a>.</p>
<p>I&#8217;m working on it as well (with my limited vision), after <a href="http://jmettraux.wordpress.com/2007/12/20/restful-workflow-engine/">Kisha</a>, I&#8217;ve moved on  to <a href="http://github.com/jmettraux/ruote-rest">Ruote-Rest</a>.</p>
<p>Too many links.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jmettraux.wordpress.com/426/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jmettraux.wordpress.com/426/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jmettraux.wordpress.com/426/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jmettraux.wordpress.com/426/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jmettraux.wordpress.com/426/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jmettraux.wordpress.com/426/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jmettraux.wordpress.com/426/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jmettraux.wordpress.com/426/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jmettraux.wordpress.com/426/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jmettraux.wordpress.com/426/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jmettraux.wordpress.com/426/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jmettraux.wordpress.com/426/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jmettraux.wordpress.com&blog=120793&post=426&subd=jmettraux&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jmettraux.wordpress.com/2008/04/26/pat-is-a-subsversive-restafarian/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/jmettraux-128.jpg" medium="image">
			<media:title type="html">jmettraux</media:title>
		</media:content>
	</item>
		<item>
		<title>webdavhandler.rb on jruby 1.1[.1]</title>
		<link>http://jmettraux.wordpress.com/2008/04/24/webdavhandlerrb-on-jruby-111/</link>
		<comments>http://jmettraux.wordpress.com/2008/04/24/webdavhandlerrb-on-jruby-111/#comments</comments>
		<pubDate>Thu, 24 Apr 2008 01:46:23 +0000</pubDate>
		<dc:creator>John Mettraux</dc:creator>
		
		<category><![CDATA[jruby]]></category>

		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://jmettraux.wordpress.com/?p=424</guid>
		<description><![CDATA[There is this hidden gem in Ruby land, the webrick webdav handler.
I&#8217;ve been using it to power some webdav accesses to an application here. When the time arrived to upgrade from JRuby 1.1 &#8220;pre from last fall&#8221; to JRuby 1.1[.1], this webdav handler broke.

jmettraux@sonora:~/tmp$ ~/jruby-1.1.1/bin/jruby dav.rb
[2008-04-24 10:09:24] INFO  WEBrick 1.3.1
[2008-04-24 10:09:24] INFO  ruby [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>There is this hidden gem in Ruby land, the <a href="http://redhanded.hobix.com/inspect/webrickWebdavHandlerSafelyExtractedFromTheWild.html">webrick webdav handler</a>.</p>
<p>I&#8217;ve been using it to power some webdav accesses to an application here. When the time arrived to upgrade from JRuby 1.1 &#8220;pre from last fall&#8221; to JRuby 1.1[.1], this webdav handler broke.</p>
<pre style="font-size:12px;">
jmettraux@sonora:~/tmp$ ~/jruby-1.1.1/bin/jruby dav.rb
[2008-04-24 10:09:24] INFO  WEBrick 1.3.1
[2008-04-24 10:09:24] INFO  ruby 1.8.6 (2008-04-22) [java]
[2008-04-24 10:09:24] INFO  WEBrick::HTTPServer#start: pid=3998 port=10080
[2008-04-24 10:09:37] ERROR ArgumentError: wrong number of arguments (4 for 3)
        /home/jmettraux/tmp/./webdavhandler.rb:135:in `chk_utf8&#8242;
        /home/jmettraux/tmp/./webdavhandler.rb:135:in `detect&#8217;
&#8230;
</pre>
<p>Two small changes to webdavhandler.rb fixed this issue and a subsequent issue.</p>
<p>The <a href="http://s3.amazonaws.com/jmettraux/webdavhandler.rb">updated webdavhandler.rb is available</a>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jmettraux.wordpress.com/424/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jmettraux.wordpress.com/424/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jmettraux.wordpress.com/424/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jmettraux.wordpress.com/424/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jmettraux.wordpress.com/424/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jmettraux.wordpress.com/424/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jmettraux.wordpress.com/424/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jmettraux.wordpress.com/424/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jmettraux.wordpress.com/424/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jmettraux.wordpress.com/424/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jmettraux.wordpress.com/424/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jmettraux.wordpress.com/424/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jmettraux.wordpress.com&blog=120793&post=424&subd=jmettraux&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jmettraux.wordpress.com/2008/04/24/webdavhandlerrb-on-jruby-111/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/jmettraux-128.jpg" medium="image">
			<media:title type="html">jmettraux</media:title>
		</media:content>
	</item>
		<item>
		<title>crowdsourcing</title>
		<link>http://jmettraux.wordpress.com/2008/04/08/crowdsourcing/</link>
		<comments>http://jmettraux.wordpress.com/2008/04/08/crowdsourcing/#comments</comments>
		<pubDate>Tue, 08 Apr 2008 00:26:13 +0000</pubDate>
		<dc:creator>John Mettraux</dc:creator>
		
		<category><![CDATA[git]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[rufus]]></category>

		<guid isPermaLink="false">http://jmettraux.wordpress.com/?p=422</guid>
		<description><![CDATA[I&#8217;m just one in the crowd of people moving to Git. More specifically I have moved all my Rufus gems to github.
They are all under http://github.com/jmettraux
Other pieces of software should follow.
What I especially like about Git are forks. It&#8217;s not a crime to fork. That suits well the BSD / MIT licences I favour for [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href='http://github.com'><img src="http://jmettraux.files.wordpress.com/2008/04/octocat_happy.png?w=131&h=110" width="131" height="110" align="right" class="alignnone size-medium wp-image-423" /></a>I&#8217;m just one in the crowd of people moving to Git. More specifically I have moved all my <a href="http://rufus.rubyforge.org">Rufus gems</a> to <a href="http://github.com">github</a>.</p>
<p>They are all under <a href="http://github.com/jmettraux">http://github.com/jmettraux</a></p>
<p>Other pieces of software should follow.</p>
<p>What I especially like about Git are forks. It&#8217;s not a crime to fork. That suits well the BSD / MIT licences I favour for my work. Instead of saying &#8220;no&#8221;, I can say &#8220;please fork&#8221;. For the rest, time will tell.</p>
<p>I&#8217;m planning a release of the <a href="http://github.com/jmettraux/rufus-verbs">rufus-verbs</a> gem very soon.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jmettraux.wordpress.com/422/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jmettraux.wordpress.com/422/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jmettraux.wordpress.com/422/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jmettraux.wordpress.com/422/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jmettraux.wordpress.com/422/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jmettraux.wordpress.com/422/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jmettraux.wordpress.com/422/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jmettraux.wordpress.com/422/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jmettraux.wordpress.com/422/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jmettraux.wordpress.com/422/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jmettraux.wordpress.com/422/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jmettraux.wordpress.com/422/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jmettraux.wordpress.com&blog=120793&post=422&subd=jmettraux&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jmettraux.wordpress.com/2008/04/08/crowdsourcing/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/jmettraux-128.jpg" medium="image">
			<media:title type="html">jmettraux</media:title>
		</media:content>

		<media:content url="http://jmettraux.files.wordpress.com/2008/04/octocat_happy.png" medium="image" />
	</item>
		<item>
		<title>bike geolocation with Ruby and RMagick</title>
		<link>http://jmettraux.wordpress.com/2008/04/01/bike-geolocation-with-ruby-and-rmagick/</link>
		<comments>http://jmettraux.wordpress.com/2008/04/01/bike-geolocation-with-ruby-and-rmagick/#comments</comments>
		<pubDate>Tue, 01 Apr 2008 01:28:29 +0000</pubDate>
		<dc:creator>John Mettraux</dc:creator>
		
		<category><![CDATA[ruby]]></category>

		<category><![CDATA[rufus]]></category>

		<category><![CDATA[scheduling]]></category>

		<guid isPermaLink="false">http://jmettraux.wordpress.com/?p=420</guid>
		<description><![CDATA[I had a pleasant surprise today, Thibaut mailed me about his use of the Rufus::Scheduler in his Paris bike geolocation application, for calling his image generation code every twenty minutes.
Read more about how Thibaut leverages Hpricot and RMagick in his post entitled Data Visualization with Ruby and RMagick - Where Are Those Bikes ?
(Seems like [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://blog.logeek.fr/2008/3/31/data-visualization-with-ruby-and-rmagick-where-are-those-bikes"><img src='http://jmettraux.files.wordpress.com/2008/04/bikes-in-paris.jpg' align="right" /></a>I had a pleasant surprise today, Thibaut mailed me about his use of the <a href="http://rufus.rubyforge.org/rufus-scheduler/">Rufus::Scheduler</a> in his Paris bike geolocation application, for calling his image generation code every twenty minutes.</p>
<p>Read more about how Thibaut leverages Hpricot and RMagick in his post entitled <a href="http://blog.logeek.fr/2008/3/31/data-visualization-with-ruby-and-rmagick-where-are-those-bikes">Data Visualization with Ruby and RMagick - Where Are Those Bikes ?</a></p>
<p>(Seems like I&#8217;m using <a href="http://en.wikipedia.org/wiki/Geolocation">geolocation</a> quite liberally, are those bikes internet devices ? No the docking stations are, they feed their info about bikes availability to their center, which then provides the information via a website)</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jmettraux.wordpress.com/420/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jmettraux.wordpress.com/420/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jmettraux.wordpress.com/420/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jmettraux.wordpress.com/420/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jmettraux.wordpress.com/420/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jmettraux.wordpress.com/420/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jmettraux.wordpress.com/420/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jmettraux.wordpress.com/420/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jmettraux.wordpress.com/420/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jmettraux.wordpress.com/420/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jmettraux.wordpress.com/420/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jmettraux.wordpress.com/420/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jmettraux.wordpress.com&blog=120793&post=420&subd=jmettraux&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jmettraux.wordpress.com/2008/04/01/bike-geolocation-with-ruby-and-rmagick/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/jmettraux-128.jpg" medium="image">
			<media:title type="html">jmettraux</media:title>
		</media:content>

		<media:content url="http://jmettraux.files.wordpress.com/2008/04/bikes-in-paris.jpg" medium="image" />
	</item>
		<item>
		<title>changes for the &#8216;cron&#8217; expression</title>
		<link>http://jmettraux.wordpress.com/2008/03/21/changes-for-the-cron-expression/</link>
		<comments>http://jmettraux.wordpress.com/2008/03/21/changes-for-the-cron-expression/#comments</comments>
		<pubDate>Fri, 21 Mar 2008 15:08:16 +0000</pubDate>
		<dc:creator>John Mettraux</dc:creator>
		
		<category><![CDATA[bpm]]></category>

		<category><![CDATA[openwferu]]></category>

		<category><![CDATA[workflow]]></category>

		<guid isPermaLink="false">http://jmettraux.wordpress.com/?p=418</guid>
		<description><![CDATA[It&#8217;s not a post about the &#8216;cron&#8217; aspect of the Rufus::Scheduler (ex-OpenWFEru::Scheduler), it&#8217;s about the cron expression of OpenWFEru&#8217;s process definition language.
A vanilla use case for the &#8216;cron&#8217; expression, sending a reminder (every 10 minutes) to participant &#8220;toto&#8221; until he finishes the required activity (BPM for slavery) :


  class SampleDefinition &#60; OpenWFE::ProcessDefinition

   [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>It&#8217;s not a post about the &#8216;cron&#8217; aspect of the <a href="http://rufus.rubyforge.org/rufus-scheduler">Rufus::Scheduler</a> (ex-OpenWFEru::Scheduler), it&#8217;s about the cron expression of OpenWFEru&#8217;s process definition language.</p>
<p>A vanilla use case for the &#8216;cron&#8217; expression, sending a reminder (every 10 minutes) to participant &#8220;toto&#8221; until he finishes the required activity (BPM for slavery) :</p>
<pre name="code" class="ruby">

  class SampleDefinition &lt; OpenWFE::ProcessDefinition

    # body of the process
    #
    sequence do
      activity_1
      activity_2
    end

    # subprocess definition
    #
    process_definition :name =&gt; &quot;activity_1&quot; do

      concurrence :count =&gt; 1 do
        # expecting just 1 branch to reply

        participant &quot;toto&quot;
        cron :tab =&gt; &quot;10 * * * *&quot; do # every 10 mn
          send_reminder :to =&gt; &quot;toto@localpub.co.uk&quot;
        end
      end
    end

    # ...
  end
</pre>
<p>Up until now (OpenWFEru 0.9.17 included), the <a href="http://openwferu.rubyforge.org/expressions.html#exp_cron">cron expression</a> relied on the variable system for storing its schedule (and eventually get rescheduled in case of engine restart). Schedules bound at the engine level are meant to last longer than the business process that initiated them. </p>
<p>The initial implementation worked fine. Two problems though : </p>
<p>1) this &#8220;bound at the engine level&#8221; was implemented as a special case, that made the code more complex, more prone to errors</p>
<p><a href='http://jmettraux.files.wordpress.com/2008/03/sshot.png' title='business process administration'><img src='http://jmettraux.files.wordpress.com/2008/03/sshot.thumbnail.png' alt='business process administration' align="right"></a>2) the biggest problem : engine level &#8220;crons&#8221; were thus sitting in the engine environment as variable values and were not cancelable without a tedious manipulation (basically launching a process that erased the engine variable or stopping the engine, editing the engine env and restarting the engine).</p>
<p>The improved process administration console of <a href="http://difference.openwfe.org:3000" title="demonstration of OpenWFEru (wrapped in a RubyOnRails application)">Densha</a> revealed acutely this &#8220;can&#8217;t cancel cron&#8221; issue. That called for a change.</p>
<p>This initial implementation of &#8216;cron&#8217; was immediately replying to the parent expression after &#8220;hiding&#8221; itself in the among the local variables (or the engine variables). </p>
<p>The new implementation blocks until cancelled, hence the example process definition at the top of this post, where the concurrence expression, upon receiving a reply from its &#8220;participant toto&#8221; branch cancels the remaining &#8220;cron&#8221; branch.</p>
<p>If you want a cron that outlasts its initiating process, you now have to wrap it in a [sub]process. This subprocess will be visible to the process administrators, like any other process, thus easily manageable.</p>
<p>(That reminds me I have to dig the BPMN spec to find decent graphical representations for the cron, the <a href="http://openwferu.rubyforge.org/expressions.html#exp_when">when</a> and the <a href="http://openwferu.rubyforge.org/expressions.html#exp_sleep">sleep</a> expressions).</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jmettraux.wordpress.com/418/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jmettraux.wordpress.com/418/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jmettraux.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jmettraux.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jmettraux.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jmettraux.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jmettraux.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jmettraux.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jmettraux.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jmettraux.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jmettraux.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jmettraux.wordpress.com/418/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jmettraux.wordpress.com&blog=120793&post=418&subd=jmettraux&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jmettraux.wordpress.com/2008/03/21/changes-for-the-cron-expression/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/jmettraux-128.jpg" medium="image">
			<media:title type="html">jmettraux</media:title>
		</media:content>

		<media:content url="http://jmettraux.files.wordpress.com/2008/03/sshot.thumbnail.png" medium="image">
			<media:title type="html">business process administration</media:title>
		</media:content>
	</item>
		<item>
		<title>OpenWFEru 0.9.17 released</title>
		<link>http://jmettraux.wordpress.com/2008/03/17/openwferu-0917-released/</link>
		<comments>http://jmettraux.wordpress.com/2008/03/17/openwferu-0917-released/#comments</comments>
		<pubDate>Mon, 17 Mar 2008 15:29:48 +0000</pubDate>
		<dc:creator>John Mettraux</dc:creator>
		
		<category><![CDATA[bpm]]></category>

		<category><![CDATA[bpms]]></category>

		<category><![CDATA[openwferu]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[workflow]]></category>

		<guid isPermaLink="false">http://jmettraux.wordpress.com/?p=416</guid>
		<description><![CDATA[Writing documentation can be painful, but it&#8217;s a necessity. So my main task these days about OpenWFEru is writing down an example, it&#8217;s about the Tea Testing Team. This piece of documentation is not yet complete, but it might be a good start.
The example is based on the latest Densha, a Ruby on Rails based [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href='http://jmettraux.files.wordpress.com/2008/03/process1.png' title='process1.png'><img src='http://jmettraux.files.wordpress.com/2008/03/process1.thumbnail.png' align="right" /></a>Writing documentation can be painful, but it&#8217;s a necessity. So my main task these days about OpenWFEru is writing down an example, it&#8217;s about the <a href="http://openwferu.rubyforge.org/ttt/p0.html">Tea Testing Team</a>. This piece of documentation is not yet complete, but it might be a good start.</p>
<p>The example is based on the latest Densha, a Ruby on Rails based web application wrapping a workflow / BPM engine. It adds a small worklist implemented thanks to ActiveRecords, that makes a quite decent <strong>BPMS</strong> (business process management system). So this eye-candy Densha is used in the Tea Testing example to demonstrate what OpenWFEru is about.</p>
<p>(Somehow, supporting this example is the main motivation behind this release of OpenWFEru + Densha 0.9.17)</p>
<p>There is an online <strong>demonstration</strong> of Densha at <a href="http://difference.openwfe.org:3000">http://difference.openwfe.org:3000</a>. </p>
<p>I&#8217;ve written before about the main feature this 0.9.17 Densha brings, I labeled it <a href="http://jmettraux.wordpress.com/2008/03/10/process-gardening/">process gardening</a>, cancelling pieces of business process instances. Well, the 0.9.17 goes a bit further, you can download as yaml a part of a process instance, modify it, then reload it in the engine&#8230; Business process modifications on the fly (these are admin features, you don&#8217;t want your users to directly modify process instances, whatever their IT literacy level is).</p>
<p>Densha has a &#8216;fluo&#8217; component, it&#8217;s a javascript library that turns the process definitions into <strong>graphical process representation</strong> (the graphical notation used is BPMN, as far as possible). It&#8217;s implemented in javascript so it can be reused in other web interfaces, whatever the web framework (or the language).</p>
<p>It&#8217;s one of my goals to provide soon a web process designer leveraging this &#8216;fluo&#8217; javascript library.</p>
<p>For the edition of workitem payloads, Densha uses a very limited forms system, just string and hashes. It should be enhanced a bit in the upcoming releases, but I shall write soon documentation on how to use custom forms (up to one custom form per activity / participant). It would be nice to have xforms as well.</p>
<p>Densha itself is not meant to be a state of the art Ruby on Rails application, it&#8217;s rather an example, a proof of concept and others have already used pieces of it (or simply as an <strong>inspiration</strong>) for building their own systems. </p>
<p>OpenWFEru shall reach 1.0 soon. I&#8217;d like to work on a few simplifications before that, then it will be ready.</p>
<p>The quickstart for OpenWFEru is available at : <a href="http://openwferu.rubyforge.org/quickstart.html">http://openwferu.rubyforge.org/quickstart.html<br />
</a><br />
The quickstart for Densha is at : <a href="http://openwferu.rubyforge.org/rquickstart.html">http://openwferu.rubyforge.org/rquickstart.html</a></p>
<p>As always, feedback is welcome on the <a href="http://groups.google.com/group/openwferu-users">OpenWFEru users</a> mailing list.</p>
<p>Incidentally, this is my 300th post. Long way.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jmettraux.wordpress.com/416/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jmettraux.wordpress.com/416/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jmettraux.wordpress.com/416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jmettraux.wordpress.com/416/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jmettraux.wordpress.com/416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jmettraux.wordpress.com/416/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jmettraux.wordpress.com/416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jmettraux.wordpress.com/416/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jmettraux.wordpress.com/416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jmettraux.wordpress.com/416/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jmettraux.wordpress.com/416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jmettraux.wordpress.com/416/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jmettraux.wordpress.com&blog=120793&post=416&subd=jmettraux&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jmettraux.wordpress.com/2008/03/17/openwferu-0917-released/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/jmettraux-128.jpg" medium="image">
			<media:title type="html">jmettraux</media:title>
		</media:content>

		<media:content url="http://jmettraux.files.wordpress.com/2008/03/process1.thumbnail.png" medium="image" />
	</item>
		<item>
		<title>rufus-scheduler 1.0.5</title>
		<link>http://jmettraux.wordpress.com/2008/03/17/rufus-scheduler-105/</link>
		<comments>http://jmettraux.wordpress.com/2008/03/17/rufus-scheduler-105/#comments</comments>
		<pubDate>Mon, 17 Mar 2008 04:14:49 +0000</pubDate>
		<dc:creator>John Mettraux</dc:creator>
		
		<category><![CDATA[ruby]]></category>

		<category><![CDATA[rufus]]></category>

		<category><![CDATA[scheduling]]></category>

		<guid isPermaLink="false">http://jmettraux.wordpress.com/?p=415</guid>
		<description><![CDATA[Just released rufus-scheduler 1.0.5 (the sequel to the &#8220;openwferu-scheduler&#8221;), it features a best effort drift correction and a constraint on the scheduler precision (0.0 &#60; p  &#60;= 1.0), for precisions other than the default 0.250 (4 times per second).
Thanks to Michael Goth for his feedback.
Now back to my usual workflow / BPM stuff.
  [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Just released <a href="http://rufus.rubyforge.org/rufus-scheduler">rufus-scheduler</a> 1.0.5 (the sequel to the &#8220;openwferu-scheduler&#8221;), it features a best effort drift correction and a constraint on the scheduler precision (0.0 &lt; p  &lt;= 1.0), for precisions other than the default 0.250 (4 times per second).</p>
<p>Thanks to Michael Goth for his feedback.</p>
<p>Now back to my usual <a href="http://difference.openwfe.org:3000/">workflow / BPM stuff</a>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jmettraux.wordpress.com/415/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jmettraux.wordpress.com/415/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jmettraux.wordpress.com/415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jmettraux.wordpress.com/415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jmettraux.wordpress.com/415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jmettraux.wordpress.com/415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jmettraux.wordpress.com/415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jmettraux.wordpress.com/415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jmettraux.wordpress.com/415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jmettraux.wordpress.com/415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jmettraux.wordpress.com/415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jmettraux.wordpress.com/415/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jmettraux.wordpress.com&blog=120793&post=415&subd=jmettraux&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jmettraux.wordpress.com/2008/03/17/rufus-scheduler-105/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/jmettraux-128.jpg" medium="image">
			<media:title type="html">jmettraux</media:title>
		</media:content>
	</item>
		<item>
		<title>process gardening</title>
		<link>http://jmettraux.wordpress.com/2008/03/10/process-gardening/</link>
		<comments>http://jmettraux.wordpress.com/2008/03/10/process-gardening/#comments</comments>
		<pubDate>Mon, 10 Mar 2008 04:32:19 +0000</pubDate>
		<dc:creator>John Mettraux</dc:creator>
		
		<category><![CDATA[bpm]]></category>

		<category><![CDATA[bpms]]></category>

		<category><![CDATA[openwferu]]></category>

		<category><![CDATA[workflow]]></category>

		<guid isPermaLink="false">http://jmettraux.wordpress.com/?p=411</guid>
		<description><![CDATA[My current objective is the release of OpenWFEru 0.9.17. There are many changes in the engine itself, but not much on its &#8220;interface&#8221;. There is however an interface that changed a lot, it&#8217;s the one of the [demo] web application around OpenWFEru.
The 0.9.16 release of this Densha web application features limited process administration capabilities : [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>My current objective is the release of OpenWFEru 0.9.17. There are many changes in the engine itself, but not much on its &#8220;interface&#8221;. There is however an interface that changed a lot, it&#8217;s the one of the <a href="http://difference.openwfe.org:3000">[demo] web application</a> around OpenWFEru.</p>
<p><a href='http://jmettraux.files.wordpress.com/2008/03/processes.png' title='processes.png'><img src='http://jmettraux.files.wordpress.com/2008/03/processes.thumbnail.png' align="left" /></a>The 0.9.16 release of this Densha web application features limited process administration capabilities : pausing/resuming a process instance, cancelling it.</p>
<p>&#8220;this business process instance has gone wrong, we have to cancel it&#8221;</p>
<p>The upcoming 0.9.17 release (already deployed on the <a href="http://difference.openwfe.org:3000">demo web site</a>) adds batch pausing / cancellation of processes and also some &#8220;process gardening&#8221; tools.</p>
<p><a href='http://jmettraux.files.wordpress.com/2008/03/process.png' title='process.png'><img src='http://jmettraux.files.wordpress.com/2008/03/process.thumbnail.png' align="left" /></a>Process instances being execution trees, I&#8217;ve made it easy to chop off some branches (currently executing or not yet executed).</p>
<p>The [process] administrator can browse the execution tree of a running process instance and chop off (cancel) branches of it.</p>
<p>&#8220;this segment of this business process instance is not required any more, let&#8217;s remove it&#8221;</p>
<p><a href='http://jmettraux.files.wordpress.com/2008/03/process_1.png' title='process_1.png'><img src='http://jmettraux.files.wordpress.com/2008/03/process_1.thumbnail.png' align="left" /></a>The web interface also allows modifying the process variables directly. </p>
<p>Workitems waiting in participant expressions are editable as well (though they could get overriden by the workitem coming back from the participant itself). Modifying the workitem waiting in a sleep expression might be more useful.</p>
<p>The next step for these process gardening tools will be the edition (instead of pure removal) of process branches. It&#8217;s already possible programmatically, but packaging that into a web interface is a hard task (will probably have to implement that process designer before). 0.9.17 will probably sport a primitive interface for process modification on the fly.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jmettraux.wordpress.com/411/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jmettraux.wordpress.com/411/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jmettraux.wordpress.com/411/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jmettraux.wordpress.com/411/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jmettraux.wordpress.com/411/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jmettraux.wordpress.com/411/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jmettraux.wordpress.com/411/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jmettraux.wordpress.com/411/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jmettraux.wordpress.com/411/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jmettraux.wordpress.com/411/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jmettraux.wordpress.com/411/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jmettraux.wordpress.com/411/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jmettraux.wordpress.com&blog=120793&post=411&subd=jmettraux&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jmettraux.wordpress.com/2008/03/10/process-gardening/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/jmettraux-128.jpg" medium="image">
			<media:title type="html">jmettraux</media:title>
		</media:content>

		<media:content url="http://jmettraux.files.wordpress.com/2008/03/processes.thumbnail.png" medium="image" />

		<media:content url="http://jmettraux.files.wordpress.com/2008/03/process.thumbnail.png" medium="image" />

		<media:content url="http://jmettraux.files.wordpress.com/2008/03/process_1.thumbnail.png" medium="image" />
	</item>
	</channel>
</rss>