RELEASE.txt

Path: RELEASE.txt
Last Update: Mon Mar 17 15:33:33 +0900 2008

OpenWFE-ru 0.9.17 released

OpenWFEru is an open source workflow / BPM engine implemented in Ruby.

What‘s new

This release mainly focuses on separating OpenWFEru from its Rufus components [1], lots of code pieces reusable elsewhere have been extracted out of OpenWFEru as Ruby gems.

There has been a lot of work put in simplifying the internals of the engine, nothing changed on the surface though.

The engine.register_participant method now sports a :position optional argument (can be set to :first to insert a participant in the first position).

Process ‘tags’ have been made more visible via the process status (see [2]).

Tomaso provided us with a more compact variant of the ActiveRecord based workitems, requiring less space (but less searchable).

Many changes in OpenWFEru are visible via its demo web application, Densha [3], there is also a new example / tutorial, heavily leveraging Densha, it‘s available at [4].

The nicest new feature visible through Densha is probably "process gardening" where a ‘business process administrator’ can modify running process instances on the fly (see [5]).

Feedback is welcome at : groups.google.com/group/openwferu-users

1
rufus.rubyforge.org/
2
jmettraux.wordpress.com/2007/12/03/state-machine/
3
difference.openwfe.org:3000/
4
openwferu.rubyforge.org/ttt/p0.html
5
jmettraux.wordpress.com/2008/03/10/process-gardening/

What‘s next

  • 1.0 (instead of 0.9.18) ?
  • integration of rufus-verbs
  • write mode for fluo
  • simplification for engine level crons
  • more expressions display support for Densha process definition graphical rendering
  • more vapor

CHANGELOG

  • todo 18861 : aliased ‘restore’ to ‘set-fields’ and turned it into
                   a ValueMixin user - s1617
    
  • todo 18806 : removed require "rubygems" from engine, leaving responsability
                   to customer code - s1610
    
  • todo 18769 : now keeping track of raw_representation for all exps - s1604
  • todo 18773 : implemented engine.update_expression(fexp) - s1601
  • todo 18771 : deprecated SymbolHash (raw expression representation) - s1600
  • todo 18747 : allowing "iterator :on => :f" (symbol for designated source
                   of value) - s1598
    
  • todo 18745 : let [concurrent-]iterator accept on-field, on-var, … - s1597
  • todo 18701 : implemented engine.update_expression_data(fei, d) - s1583
  • bug 18700 : FlowExpressionId.from_h not working with jsonified hashes.
                   Fixed - s1582
    
  • todo 18671 : added is_paused?(wfid) to StatusMixin - s1579
  • bug 18643 : made the workitem search a bit more ‘google-like’ - s1571
  • bug 18580 : active participant last_modified not kept. Fixed - s1568
  • bug 18557 : exp ‘participant’ not replying with applied item to cancel()
                   calls. Fixed - s1552
    
  • todo 18531 : added ‘unapplied’ option to engine.process_stack() - s1547
  • bug 18348 : cron subprocesses subid reset at 0 upon restart. Fixed - s1542
  • bug 18254 : socketlistener not replying with <ok-reply/>. Fixed - s1530
  • bug 18218 : intermittent process_status.paused? failure. Fixed - s1520
  • todo 16635 : allowed recursion for top processes - s1518
  • todo 18192 : dropped SimpleExpRepresentation for Array - s1514
  • todo 18152 : simplified raw_xml and raw_prog to only raw.rb - s1513
  • todo 18110 : switched from open-uri to rufus-verbs for reading [remote]
                   process definitions - s1512
    
  • todo 18145 : moved to no-params constructors for FlowExpression based
                   classes - s1511
    
  • todo 18078 : <break if="${f:f}"/> will now work if field f is set - s1507
  • todo 15813 : isolated ValueMixin and used it in ‘set’, ‘print’, ‘eval’,
                   'reval' and 'log' - s1504
    
  • todo 17888 : optimized Workitem.search() - s1498
  • bug 17873 : ActiveParticipant not accepting string fields with length
                   > 255. Fixed - s1497
    
  • bug 17850 : proc definitions whose 1st line is blank were not accepted.
                   Fixed - s1496
    
  • todo 17851 : caching the paused? process info - s1494
  • todo 17826 : simplified workitem [] and []= impl - s1489
  • todo 17823 : implemented basecamp participant (extras) - s1486
  • todo 17744 : extracted sqs.rb and now depending on gem ‘rufus-sqs’ - s1470
  • patch 17720 : Tomaso‘s workitem.unset_attribute(). Patched - s1466
  • todo 17475 : extracted csv stuff and now depending on gem ‘rufus-decision‘
                   - s1453
    
  • todo 17476 : extracted kotoba.rb and now depending on gem ‘rufus-mnemo‘
                   - s1451
    
  • todo 17472 : extracted safe.rb and now depending on gem ‘rufus-eval’ - s1450
  • todo 17442 : extracted dollar.rb and now depending on gem ‘rufus-dollar‘
                   - s1446
    
  • todo 16658 : extracted scheduler and now depending on gem ‘rufus-scheduler‘
                   - s1444
    
  • todo 17100 : extracted lru and now depending on gem ‘rufus-lru’ - s1440
  • todo 17063 : compact workitems - s1438
  • todo 16976 : allowing compact :var, :v and :f for the ’[un]defined‘
                   expressions - s1434
    
  • todo 16831 : allowing compact :var, :v and :f for :variable and :field
                   (and also :val for :value) (for exp attributes) - s1431
    
  • todo 16825 : implemented the ‘exp’ doppelganger expression - s1429
  • bug 16833 : not using a monitor anymore in the scheduler, relying on
                   queues. Finer granularity, more robust scheduler - s1425
    
  • bug 16791 : subprocess ref="sub_proc" was always looking for "sub-proc".
                   Fixed - s1415
    
  • todo 16654 : allow every jobs to unschedule or reschedule self - s1404
  • todo 16586 : added the ’[ is][ not] set’ concept to the $ notation - s1397
  • todo 16588 : set a min frequency of 0.3s for WaitingExpression impls - s1395
  • todo 16492 : optimized the ‘reserve’ expression - s1390
  • todo 16323 : added wfname() and wfrevision() to ProcessStatus - s1360
  • todo 16254 : relaxed the rules for process name/revision detection
                   in Ruby defined processes - s1347
    
  • todo 16228 : fulldup delegation - s1345
  • todo 16205 : replaced the expstorage each() system with the
                   find_expressions() one - s1344
    
  • todo 16152 : scheduler : made schedule_every() reschedule even if
                   it experienced an exception - s1337
    
  • todo 16066 : require ‘openwfe/engine’ and ‘openwfe/participants’ now ok
                   - s1325
    
  • todo 16040 : implemented ProcessStatus.tags - s1323
  • todo 15925 : implemented engine.get_variables(fei_or_wfid) - s1319
  • todo 15985 : register_participant now has a :position param - s1313
  • todo 15954 : moved ${r:x} eval to safe level 4 - s1305
  • todo 15897 : revised expression_pool.cancel‘s fetch_root - s1298
  • bug 15830 : cancelling a cursor or a loop did not cancel active child
                   expression. Fixed - s1293
    
  • bug 15814 : loop and cursor and no proper environment. Fixed - s1289
  • bug 15793 : hide db_id from user forms - s1287
  • todo 15758 : implemented the ‘eval’ expression - s1278
  • todo 15757 : made sure evaluation of process segments is accepted - s1276

[Validate]