我需要一个在 BPEL 流程的某个点发送邮件的事件。
是否存在“邮件事件”,或者我是否必须编写某种 Web 服务代码来调用,以便我调用该服务并让它发送邮件?
对于该业务使用 ESB 是否是一个解决方案?
如何连接两者(再次使用网络服务或有更快、最简单的方法来链接它们)?
在这种情况下,将 ESB 功能添加到 BPS 中以将其添加为传输功能,而不必为此添加 ESB,这是否是一个好的解决方案?
此外,我还看到有一些示例使用 axis2.xml 中的 TransportSender 而不是使用代理,但似乎此方法始终将邮件发送到我需要能够发送邮件的同一地址从过程的参数到主题(可能的抄送和密件抄送)(在上一步中,我从数据库读取数据并且有地址信息)tensportSender 可以是要遵循的路径还是我必须开发邮件服务?
有什么提示吗?
谢谢
卢卡
最佳答案
如前所述,目前 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 = "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="791c01181409151c391e14181015571a1614" rel="noreferrer noopener nofollow">[email protected]</a>";
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","<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="016479606c716d6441666c60686d2f626e6c" rel="noreferrer noopener nofollow">[email protected]</a>","Password");
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
catch (MessagingException mex) {
System.out.println("send failed, exception: " + mex);
}
}
}
关于WSO2 BPS - 邮寄事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16100884/