1、BPMN 流程
MailTask 配置:
2、测试类
/**
* 启动流程
*/
@Test
public void repositoryQuery() {
ProcessDefinition sendMail = repositoryService
.createProcessDefinitionQuery()
.processDefinitionKey("Process_0ba7gzl")
.latestVersion().singleResult();
runtimeService.startProcessInstanceById(sendMail.getId());
}
/**
* 部署流程
*/
@Test
public void deployment() {
Deployment deploy = repositoryService.createDeployment()
.addClasspathResource("diagram/sendmail.bpmn")
.addClasspathResource("diagram/sendmail.png")
.deploy();
}
部署流程无异常,启动流程时出现以下异常:
org.activiti.engine.ActivitiException: Could not send e-mail in execution b544770c-0a17-11ea-9c83-1831bfbd5d2d
at org.activiti.engine.impl.bpmn.behavior.MailActivityBehavior.handleException(MailActivityBehavior.java:406)
at org.activiti.engine.impl.bpmn.behavior.MailActivityBehavior.execute(MailActivityBehavior.java:102)
at org.activiti.engine.impl.agenda.ContinueProcessOperation.executeActivityBehavior(ContinueProcessOperation.java:210)
at org.activiti.engine.impl.agenda.ContinueProcessOperation.executeSynchronous(ContinueProcessOperation.java:146)
at org.activiti.engine.impl.agenda.ContinueProcessOperation.continueThroughFlowNode(ContinueProcessOperation.java:101)
at org.activiti.engine.impl.agenda.ContinueProcessOperation.run(ContinueProcessOperation.java:66)
at org.activiti.engine.impl.interceptor.CommandInvoker.executeOperation(CommandInvoker.java:73)
__________________________________________________ 省略部分异常信息 ______________________________________________________
......
__________________________________________________ 省略部分异常信息 ______________________________________________________
at org.activiti.engine.impl.bpmn.behavior.MailActivityBehavior.execute(MailActivityBehavior.java:97)
... 80 more
Caused by: com.sun.mail.util.MailConnectException: Couldn't connect to host, port: localhost, 1025; timeout 60000;
nested exception is:
java.net.ConnectException: Connection refused: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2118)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:712)
at javax.mail.Service.connect(Service.java:366)
at javax.mail.Service.connect(Service.java:246)
at javax.mail.Service.connect(Service.java:195)
at javax.mail.Transport.send0(Transport.java:254)
at javax.mail.Transport.send(Transport.java:124)
at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1459)
... 82 more
Caused by: java.net.ConnectException: Connection refused: connect
at java.base/java.net.PlainSocketImpl.waitForConnect(Native Method)
at java.base/java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:107)
at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
at java.base/java.net.Socket.connect(Socket.java:591)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:329)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:238)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2084)
... 89 more
3、解决方法
根据以上错误信息可以看出,MailTask 默认使用的是1025端口,而我们配置的邮箱服务器使用的是25端口,故出现以上异常,通过在 Activiti 配置类中设置端口即可,具体如下:
import org.activiti.spring.SpringProcessEngineConfiguration;
import org.activiti.spring.boot.ProcessEngineConfigurationConfigurer;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ActivitiConfig implements ProcessEngineConfigurationConfigurer {
@Override
public void configure(SpringProcessEngineConfiguration springProcessEngineConfiguration) {
//springProcessEngineConfiguration.setMailServerPort(25);
}
}