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 找到一些配置示例. 若是使用沒有配置的郵件供應商, 你也能夠添加本身的. 能夠經過 集成測試 來校驗你的配置.

例子

下面的例子展現瞭如何使用鏈接器和服務.

常見問題

參考資料

相關文章
相關標籤/搜索