Archive for the ‘opensource’ Category
ruote 2.1.11 released
ruote is an open source workflow engine implemented in Ruby.
It takes as input process definitions and interprets them. It routes work among participants according to the flow described in those process definitions. It can orchestrate ping pong matches as well.
The main motivation behind this release is Torsten being tired of advising people to use ruote edge (thanks Bundler) for their ruote-kit installs, ruote was more than ripe for a new release. This version includes the result of the feedback of numerous people, as the changelog can attest.
I’ll address here two aspects, one in ruote itself, and one on its periphery.
participant in a workflow
Up until now, participants were registered one by one (order of registration matters).
engine.register_participant 'reception', Acme::ReceptionParticipant engine.register_participant 'support', Acme::SupportParticipant engine.register_participant '.+', Ruote::StorageParticipant
Torsten came up with an idiomatic solution in ruote-kit, that was soon promoted to ruote itself :
engine.register do reception Acme::ReceptionParticipant support Acme::SupportParticipant catchall end
All is well in a vanilla world were participants are all known at system startup. People were asking about adding participants on-the-fly. Ruote has always been able to do that :
engine.register_participant 'reception2', Acme::ReceptionParticipant, :site => 'two'
but our reception2 gets registered after the catchall participant, and thus might never receive any workitems. A solution would be to place the participant as second to last :
engine.register_participant( 'reception2', Acme::ReceptionParticipant, :site => 'two', :position => -2)
But blindly inserting participants isn’t good. Ruote 2.1.11 has a new method for setting the participant list in a single batch :
engine.participant_list = [
[ '^reception$', 'Acme::ReceptionParticipant', {} ],
[ '^reception2$', 'Acme::ReceptionParticipant', { 'site' => 'two' } ],
[ '^support$', 'Acme::SupportParticipant', {} ],
[ '^.+$', 'Ruote::StorageParticipant', {} ]
]
Very rough, but full control.
ruote in kit
ruote-kit was kind of left behind at version 2.1.8. Torsten and I resumed its development and brought it to 2.1.11.
Ruote-kit is a web administration console for ruote. Kenneth Kalmer’s genius idea was to make it a rack middleware (component), so that it works standalone or fits nicely in a rails application, under /_ruote/
Ruote-kit is more than a web administration console, it’s also an HTTP/JSON based interface to ruote, for example : http://gist.github.com/611044. The entry point of the interface is /_ruote/ all the resources are linked to from this “root”. The links are annotated with “rel” attributes that indicate to clients what stands behind the link.
There is more to it, we’re working on conveying the capabilities of both interfaces HTML / JSON from the HTML (the one that is easily navigated by a human and his browser).
storages got updates
ruote-dm, ruote-redis, ruote-couch have been upgraded to 2.1.11.
Note that there is a piece of documentation on how to implement storages that is in the works as it was requested by people who want to have a MongoDB backend.
next steps
Still have to release an updated ruote-amqp, and bring ruote-beanstalk to 2.1.11. Then it will be time to think about 2.1.12. As said, there is still work to do on ruote-kit, and since it’s used by many ruote people, it deserves full attention.
Many thanks to Eric Platon, Nathan Stults, Asier, Hartog de Mik, Brett Anthoine, Eric Smith, Kaspar Schiess, David Greaves, Rich Meyers, Kenneth Kalmer, Don French and David Goodlad (and many others) for their contributions !
source : http://github.com/jmettraux/ruote
mailing list : http://groups.google.com/group/openwferu-users
doc : http://ruote.rubyforge.org
irc : #ruote on freenode.net
ruote demos and examples
Recently, contributions to ruote have been on the rise.
I’ve listed them on the ruote source page, but here is a small recap :
Torsten is maintaining ruote-on-rails : “A simple example Rails app for demonstrating the usage of ruote in Rails using RuoteKit”.
Eric Dennis has gone a step further with ruote-rails-example, he extended Torsten’s work to add ruote-amqp participants.
David Greaves, in the context of his BOSS project has announced a minimal-ish ruote ruote-amqp setup.
Special kudos as well to David for his ruote overview page in the wiki.
Two other “in the wild” examples of ruote : David Austin‘s qips-wfmgr and Chris Beer‘s fedora-workflow.
Many thanks to all of these people, they are making ruote better.
workflow patterns and open source wfms
Petia Wohed just announced the latest version of Patterns-based Evaluation of Open Source BPM Systems.
Quoting Petia :
This document is a revision and extension of the BPM center report. For those of you, familiar with the earlier report, the technical evaluations has not changed. In the latest version we
have extended the outlook and improved the presentation.
I particularly like the final part of the new document where considerations for users and developers of open source workflow tools are offered.
Congrats to Petia and all the authors, it’s a huge amount of work.
(reminder : Petia just created a Google group about the Workflow Patterns)
rufus-scheduler 1.0.9 released
just released the “rufus-scheduler” 1.0.9 [gem].
It fixes a few bugs, mainly making jobs visible via get_job(job_id) even when they are right in the middle of execution.
It also introduces 4 new shorter aliases : “at”, “in”, “every” and “cron” (to “schedule_at”, “schedule_in”, “schedule_every” and “schedule” respectively) :
require 'rubygems'
require 'rufus/scheduler' # gem 'rufus-scheduler'
scheduler = Rufus::Scheduler.start_new
scheduler.in("3d") do
regenerate_monthly_report()
end
#
# will call the regenerate_monthly_report method
# in 3 days from now
scheduler.every "10m10s" do
# every 10 minutes and 10 seconds
check_score(favourite_team)
end
scheduler.cron "0 22 * * 1-5" do
log.info "activating security system..."
activate_security_system()
end
scheduler.at "Sun Oct 07 14:24:01 +0900 2009" do
init_self_destruction_sequence()
end
Changelog :
- bug #21262 : brought back (proxy) duration_to_f to Rufus::Scheduler
- todo #21251 : added ‘at’, ‘cron’, ‘in’ and ‘every’ shortcut methods
- todo #21203 : keeping track of At and EveryJob until last trigger is over
- todo #20823 : now raising exception in case of bad ‘at’ parameter
- todo #21194 : added trigger_thread to Job class
- todo #21193 : spinned CronLine out to rufus/cronline.rb
- bug #20893 : sometimes unschedule(every_job) not working when job was active (performing). Fixed.
Links :
http://github.com/jmettraux/rufus-scheduler
http://rubyforge.org/projects/rufus/
http://rufus.rubyforge.org/rufus-scheduler/files/README_txt.html
http://groups.google.com/group/rufus-ruby
Thanks to Sean Liu, Adam and Rael for their help.
Fujikawa-san on JRuby at Ninjava
I attended a talk by Kouichi Fujikawa at the June Ninjava meeting.
Was an excellent warm-up before the RubyKaigi 2008.
Sorry for the hashed post, “live blogging” before the post-talk beers.
- Fujikawa-san is working for a company developing finance derivatives trading systems
- had the chance to work with ThoughtWorks China
- went to JavaOne 2008
- met Thomas E Enebo, Charles Oliver Nutter, Nick Sieger, Ola Bini
- JRuby supported by Sun Microsystems (especially Tim Bray) and ThoughtWorks
- JRuby is ‘performant’
- good way to get Ruby into the enterprise
- small demo… (classical JFrame demo)
- leveraging JDBC for database support (many drivers, drivers with connection pooling)
- integration of Java libraries (new systems and legacy services)
- at JavaOne08, Ola Bini presented a SpellCheck java library used in a JRuby on Rails application
- Warbler : turns a Rails app into a Java .war
- JRuby Rack (included in Warbler) integration of the Rack Ruby (low level) web framework
- next some slides courtesy of Nick Sieger
– may JRuby interpreters in 1 JVM
– Glassfish [web] app server
– servlet context initialization creates JRuby runtimes and pool them (acquire/dispatch/release)
- more information :
– http://jruby.org
– book by Ola Bini “Practical JRuby on Rails“
– http://d.hatena.ne.jp/fujibee (japanese, about JRuby and Haskell)
- then questions from the audience :
– Zev asking if threads do really magically make things better (more scalable), answer by Lars was mainly about JRuby being able to leverage ‘native’ threads thus multicore
– questions about JRuby and ObjectSpace (various tries between jirb and irb do follow)
The talk by Fujikawa-san was followed by a presentation of iKnow! by Zev Blut :
- “developing and scaling iKnow!”
- (stopping here as he will present this talk on Sunday at the RubyKaigi)
eclipses thanks to Sun
Tom Copeland just announced :
We’re migrating RubyForge to a new server this evening. This will mean
a spot of downtime for various things, but hopefully not too much.
Thanks to Tim Bray for getting us a nice new server!
Can’t see my project right now, but waiting.
Thanks to Tom for RubyForge and to Tim and Sun for supporting it.
Tom Tim Sun. Dim sum ?
sun day link
Maybe I’ll start to believe when they start promoting Ruby on Rails at JavaOne, as opposed to promoting JRuby on Rails at RailsConf.
Sun’s Ruby strategy – Engage and Contain?
Counter-insurrectional operations led by Sun ? More information soon.
enterprise open source directory
My friends at Optaros have started an enterprise open source directory.
Last year, they had released an open source catalog, as a PDF document, this year, they went far below and are delivering this online directory.
One interesting feature is the request for advice forum, could be good for requesting “meta” help about enterprise-oriented open source software. Not much messages for now, but it seems Optaros has enough experienced staff to handle a heavy question load.
There are already other open source software directories (for example, freshmeat), the EOS Directory brings in study cases and reviews, they try to bring meat around the bones.
I have to say that my current favourite is Ohloh ; a mix between Ohloh and the EOS directory could be good.
Ohloh is more about project metrics and is less enterprisey, whereas the EOS attempts to blend Optaros’ reviews with user generated ones. Ohloh seems to be a company on its own, while for Optaros, their directory is just a tool for showcasing their consultancy work.
I wish them success (please take inspiration or ally with Ohloh).
Once the openwferu on rails is ready (beta), I’ll ask for inclusion in the EOS directory.
and other small coders
IBM announces an interesting initiative today that will make it easier for open source programmers and other small coders to put together a range of software, including Web Services.
From Andy Oram at OnJava. No link to the actual IBM announce.
“other small coders” is quite insulting, I guess it comes from IBM. “patent protection” as always, sounds very ‘cosa nostra’.
omnibus
Very interesting announce by MenTaLguY on Ruby-Talk :
With all the recent interest in Erlang, I’ve decided to bump up the release schedule of my Omnibus Concurrency Library. It provides a Ruby-esque implementation of actors, as well as a few other concurrency approaches (data-parallel programming and futures, to begin with).
…



