Camunda: 把邮件扩展集成到业务过程管理中

https://github.com/camunda/ca...html

在业务过程系统中集成邮件服务.java

clipboard.png

功能

  • 发送邮件git

  • 收取邮件github

  • 删除邮件apache

  • 收到邮件时, 执行操做api

安装

要求tomcat

  • Camunda BPM >= 7.50服务器

  • Java 8oracle

对于嵌入式过程引擎

添加 camunda-bpm-mail-core 做为应用程序依赖. 若是使用Maven, 须要添加以下依赖到 pom.xml 文件中:app

<dependency>
  <groupId>org.camunda.bpm.extension</groupId>
  <artifactId>camunda-bpm-mail-core</artifactId>
  <version>1.1.0</version>
</dependency>

对于共享过程引擎

添加 camunda-bpm-mail-core-1.1.0.jar 到服务器的 lib 目录中, 好比 apache-tomcat-8.0.24\lib. 还要保证包括下面的依赖:

若是使用 Wildfly, 参考这个特殊说明

如何使用

该扩展构建与 Connectors API 基础上, 而且提供了一些用于链接到邮件服务器的链接器. 链接能够做为一个服务任务实现用于一个过程中, 而且经过ID进行引用. 而后使用 Camunda Modeler 来配置:

<serviceTask id="sendMail" name="Send Mail Task">
  <extensionElements>
    <camunda:connector>
      <camunda:connectorId>mail-send</camunda:connectorId>
      <!-- input / output mapping -->
    </camunda:connector>
  </extensionElements>
</serviceTask>

查看 链接器用户指南 以了解如何配置过程引擎来使用链接器

发送邮件

clipboard.png

链接器ID: mail-send

输入参数 类型 是否要求
from String NO(从配置读取)
fromAlias String NO(从配置读取)
to String Yes
cc String NO
bcc String No
subject String Yes
text String No
html String No
fileNames 字符串列表 (文件路径) Yes

邮件内容能够使HTML或者纯文本, 而且能够经过模板生成(好比, 使用 FreeMarkeer 模板, 能够参考 这个例子)

收取邮件

clipboard.png

输入参数 类型 是否要求
folder String(好比: 'Inbox' NO(从配置读取)
download-attachements Boolean NO(从配置读取)
输出参数 类型
mails Mail 类型列表

若是 download-attachementstrue, 那么存储附件到配置中指定的位置. 存储附件的路径能够经过 MailAttachment 中获取

删除邮件

输入参数 类型 是否要求
folder String(例如: 'Inbox') NO(从配置读取)
mails Mail 列表 NO
messageIds 字符串列表 NO
messageNumbers 整数列表 NO

mails, messageIdsmessageNumbers 必须设置.

收取邮件后的自动化操做

该扩展使用 MailNotificationService 来对收取的邮件作响应操做(例如, 启动一个过程示例, 或关联一个消息) 你能够注册处理器/消费者, 当收到一个新的邮件时, 来处理这个邮件. 下面给出一个Java的实际代码例子:

MailNotificationService notificationService = new MailNotificationService(configuration);

notificationService.registerMailHandler(mail -> {
  runtimeService.startProcessInstanceByKey("process",
    Variables.createVariables().putValue("mail", mail));
});

notificationService.start();

// ...

notificationService.stop();

若是使用了一个邮件处理器, 而且在配置中启用了 downloadAttachments, 那么在调用对应的处理器的时候首先存储附件. 另外, 还能够经过调用 Mail.downloadAttachments() 触发手动下载.

如何配置

默认状况, 扩展会从CLASSPATH中查找一个名为mail-config.properties的配置文件. 你能够使用环境变量 MAIL_CONFIG 来修改查找路径. 若是你想在CLASSPATH中查找一个文件, 使用classpath 前缀. (例如: classpath:/my-application.config)

下面是一个配置示例:

# send mails via SMTP
mail.transport.protocol=smtp

mail.smtp.host=smtp.gmail.com
mail.smtp.port=465
mail.smtp.auth=true
mail.smtp.ssl.enable=true
mail.smtp.socketFactory.port=465
mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory

# poll mails via IMAPS
mail.store.protocol=imaps

mail.imaps.host=imap.gmail.com
mail.imaps.port=993
mail.imaps.timeout=10000

# additional config
mail.poll.folder=INBOX
mail.sender=USER@google.com
mail.sender.alias=User Inc

mail.attachment.download=true
mail.attachment.path=attachments

# credentials
mail.user=USER@gmail.com
mail.password=PASSWORD

能够在 extension/core/configs 找到一些配置示例. 若是使用没有配置的邮件供应商, 你也能够添加本身的. 能够经过 集成测试 来校验你的配置.

例子

下面的例子展现了如何使用链接器和服务.

常见问题

参考资料

相关文章
相关标签/搜索