lib/openwfe/participants/enoparticipants.rb in ruote-0.9.18 vs lib/openwfe/participants/enoparticipants.rb in ruote-0.9.19
- old
+ new
@@ -1,34 +1,34 @@
#
#--
# Copyright (c) 2007, Alain Hoang and John Mettraux, OpenWFE.org
# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
+#
+# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
-#
+#
# . Redistributions of source code must retain the above copyright notice, this
-# list of conditions and the following disclaimer.
-#
-# . Redistributions in binary form must reproduce the above copyright notice,
-# this list of conditions and the following disclaimer in the documentation
+# list of conditions and the following disclaimer.
+#
+# . Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
-#
+#
# . Neither the name of the "OpenWFE" nor the names of its contributors may be
# used to endorse or promote products derived from this software without
# specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#++
#
#
@@ -44,187 +44,187 @@
require 'openwfe/participants/participants'
module OpenWFE
- #
- # MailParticipant is a simplification of EmailNotificationParticipant.
- #
- # It's initialized in this way :
- #
- # p = MailParticipant.new(
- # :smtp_server => "mailhost.ourcompany.co.jp",
- # :from_address => "bpms@our.ourcompany.co.jp",
- # :template => "Dear ${f:name}, you've got mail")
- #
- # or
- #
- # p = MailParticipant.new(
- # :smtp_server => "mailhost.ourcompany.co.jp",
- # :smtp_port => 25,
- # :from_address => "bpms@our.ourcompany.co.jp"
- # ) do |workitem|
- # s = ""
- # s << "Dear #{workitem.name},\n"
- # s << "\n"
- # s << "it's #{Time.new.to_s} and you've got mail"
- # s
- # end
- #
- # As with EmailNotificationParticipant, the "to" address for your email
- # is taken from the workitem's <tt>email_target</tt> field. So, to have
- # the email sent to "foo@nowhere.com", set your workitem's
- # <tt>email_target</tt> field to "foo@nowhere.com" prior to feeding it
- # to the mail participant.
- #
- # Likewise, you can also override the :from_address value by setting the
- # workitems <tt>email_from</tt> field.
- #
- # When passing the mail template as a block, you have
- # four possible arities :
- # { |workitem| ... }
- # { |participant_expression, workitem| ... }
- # { |participant_expression, participant_instance, workitem| ... }
- # { ... }
- #
- # The smtp server and host default to "127.0.0.1" / 25.
- #
- class MailParticipant
- include LocalParticipant
- include TemplateMixin
+ #
+ # MailParticipant is a simplification of EmailNotificationParticipant.
+ #
+ # It's initialized in this way :
+ #
+ # p = MailParticipant.new(
+ # :smtp_server => "mailhost.ourcompany.co.jp",
+ # :from_address => "bpms@our.ourcompany.co.jp",
+ # :template => "Dear ${f:name}, you've got mail")
+ #
+ # or
+ #
+ # p = MailParticipant.new(
+ # :smtp_server => "mailhost.ourcompany.co.jp",
+ # :smtp_port => 25,
+ # :from_address => "bpms@our.ourcompany.co.jp"
+ # ) do |workitem|
+ # s = ""
+ # s << "Dear #{workitem.name},\n"
+ # s << "\n"
+ # s << "it's #{Time.new.to_s} and you've got mail"
+ # s
+ # end
+ #
+ # As with EmailNotificationParticipant, the "to" address for your email
+ # is taken from the workitem's <tt>email_target</tt> field. So, to have
+ # the email sent to "foo@nowhere.com", set your workitem's
+ # <tt>email_target</tt> field to "foo@nowhere.com" prior to feeding it
+ # to the mail participant.
+ #
+ # Likewise, you can also override the :from_address value by setting the
+ # workitems <tt>email_from</tt> field.
+ #
+ # When passing the mail template as a block, you have
+ # four possible arities :
+ # { |workitem| ... }
+ # { |participant_expression, workitem| ... }
+ # { |participant_expression, participant_instance, workitem| ... }
+ # { ... }
+ #
+ # The smtp server and host default to "127.0.0.1" / 25.
+ #
+ class MailParticipant
+ include LocalParticipant
+ include TemplateMixin
- def initialize (params, &block)
+ def initialize (params, &block)
- @smtp_server = params[:smtp_server]
- @smtp_port = params[:smtp_port]
- @from_address = params[:from_address]
- @template = params[:template]
+ @smtp_server = params[:smtp_server]
+ @smtp_port = params[:smtp_port]
+ @from_address = params[:from_address]
+ @template = params[:template]
- @block_template = block
+ @block_template = block
- # some defaults
+ # some defaults
- @smtp_server = "127.0.0.1" unless @smtp_server
- @smtp_port = 25 unless @smtp_port
- end
+ @smtp_server = "127.0.0.1" unless @smtp_server
+ @smtp_port = 25 unless @smtp_port
+ end
- #
- # The method called each time a workitem reaches this participant
- #
- def consume (workitem)
+ #
+ # The method called each time a workitem reaches this participant
+ #
+ def consume (workitem)
- fe = get_flow_expression(workitem)
- to_address = workitem.email_target
+ fe = get_flow_expression(workitem)
+ to_address = workitem.email_target
- #
- # 1. Expand variables
+ #
+ # 1. Expand variables
- msg = eval_template workitem
+ msg = eval_template workitem
- from_address = workitem.email_from rescue @from_address
+ from_address = workitem.email_from rescue @from_address
- #puts "msg >>>\n#{msg}<<<"
+ #puts "msg >>>\n#{msg}<<<"
- #
- # 2. Send message
+ #
+ # 2. Send message
- Net::SMTP.start(@smtp_server, @smtp_port) do |smtp|
- smtp.send_message(msg, from_address, to_address)
- end
+ Net::SMTP.start(@smtp_server, @smtp_port) do |smtp|
+ smtp.send_message(msg, from_address, to_address)
+ end
- #
- # 3. Reply to engine
+ #
+ # 3. Reply to engine
- reply_to_engine(workitem)
- end
+ reply_to_engine(workitem)
end
+ end
+ #
+ # This participant is used to send an email notification.
+ #
+ # It's perhaps better to use MailParticipant which is simpler to
+ # initialize. This class is anyway an extension of MailParticipant.
+ #
+ # @engine.register_participant(
+ # 'eno',
+ # EmailNotificationParticipant.new(
+ # "googlemail.l.google.com",
+ # 25,
+ # "eno@outoftheblue.co.jp",
+ # """Subject: test 0
+ #
+ # 0 : ${r:Time.new}
+ # 1 : ${f:customer_name}
+ # """))
+ #
+ # And then, from the process definition :
+ #
+ # class TestDefinition0 < OpenWFE::ProcessDefinition
+ # def make
+ # process_definition :name => "test0", :revision => "0" do
+ # sequence do
+ # set :field => 'email_target' do
+ # "whatever56x56@gmail.com"
+ # end
+ # set :field => 'customer_name' do
+ # "Monsieur Toto"
+ # end
+ # participant :ref => 'eno'
+ # end
+ # end
+ # end
+ # end
+ #
+ # The 'template' parameter may contain an instance of File instead of
+ # an instance of String.
+ #
+ # @engine.register_participant(
+ # 'eno',
+ # EmailNotificationParticipant.new(
+ # "googlemail.l.google.com",
+ # 25,
+ # "eno@outoftheblue.co.jp",
+ # File.new("path/to/my/mail/template.txt")))
+ #
+ # You can also define the email template as a Ruby block :
+ #
+ # p = EmailNotificationParticipant.new("googlemail.l.google.com", 25, "eno@co.co.jp") do | flowexpression, participant, workitem |
+ #
+ # # generally, only the workitem is used within a template
+ #
+ # s = ""
+ #
+ # # the header of the message
+ #
+ # s << "Subject: #{workitem.subject}\n\n"
+ #
+ # # then, the body
+ #
+ # workitem.attributes.each do |key, value|
+ # s << "- '#{k}' => '#{value}'\n"
+ # end
+ # s << "\ndone.\n"
+ # end
+ #
+ # Note that the template integrates the subject and requires then a double
+ # newline before the message body.
+ #
+ class EmailNotificationParticipant < MailParticipant
+
#
- # This participant is used to send an email notification.
+ # Create a new email notification participant. Requires
+ # a mail server, port, a from address, and a mail message template
#
- # It's perhaps better to use MailParticipant which is simpler to
- # initialize. This class is anyway an extension of MailParticipant.
- #
- # @engine.register_participant(
- # 'eno',
- # EmailNotificationParticipant.new(
- # "googlemail.l.google.com",
- # 25,
- # "eno@outoftheblue.co.jp",
- # """Subject: test 0
- #
- # 0 : ${r:Time.new}
- # 1 : ${f:customer_name}
- # """))
- #
- # And then, from the process definition :
- #
- # class TestDefinition0 < OpenWFE::ProcessDefinition
- # def make
- # process_definition :name => "test0", :revision => "0" do
- # sequence do
- # set :field => 'email_target' do
- # "whatever56x56@gmail.com"
- # end
- # set :field => 'customer_name' do
- # "Monsieur Toto"
- # end
- # participant :ref => 'eno'
- # end
- # end
- # end
- # end
- #
- # The 'template' parameter may contain an instance of File instead of
- # an instance of String.
- #
- # @engine.register_participant(
- # 'eno',
- # EmailNotificationParticipant.new(
- # "googlemail.l.google.com",
- # 25,
- # "eno@outoftheblue.co.jp",
- # File.new("path/to/my/mail/template.txt")))
- #
- # You can also define the email template as a Ruby block :
- #
- # p = EmailNotificationParticipant.new("googlemail.l.google.com", 25, "eno@co.co.jp") do | flowexpression, participant, workitem |
- #
- # # generally, only the workitem is used within a template
- #
- # s = ""
- #
- # # the header of the message
- #
- # s << "Subject: #{workitem.subject}\n\n"
- #
- # # then, the body
- #
- # workitem.attributes.each do |key, value|
- # s << "- '#{k}' => '#{value}'\n"
- # end
- # s << "\ndone.\n"
- # end
- #
- # Note that the template integrates the subject and requires then a double
- # newline before the message body.
- #
- class EmailNotificationParticipant < MailParticipant
+ def initialize (
+ smtp_server, smtp_port, from_address, template=nil, &block)
- #
- # Create a new email notification participant. Requires
- # a mail server, port, a from address, and a mail message template
- #
- def initialize (
- smtp_server, smtp_port, from_address, template=nil, &block)
+ params = {}
+ params[:smtp_server] = smtp_server
+ params[:smtp_port] = smtp_port
+ params[:from_address] = from_address
- params = {}
- params[:smtp_server] = smtp_server
- params[:smtp_port] = smtp_port
- params[:from_address] = from_address
+ params[:template] = template if template
- params[:template] = template if template
-
- super(params, &block)
- end
+ super(params, &block)
end
+ end
end