On Thu, May 13, 2010 at 07:51:35PM -0700, eric woo wrote:
>
> ruote is a great workflow engine, but i found the participant is not
> Meet my needs.
>
> i want to get the participant from the database table,not from the
> programm.
Hello Eric,
if you want to store workitems in a database, you should use "ruote-dm"
http://github.com/jmettraux/ruote-dm
Here is some code : (also at
http://gist.github.com/400761)
---8<---
require 'rubygems'
require 'json' # gem install json
require 'ruote'
require 'ruote-dm' # gem install ruote-dm
#DataMapper.setup(:default, 'sqlite3::memory:')
#DataMapper.setup(:default, 'sqlite3:ruote_test.db')
DataMapper.setup(:default, 'postgres://localhost/ruote_test')
#Ruote::Dm::Document.all.destroy!
# cleans up the ruote database before running
engine = Ruote::Engine.new(
Ruote::Worker.new(
Ruote::Dm::DmStorage.new(:default)))
sp = engine.register_participant '.+', Ruote::StorageParticipant
pdef = Ruote::process_definition do
sequence do
eric
john
end
end
# launch a process instance
#engine.context.logger.noisy = true
engine.launch(pdef)
sleep 1
# display workitems
puts '-' * 80
sp.all.each do |wi|
p [ wi.participant_name, wi.fields ]
end
# manipulate one workitem
wi = sp.first
wi.fields['hello'] = 'world'
sp.reply(wi)
sleep 1
# display workitems
puts '-' * 80
sp.all.each do |wi|
p [ wi.participant_name, wi.fields ]
end
# ...
--->8---
> and i want to says if the participant just like workflow role?
Sorry I don't understand this question.
Maybe this chat extract could help :
---8<---
11:40 hansen_: how to build the relation between people and participant?
11:40 jmettraux: use a storage participant
11:41 jmettraux: then in your rails application use some logic to decide which user has the right to view which workitem
11:43 jmettraux: RuoteKit.storage_participant.by_participant('review')
11:43 jmettraux: will return all the workitems where participant name is "review"
11:43 jmettraux: these are just examples
11:46 jmettraux: another technique is to have participant names mapped to groups of people
11:46 jmettraux: and then have a workitem field named 'user'
11:46 jmettraux: when this field is empty it means that the workitem is not assigned to a user...
11:46 jmettraux: there are many techniques, your imagination is the limit
--->8---
Welcome in this mailing list and best regards,
--
John Mettraux -
http://jmettraux.wordpress.com