⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mailnotifiedparticipant.java

📁 一个工作流设计及定义的系统,可以直接与数据库结合进行系统工作流程的定义及应用.
💻 JAVA
字号:
/* * Copyright (c) 2005, John Mettraux, OpenWFE.org * All rights reserved. *  * 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  *   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  * POSSIBILITY OF SUCH DAMAGE. * * $Id: MailNotifiedParticipant.java,v 1.5 2005/07/05 17:25:22 jmettraux Exp $ *///// MailNotifiedParticipant.java//// john.mettraux@openwfe.org//// generated with // jtmpl 1.1.01 2004/05/19 (john.mettraux@openwfe.org)//package openwfe.org.engine.impl.participants;import javax.mail.Message;import javax.mail.Session;//import javax.mail.Transport;import javax.mail.MessagingException;import javax.mail.internet.MimeMessage;import javax.mail.internet.InternetAddress;import org.apache.velocity.Template;import org.apache.velocity.VelocityContext;import org.apache.velocity.app.Velocity;import openwfe.org.Utils;import openwfe.org.MapUtils;import openwfe.org.ApplicationContext;import openwfe.org.mail.MailUtils;import openwfe.org.engine.workitem.WorkItem;import openwfe.org.engine.workitem.InFlowWorkItem;import openwfe.org.engine.workitem.AttributeUtils;import openwfe.org.engine.workitem.StringAttribute;import openwfe.org.engine.dispatch.DispatchingException;import openwfe.org.engine.expressions.FlowExpressionId;import openwfe.org.engine.participants.ParticipantMap;import openwfe.org.engine.participants.LeafParticipant;/** * A participant that also receives an email notification when a workitem * is applied to it. * * <p><font size=2>CVS Info : * <br>$Author: jmettraux $ * <br>$Id: MailNotifiedParticipant.java,v 1.5 2005/07/05 17:25:22 jmettraux Exp $ </font> * * @author john.mettraux@openwfe.org */public class MailNotifiedParticipant    extends LeafParticipant{    private final static org.apache.log4j.Logger log = org.apache.log4j.Logger        .getLogger(MailNotifiedParticipant.class.getName());    //    // CONSTANTS & co    /**     * Use this parameter ('template') to tell the participant which text     * template file it should use in order to generate the mail message     * to send.     */    public final static String P_TEMPLATE        = "template";    private final static String DEFAULT_TEMPLATE        = "This is a notification :\n you received an OpenWFE workitem ('${__subject__}')";    /**     * Use this parameter ('recipient-field') to tell the participant which      * field of the applied workitem contains the recipient (or recipient list)     * for the notification email.     */    public final static String P_RECIPIENT_FIELD        = "recipient-field";    /**     * The default recipient workitem field is "__recipient__"     */    public final static String DEFAULT_RECIPIENT_FIELD        = "__recipient__";    /* *     * Use this parameter ('smtp-host') to tell the participant which      * mail server it should use to send the notification email     * /    public final static String P_SMTP_SERVER        = "smtp-server";    /* *     * Use this parameter ('smtp-port') to tell the participant which port     * of the mail server it should use to send the notification email     * /    public final static String P_SMTP_PORT        = "smtp-port";    /**     * Use this parameter ('mail-from') to indicate who should be the     * apparent author of the notification email     */    public final static String P_MAIL_FROM        = "mail-from";    /**     * Use this participant parameter named 'mail-encoding' to set the      * encoding to use for generating emails.     * By default, iso-8859-1 is used.     */    public final static String P_MAIL_ENCODING        = "mail-encoding";    /*     * By default, emails are encoded using iso-8859-1     */    private final static String DEFAULT_MAIL_ENCODING        = "iso-8859-1";    /**     * $workitem     */    public final static String C_WORKITEM        = "workitem";    //    // FIELDS    //private String smtpServer = null;    //private int smtpPort = 25;    private String recipientField = null;    private String mailFrom = null;    private String mailEncoding = null;    private String templateFileName = null;    //    // CONSTRUCTORS    public void init        (final ParticipantMap pMap,         final String regex,         final java.util.Map params)    {        super.init(pMap, regex, params);        //this.smtpServer = MapUtils.getAsString        //    (params, P_SMTP_SERVER, "127.0.0.1");        //this.smtpPort = MapUtils.getAsInt        //    (params, P_SMTP_PORT, 25);        this.recipientField = MapUtils.getAsString            (params, P_RECIPIENT_FIELD, DEFAULT_RECIPIENT_FIELD);        this.mailFrom = MapUtils.getAsString            (params, P_MAIL_FROM);        this.mailEncoding = MapUtils.getAsString            (params, P_MAIL_ENCODING);        this.templateFileName = MapUtils.getAsString            (params, P_TEMPLATE);    }    //    // BEAN METHODS (getters and setters)    // not much for the moment...    //    // METHODS from Participant    /**     * Overrides LeafParticipant dispatch method, by dispatching     * then sending the email notification.     */    public Object dispatch (final WorkItem wi)        throws DispatchingException    {        final Object result = super.dispatch(wi);        try        {            sendNotificationMail((InFlowWorkItem)wi);            log.debug("apply() notification email sucessfully sent.");        }        catch (final Exception e)        {            log.warn("apply() failed to send notification mail", e);            //throw new MinorDispatchingException            //    ("Failed to send notification email", e);        }        return result;    }    //    // METHODS    private String[] splitSubjectAndBody (String in)    {        in = in.trim();        final int i = in.indexOf("\n");        if (i < 0) return new String[] { "", in };        return new String[] { in.substring(0, i), in.substring(i+1) };    }    private void sendNotificationMail        (final InFlowWorkItem wi)    throws        Exception    {        //        // prepare mail session                /*        final java.util.Properties props = new java.util.Properties();        props.put("mail.smtp.host", this.smtpServer);        props.put("mail.smtp.port", ""+this.smtpPort);        final Session mailSession = Session.getDefaultInstance(props, null);        */        final Session mailSession = MailUtils.getMailSession(getParams());        //        // prepare mime message                final MimeMessage message = new MimeMessage(mailSession);        message.setSentDate(new java.util.Date());        MailUtils.setMailFrom(message, getParams());        //        // prepare templating context                final VelocityContext context = new VelocityContext();        java.util.Iterator it = wi.getAttributes().stringKeySet().iterator();        while (it.hasNext())        {            String k = (String)it.next();            context.put(k, wi.getAttributes().get(k).toString());        }        context.put(C_WORKITEM, wi);        //        // prepare recipient list                final java.util.List recipients = AttributeUtils.owfe2list            (wi.getAttributes().get(new StringAttribute(this.recipientField)),              ", *");        it = recipients.iterator();        while (it.hasNext())        {            final String recipient = (String)it.next();            message.addRecipient                (Message.RecipientType.TO, new InternetAddress(recipient));        }        //        // do templating                Velocity.init();                //final Template template =         //    Velocity.getTemplate(this.templateFileName, this.mailEncoding);        final Template template = Velocity.getTemplate(this.templateFileName);                final java.io.StringWriter writer = new java.io.StringWriter();        final java.io.BufferedWriter bw = new java.io.BufferedWriter(writer);        template.merge(context, bw);        bw.flush();        bw.close();        final String[] ss = splitSubjectAndBody(writer.toString());        String encoding = Utils.getEncoding();        if (mailEncoding != null) encoding = mailEncoding;        message.setFrom(new InternetAddress(this.mailFrom));        message.setSubject(ss[0]);        message.setText(ss[1], encoding);        //        // send mail        //Transport.send(message);        mailSession.getTransport("smtp").send(message);        log.debug("sendNotificationMail() done.");    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -