我需要有一个活动,在BPEL流程的某个点发送邮件。
是否有“邮件活动”或我是否需要编写一种Web服务来调用,以便我调用该服务并让它发送邮件?
这可能是将ESB用于此业务的解决方案吗?
如何连接两者(再次使用网络服务或有更快捷,更简单的方式链接它们)?
在这种情况下,将ESB功能添加到BPS以添加传输功能而不必仅为此添加ESB,这是否是一个很好的解决方案?
另外我已经看到有一些例子在axis2.xml中使用transportSender而不是使用代理,但似乎这个方法总是将邮件发送到我需要能够发送邮件的同一地址从一个主题(一个可能的cc和bcc)来自过程的参数(在上一步我从DB读取数据并有地址信息)tensportSender可以成为遵循的路径还是我必须开发邮件服务?< / p>
任何提示?
由于
卢卡
答案 0 :(得分:2)
如前所述,目前没有为WSO2 BPEL内置的邮件活动,但您可以通过从BPEL工作流内部调用外部Web服务(DSS,AS)来获得此功能。
我几天前创建了一个具有此类功能的工作流程。基本上我创建了Axis2服务,它只是用于发送电子邮件的Java代码,我可以在其中提供主题,内容和接收者等参数,因此一旦您调用该服务,您就可以将电子邮件发送到任何电子邮件地址。我将提到的Axis2服务部署到WSO2 DSS中,然后从我部署到WSO2 BPS的BPEL工作流程中调用它。
我用于发送电子邮件的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);
}
}
}
答案 1 :(得分:0)
目前,BPS中没有邮件活动作为内置活动。
但是,您可以通过组合ESB和BPS来完成任务。你可以这样做。 首先将ESB电子邮件发送服务作为代理公开,然后使用BPS调用该服务。最好为此任务使用单独的ESB,因为在将ESB功能集成到BPS时遇到了一些困难。