Hello Simcha,
at first, sorry for the late reply, I was "on the road". Thanks for this nice proof of concept.
If I understood correctly, you have
app/participants
app/controller/tasks
app/views/tasks
that gather participants and task customizations.
You're also bringing generators to the table.
I have to say I like it a lot. Torsten told me (IRC) he will have some time tomorrow to have a look at it.
I was wondering if you wanted to continue maintaining this tool and if yes, how we could support you.
One small thing : ruote gets mispelled a lot to "route" ;-)
Thanks again, talk to you soon,
--
John Mettraux - http://jmettraux.wordpress.com
Hello Jan,
it's fixed [hopefully]
https://github.com/jmettraux/ruote/issues/22
Feel free to re-open or to open a new issue if needed.
Many thanks,
Hello,
many thanks for the issue, I will take care of it tomorrow hopefully.
> Next things I am willing to implement are:
> 1. Issue claiming from group and realising back to original group.
> 2. Process versioning => here I am not sure how to do it. I am
> considering use of suffix V1 , V2 in class names or asset names of
> processes, participants and tasks. And to call them based on process
> version number. On one hand it is not looking very nice on the other I
> have no second idea. What you think?
you can do
Ruote.process_definition :name => 'x', :revision => '1.0b' do
end
and then
RuoteKit.engine.processes.each do |pr|
puts "#{pr.definition_name} #{pr.definition_revision}"
end
> 3. Access control based on process.
> 4. Process history and auditing.
https://github.com/jmettraux/ruote/blob/440dc90d4b88ee8ba4de5340b5c7de2f8c34dd75/lib/ruote/log/default_history.rb
https://github.com/jmettraux/ruote/blob/440dc90d4b88ee8ba4de5340b5c7de2f8c34dd75/lib/ruote/log/storage_history.rb
> 5. Some way to render buttons with answers like "yes" "no" instead of
> "proceed" only.
> Based on task definition in the process preferably.
Many many possibilities here. One small example:
https://github.com/jmettraux/quaderno
> 6. Search in task list.
Ruote::StorageParticipant#query
> 7. Way to schedule absences and to redirect tasks assigned to absent
> user both based on schedule and manually by administrator.
>
> Long list but some day...
Good luck !
Kind regards,
Hello,
you're right, but remember that participants (and forms) are sometimes meant to be shared among workflows.
Of course, versioning the set { workflow, participants[, forms] } is a valid solution, there will probably be some duplicates (things that do not change but are still present in the new revision).
Until now, I always worked with processes that changed faster than participants. And participants shared among processes.
This is not directly related, but it could provide some inspiration :
app/forms/{workflow_name}__{workflow_revision}__{task}.haml
app/forms/{workflow_name}__{task}.haml
app/forms/{task}.haml
app/forms/default.haml
It's a scheme for looking up forms in Rails. There is only one human participant which loads forms starting with the most detailed path. As soon as it finds a form, it uses it. default.haml matches always (catch all).
You could think of such a scheme for automated participants
app/participants/{workflow_name}__{workflow_revision}__{participant_name}.rb
app/participants/{workflow_name}__{participant_name}.rb
app/participants/{participant_name}.rb
app/participants/default.rb
(I wonder if I shouldn't provide such an automated participants out of the box, it's very easy to implement... But it becomes a bit harder to manage for multiple workers on multiple hosts, you have to make sure the participants/ folder is in sync)
> For rendering "yes" "no", I did not make clear what I mean. I would
> like the task definition in the process to contain sth. like this:
> junior, :task => "fix pipe", :answers => "fixed, not fixed"
> senior, :task => "fix pipe again", :if => "${f:answer} == fixed"
>
> And render "fixed", "not fixed" buttons in place of "proceed" button.
> I now how to do it technically. But my questions are: Was it done
> before? If yes, are there some custom names and format for that? If
> not do you like the names provided here?
> Hope this time it is clearer.
No, there is no convention for this. Feel free to choose a solution you like.
I always thought that
sequence do
junior, :task => "fix pipe", :answers => "fixed, not fixed"
senior, :task => "fix pipe again", :if => "${f:answer} == fixed"
end
could be reduced to
sequence do
junior, :task => "fix pipe"
senior, :task => "fix pipe again", :if => "${f:answer} == fixed"
end
for greater readability and no loss in understanding.
Of course, if you rely on :answers to build forms, you cannot drop it.
Thanks for the exchange, best regards,
Hello,
then what about
---8<---
["workflow_name","workflow_revision", "participant_name"]
["workflow_name", "participant_name"]
["participant_name", "participant_revision"]
["participant_name"]
catch_all
--->8---
?
Best regards,
Hello,
you're right, let's get back to your initial idea. I will implement something tomorrow.
> By the way I could not reopen issue 23 (don't know how to do it) so I
> added a comment https://github.com/jmettraux/ruote/issues/closed#issue/23/comment/918141
I re-opened it by myself (the "actions" drop down on the top left).
Many thanks,
Days fly.
I didn't forget you. Here is an initial implementation :
https://github.com/jmettraux/ruote/commit/9b8e943b1b1de0fc0834c1efda1a005d16575f59
It lacks #cancel, #accept? and co for now, but I should be able to add them soon.
Feel free to criticize, suggest, ...
Best regards,
Hello,
I've made it complete :
https://github.com/jmettraux/ruote/commit/503d607c45fd59a3429f11cf045bbb9feb055f7f
Now I feel it lacks a way to express things like >= or ~>, it's only = for now (stealing rubygems/bundler language).