2

我需要有一个在 BPEL 流程的某个点发送邮件的活动。

是否有“邮件活动”或者我必须编写一种 Web 服务来调用,以便我调用该服务并让它发送邮件?

是否可以将 ESB 用于该业务?

如何将两者连接起来(再次使用 Web 服务,或者有一种更快、更简单的方法来连接它们)?

在这种情况下,将 ESB 功能添加到 BPS 以添加传输功能而不必为此添加 ESB 是否是一个好的解决方案?

我还看到有一些示例在axis2.xml中使用transportSender而不是使用代理,但似乎这种方法总是将邮件发送到我需要能够向主题发送邮件的相同地址(可能的 cc 和 bcc)来自进程的参数(在上一步中,我从 DB 读取数据并且有地址信息) tensportSender 是要遵循的路径还是我必须开发邮件服务?

有什么提示吗?

谢谢

卢卡

4

2 回答 2

2

如前所述,目前 WSO2 BPEL 没有内置邮件活动,但您可以通过从 BPEL 工作流内部调用外部 Web 服务(DSS、AS)来获得此功能。

几天前,我创建了一个具有这种功能的工作流程。基本上我创建了一个 Axis2 服务,它只是用于发送电子邮件的 Java 代码,我可以在其中提供主题、内容和接收者等参数,因此一旦您调用该服务,您就可以将电子邮件发送到任何电子邮件地址。我将提到的 Axis2 服务部署到 WSO2 DSS 中,并从 BPEL 工作流中调用它,后来我将其部署到 WSO2 BPS 中。

我用于发送电子邮件的 Java 代码如下:

import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class MailSender {

    public static void main(String emailAddress, String content){

        String host = "smtp.gmail.com";
        String from = "example@gmail.com";
        String subject = "Subject example";



        Properties props = System.getProperties();
        props.put("mail.smtp.host", host);
        props.put("mail.smtp.user", from);
        props.put("mail.smtp.password", "");
        props.put("mail.smtp.port", "587");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.auth", "true");

        try{
            Session session = Session.getDefaultInstance(props, null);
            InternetAddress to_address = new InternetAddress(emailAddress);

            MimeMessage message = new MimeMessage(session);         
            message.setFrom(new InternetAddress(from));
            message.addRecipient(Message.RecipientType.TO, to_address);
            message.setSubject(subject);        
            message.setContent(content, "text/html; charset=UTF-8");

            Transport transport = session.getTransport("smtp");
            transport.connect("smtp.gmail.com","example@gmail.com","Password");
            transport.sendMessage(message, message.getAllRecipients());
            transport.close();


            }

            catch (MessagingException mex) {
            System.out.println("send failed, exception: " + mex);
            }
    }
}
于 2013-07-10T08:12:42.820 回答
0

目前,BPS 中没有作为内置活动的邮件活动。

但是,是的,您可以通过结合 ESB 和 BPS 来完成您的任务。您可以按如下方式进行。首先将 ESB 电子邮件发送服务公开为代理,然后使用 BPS 调用该服务。最好使用单独的 ESB 来完成这项任务,因为我在将 ESB 功能集成到 BPS 时遇到了一些困难。

于 2013-05-13T05:43:08.167 回答