Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
开发团队
Flowable Engine
提交
4b17821b
F
Flowable Engine
项目概览
开发团队
/
Flowable Engine
通知
9
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
Flowable Engine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
4b17821b
编写于
4月 16, 2014
作者:
T
Tijs Rademakers
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Added patch provided by conradi via the Activiti forum
上级
47bac4ff
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
287 addition
and
25 deletion
+287
-25
modules/activiti-engine/src/main/java/org/activiti/engine/impl/bpmn/behavior/MailActivityBehavior.java
...iviti/engine/impl/bpmn/behavior/MailActivityBehavior.java
+51
-25
modules/activiti-engine/src/test/java/org/activiti/engine/test/bpmn/mail/EmailSendTaskTest.java
...org/activiti/engine/test/bpmn/mail/EmailSendTaskTest.java
+25
-0
modules/activiti-engine/src/test/java/org/activiti/engine/test/bpmn/mail/EmailServiceTaskTest.java
.../activiti/engine/test/bpmn/mail/EmailServiceTaskTest.java
+25
-0
modules/activiti-engine/src/test/resources/org/activiti/engine/test/bpmn/mail/EmailSendTaskTest.testInvalidAddress.bpmn20.xml
...bpmn/mail/EmailSendTaskTest.testInvalidAddress.bpmn20.xml
+30
-0
modules/activiti-engine/src/test/resources/org/activiti/engine/test/bpmn/mail/EmailSendTaskTest.testInvalidAddressWithoutException.bpmn20.xml
...endTaskTest.testInvalidAddressWithoutException.bpmn20.xml
+32
-0
modules/activiti-engine/src/test/resources/org/activiti/engine/test/bpmn/mail/EmailSendTaskTest.testInvalidAddressWithoutExceptionVariableName.bpmn20.xml
...testInvalidAddressWithoutExceptionVariableName.bpmn20.xml
+31
-0
modules/activiti-engine/src/test/resources/org/activiti/engine/test/bpmn/mail/EmailServiceTaskTest.testInvalidAddress.bpmn20.xml
...n/mail/EmailServiceTaskTest.testInvalidAddress.bpmn20.xml
+30
-0
modules/activiti-engine/src/test/resources/org/activiti/engine/test/bpmn/mail/EmailServiceTaskTest.testInvalidAddressWithoutException.bpmn20.xml
...iceTaskTest.testInvalidAddressWithoutException.bpmn20.xml
+32
-0
modules/activiti-engine/src/test/resources/org/activiti/engine/test/bpmn/mail/EmailServiceTaskTest.testInvalidAddressWithoutExceptionVariableName.bpmn20.xml
...testInvalidAddressWithoutExceptionVariableName.bpmn20.xml
+31
-0
未找到文件。
modules/activiti-engine/src/main/java/org/activiti/engine/impl/bpmn/behavior/MailActivityBehavior.java
浏览文件 @
4b17821b
...
...
@@ -26,6 +26,8 @@ import org.apache.commons.mail.Email;
import
org.apache.commons.mail.EmailException
;
import
org.apache.commons.mail.HtmlEmail
;
import
org.apache.commons.mail.SimpleEmail
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
/**
* @author Joram Barrez
...
...
@@ -36,6 +38,8 @@ public class MailActivityBehavior extends AbstractBpmnActivityBehavior {
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
MailActivityBehavior
.
class
);
protected
Expression
to
;
protected
Expression
from
;
protected
Expression
cc
;
...
...
@@ -46,39 +50,47 @@ public class MailActivityBehavior extends AbstractBpmnActivityBehavior {
protected
Expression
html
;
protected
Expression
htmlVar
;
protected
Expression
charset
;
protected
Expression
ignoreException
;
protected
Expression
exceptionVariableName
;
public
void
execute
(
ActivityExecution
execution
)
{
String
toStr
=
getStringFromField
(
to
,
execution
);
String
fromStr
=
getStringFromField
(
from
,
execution
);
String
ccStr
=
getStringFromField
(
cc
,
execution
);
String
bccStr
=
getStringFromField
(
bcc
,
execution
);
String
subjectStr
=
getStringFromField
(
subject
,
execution
);
String
textStr
=
textVar
==
null
?
getStringFromField
(
text
,
execution
)
:
getStringFromField
(
getExpression
(
execution
,
textVar
),
execution
);
String
htmlStr
=
htmlVar
==
null
?
getStringFromField
(
html
,
execution
)
:
getStringFromField
(
getExpression
(
execution
,
htmlVar
),
execution
);
String
charSetStr
=
getStringFromField
(
charset
,
execution
);
Email
email
=
createEmail
(
textStr
,
htmlStr
);
addTo
(
email
,
toStr
);
setFrom
(
email
,
fromStr
);
addCc
(
email
,
ccStr
);
addBcc
(
email
,
bccStr
);
setSubject
(
email
,
subjectStr
);
setMailServerProperties
(
email
);
setCharset
(
email
,
charSetStr
);
boolean
doIgnoreException
=
Boolean
.
parseBoolean
(
getStringFromField
(
ignoreException
,
execution
));
String
exceptionVariable
=
getStringFromField
(
exceptionVariableName
,
execution
);
Email
email
=
null
;
try
{
String
toStr
=
getStringFromField
(
to
,
execution
);
String
fromStr
=
getStringFromField
(
from
,
execution
);
String
ccStr
=
getStringFromField
(
cc
,
execution
);
String
bccStr
=
getStringFromField
(
bcc
,
execution
);
String
subjectStr
=
getStringFromField
(
subject
,
execution
);
String
textStr
=
textVar
==
null
?
getStringFromField
(
text
,
execution
)
:
getStringFromField
(
getExpression
(
execution
,
textVar
),
execution
);
String
htmlStr
=
htmlVar
==
null
?
getStringFromField
(
html
,
execution
)
:
getStringFromField
(
getExpression
(
execution
,
htmlVar
),
execution
);
String
charSetStr
=
getStringFromField
(
charset
,
execution
);
email
=
createEmail
(
textStr
,
htmlStr
);
addTo
(
email
,
toStr
);
setFrom
(
email
,
fromStr
);
addCc
(
email
,
ccStr
);
addBcc
(
email
,
bccStr
);
setSubject
(
email
,
subjectStr
);
setMailServerProperties
(
email
);
setCharset
(
email
,
charSetStr
);
email
.
send
();
}
catch
(
ActivitiException
e
)
{
handleException
(
execution
,
e
.
getMessage
(),
e
,
doIgnoreException
,
exceptionVariable
);
}
catch
(
EmailException
e
)
{
throw
new
ActivitiException
(
"Could not send e-mail"
,
e
);
handleException
(
execution
,
"Could not send e-mail in execution "
+
execution
.
getId
(),
e
,
doIgnoreException
,
exceptionVariabl
e
);
}
leave
(
execution
);
}
protected
Email
createEmail
(
String
text
,
String
html
)
{
if
(
html
!=
null
)
{
return
createHtmlEmail
(
text
,
html
);
...
...
@@ -222,7 +234,7 @@ public class MailActivityBehavior extends AbstractBpmnActivityBehavior {
}
protected
String
getStringFromField
(
Expression
expression
,
DelegateExecution
execution
)
{
if
(
expression
!=
null
)
{
if
(
expression
!=
null
)
{
Object
value
=
expression
.
getValue
(
execution
);
if
(
value
!=
null
)
{
return
value
.
toString
();
...
...
@@ -237,4 +249,18 @@ public class MailActivityBehavior extends AbstractBpmnActivityBehavior {
.
createExpression
(
variable
);
}
protected
void
handleException
(
ActivityExecution
execution
,
String
msg
,
Exception
e
,
boolean
doIgnoreException
,
String
exceptionVariable
)
{
if
(
doIgnoreException
)
{
LOG
.
info
(
"Ignoring email send error: "
+
msg
,
e
);
if
(
exceptionVariable
!=
null
&&
exceptionVariable
.
length
()
>
0
)
{
execution
.
setVariable
(
exceptionVariable
,
msg
);
}
}
else
{
if
(
e
instanceof
ActivitiException
)
{
throw
(
ActivitiException
)
e
;
}
else
{
throw
new
ActivitiException
(
msg
,
e
);
}
}
}
}
modules/activiti-engine/src/test/java/org/activiti/engine/test/bpmn/mail/EmailSendTaskTest.java
浏览文件 @
4b17821b
...
...
@@ -26,6 +26,7 @@ import javax.activation.DataHandler;
import
javax.mail.MessagingException
;
import
javax.mail.internet.MimeMessage
;
import
org.activiti.engine.ActivitiException
;
import
org.activiti.engine.impl.util.CollectionUtil
;
import
org.activiti.engine.test.Deployment
;
import
org.subethamail.wiser.WiserMessage
;
...
...
@@ -115,6 +116,30 @@ public class EmailSendTaskTest extends EmailTestCase {
assertEmailSend
(
messages
.
get
(
0
),
true
,
"Test"
,
"Mr. <b>Kermit</b>"
,
"activiti@localhost"
,
Arrays
.
asList
(
"kermit@activiti.org"
),
null
);
}
@Deployment
public
void
testInvalidAddress
()
throws
Exception
{
try
{
runtimeService
.
startProcessInstanceByKey
(
"invalidAddress"
).
getId
();
fail
(
"An Invalid email address should not execute"
);
}
catch
(
ActivitiException
e
)
{
// fine
}
catch
(
Exception
e
)
{
fail
(
"Only an ActivitiException is expected here but not: "
+
e
);
}
}
@Deployment
public
void
testInvalidAddressWithoutException
()
throws
Exception
{
String
piId
=
runtimeService
.
startProcessInstanceByKey
(
"invalidAddressWithoutException"
).
getId
();
assertNotNull
(
historyService
.
createHistoricVariableInstanceQuery
().
processInstanceId
(
piId
).
variableName
(
"emailError"
).
singleResult
());
}
@Deployment
public
void
testInvalidAddressWithoutExceptionVariableName
()
throws
Exception
{
String
piId
=
runtimeService
.
startProcessInstanceByKey
(
"invalidAddressWithoutException"
).
getId
();
assertNull
(
historyService
.
createHistoricVariableInstanceQuery
().
processInstanceId
(
piId
).
variableName
(
"emailError"
).
singleResult
());
}
// Helper
private
void
assertEmailSend
(
WiserMessage
emailMessage
,
boolean
htmlMail
,
String
subject
,
String
message
,
...
...
modules/activiti-engine/src/test/java/org/activiti/engine/test/bpmn/mail/EmailServiceTaskTest.java
浏览文件 @
4b17821b
...
...
@@ -26,6 +26,7 @@ import javax.activation.DataHandler;
import
javax.mail.MessagingException
;
import
javax.mail.internet.MimeMessage
;
import
org.activiti.engine.ActivitiException
;
import
org.activiti.engine.impl.util.CollectionUtil
;
import
org.activiti.engine.test.Deployment
;
import
org.subethamail.wiser.WiserMessage
;
...
...
@@ -128,6 +129,30 @@ public class EmailServiceTaskTest extends EmailTestCase {
assertEmailSend
(
messages
.
get
(
0
),
true
,
"Test"
,
"Mr. <b>Kermit</b>"
,
"activiti@localhost"
,
Arrays
.
asList
(
"kermit@activiti.org"
),
null
);
}
@Deployment
public
void
testInvalidAddress
()
throws
Exception
{
try
{
runtimeService
.
startProcessInstanceByKey
(
"invalidAddress"
).
getId
();
fail
(
"An Invalid email address should not execute"
);
}
catch
(
ActivitiException
e
)
{
// fine
}
catch
(
Exception
e
)
{
fail
(
"Only an ActivitiException is expected here but not: "
+
e
);
}
}
@Deployment
public
void
testInvalidAddressWithoutException
()
throws
Exception
{
String
piId
=
runtimeService
.
startProcessInstanceByKey
(
"invalidAddressWithoutException"
).
getId
();
assertNotNull
(
historyService
.
createHistoricVariableInstanceQuery
().
processInstanceId
(
piId
).
variableName
(
"emailError"
).
singleResult
());
}
@Deployment
public
void
testInvalidAddressWithoutExceptionVariableName
()
throws
Exception
{
String
piId
=
runtimeService
.
startProcessInstanceByKey
(
"invalidAddressWithoutException"
).
getId
();
assertNull
(
historyService
.
createHistoricVariableInstanceQuery
().
processInstanceId
(
piId
).
variableName
(
"emailError"
).
singleResult
());
}
// Helper
public
static
void
assertEmailSend
(
WiserMessage
emailMessage
,
boolean
htmlMail
,
String
subject
,
String
message
,
...
...
modules/activiti-engine/src/test/resources/org/activiti/engine/test/bpmn/mail/EmailSendTaskTest.testInvalidAddress.bpmn20.xml
0 → 100644
浏览文件 @
4b17821b
<definitions
xmlns=
"http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:activiti=
"http://activiti.org/bpmn"
targetNamespace=
"Examples"
>
<process
id=
"simpleTextOnly"
>
<startEvent
id=
"theStart"
/>
<sequenceFlow
sourceRef=
"theStart"
targetRef=
"sendMail"
/>
<sendTask
id=
"sendMail"
activiti:type=
"mail"
>
<extensionElements>
<activiti:field
name=
"to"
>
<activiti:string>
kermit@activiti.org@org
</activiti:string>
</activiti:field>
<activiti:field
name=
"subject"
>
<activiti:string>
Hello Kermit!
</activiti:string>
</activiti:field>
<activiti:field
name=
"text"
>
<activiti:string>
This a text only e-mail.
</activiti:string>
</activiti:field>
</extensionElements>
</sendTask>
<sequenceFlow
sourceRef=
"sendMail"
targetRef=
"theEnd"
/>
<endEvent
id=
"theEnd"
/>
</process>
</definitions>
\ No newline at end of file
modules/activiti-engine/src/test/resources/org/activiti/engine/test/bpmn/mail/EmailSendTaskTest.testInvalidAddressWithoutException.bpmn20.xml
0 → 100644
浏览文件 @
4b17821b
<definitions
xmlns=
"http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:activiti=
"http://activiti.org/bpmn"
targetNamespace=
"Examples"
>
<process
id=
"invalidAddressWithoutException"
>
<startEvent
id=
"theStart"
/>
<sequenceFlow
sourceRef=
"theStart"
targetRef=
"sendMail"
/>
<sendTask
id=
"sendMail"
activiti:type=
"mail"
>
<extensionElements>
<activiti:field
name=
"ignoreException"
stringValue=
"true"
/>
<activiti:field
name=
"exceptionVariableName"
stringValue=
"emailError"
/>
<activiti:field
name=
"to"
>
<activiti:string>
kermit@activiti.org@org
</activiti:string>
</activiti:field>
<activiti:field
name=
"subject"
>
<activiti:string>
Hello Kermit!
</activiti:string>
</activiti:field>
<activiti:field
name=
"text"
>
<activiti:string>
This a text only e-mail.
</activiti:string>
</activiti:field>
</extensionElements>
</sendTask>
<sequenceFlow
sourceRef=
"sendMail"
targetRef=
"theEnd"
/>
<endEvent
id=
"theEnd"
/>
</process>
</definitions>
\ No newline at end of file
modules/activiti-engine/src/test/resources/org/activiti/engine/test/bpmn/mail/EmailSendTaskTest.testInvalidAddressWithoutExceptionVariableName.bpmn20.xml
0 → 100644
浏览文件 @
4b17821b
<definitions
xmlns=
"http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:activiti=
"http://activiti.org/bpmn"
targetNamespace=
"Examples"
>
<process
id=
"invalidAddressWithoutException"
>
<startEvent
id=
"theStart"
/>
<sequenceFlow
sourceRef=
"theStart"
targetRef=
"sendMail"
/>
<sendTask
id=
"sendMail"
activiti:type=
"mail"
>
<extensionElements>
<activiti:field
name=
"ignoreException"
stringValue=
"true"
/>
<activiti:field
name=
"to"
>
<activiti:string>
kermit@activiti.org@org
</activiti:string>
</activiti:field>
<activiti:field
name=
"subject"
>
<activiti:string>
Hello Kermit!
</activiti:string>
</activiti:field>
<activiti:field
name=
"text"
>
<activiti:string>
This a text only e-mail.
</activiti:string>
</activiti:field>
</extensionElements>
</sendTask>
<sequenceFlow
sourceRef=
"sendMail"
targetRef=
"theEnd"
/>
<endEvent
id=
"theEnd"
/>
</process>
</definitions>
\ No newline at end of file
modules/activiti-engine/src/test/resources/org/activiti/engine/test/bpmn/mail/EmailServiceTaskTest.testInvalidAddress.bpmn20.xml
0 → 100644
浏览文件 @
4b17821b
<definitions
xmlns=
"http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:activiti=
"http://activiti.org/bpmn"
targetNamespace=
"Examples"
>
<process
id=
"simpleTextOnly"
>
<startEvent
id=
"theStart"
/>
<sequenceFlow
sourceRef=
"theStart"
targetRef=
"sendMail"
/>
<sendTask
id=
"sendMail"
activiti:type=
"mail"
>
<extensionElements>
<activiti:field
name=
"to"
>
<activiti:string>
kermit@activiti.org@org
</activiti:string>
</activiti:field>
<activiti:field
name=
"subject"
>
<activiti:string>
Hello Kermit!
</activiti:string>
</activiti:field>
<activiti:field
name=
"text"
>
<activiti:string>
This a text only e-mail.
</activiti:string>
</activiti:field>
</extensionElements>
</sendTask>
<sequenceFlow
sourceRef=
"sendMail"
targetRef=
"theEnd"
/>
<endEvent
id=
"theEnd"
/>
</process>
</definitions>
\ No newline at end of file
modules/activiti-engine/src/test/resources/org/activiti/engine/test/bpmn/mail/EmailServiceTaskTest.testInvalidAddressWithoutException.bpmn20.xml
0 → 100644
浏览文件 @
4b17821b
<definitions
xmlns=
"http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:activiti=
"http://activiti.org/bpmn"
targetNamespace=
"Examples"
>
<process
id=
"invalidAddressWithoutException"
>
<startEvent
id=
"theStart"
/>
<sequenceFlow
sourceRef=
"theStart"
targetRef=
"sendMail"
/>
<sendTask
id=
"sendMail"
activiti:type=
"mail"
>
<extensionElements>
<activiti:field
name=
"ignoreException"
stringValue=
"true"
/>
<activiti:field
name=
"exceptionVariableName"
stringValue=
"emailError"
/>
<activiti:field
name=
"to"
>
<activiti:string>
kermit@activiti.org@org
</activiti:string>
</activiti:field>
<activiti:field
name=
"subject"
>
<activiti:string>
Hello Kermit!
</activiti:string>
</activiti:field>
<activiti:field
name=
"text"
>
<activiti:string>
This a text only e-mail.
</activiti:string>
</activiti:field>
</extensionElements>
</sendTask>
<sequenceFlow
sourceRef=
"sendMail"
targetRef=
"theEnd"
/>
<endEvent
id=
"theEnd"
/>
</process>
</definitions>
\ No newline at end of file
modules/activiti-engine/src/test/resources/org/activiti/engine/test/bpmn/mail/EmailServiceTaskTest.testInvalidAddressWithoutExceptionVariableName.bpmn20.xml
0 → 100644
浏览文件 @
4b17821b
<definitions
xmlns=
"http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:activiti=
"http://activiti.org/bpmn"
targetNamespace=
"Examples"
>
<process
id=
"invalidAddressWithoutException"
>
<startEvent
id=
"theStart"
/>
<sequenceFlow
sourceRef=
"theStart"
targetRef=
"sendMail"
/>
<sendTask
id=
"sendMail"
activiti:type=
"mail"
>
<extensionElements>
<activiti:field
name=
"ignoreException"
stringValue=
"true"
/>
<activiti:field
name=
"to"
>
<activiti:string>
kermit@activiti.org@org
</activiti:string>
</activiti:field>
<activiti:field
name=
"subject"
>
<activiti:string>
Hello Kermit!
</activiti:string>
</activiti:field>
<activiti:field
name=
"text"
>
<activiti:string>
This a text only e-mail.
</activiti:string>
</activiti:field>
</extensionElements>
</sendTask>
<sequenceFlow
sourceRef=
"sendMail"
targetRef=
"theEnd"
/>
<endEvent
id=
"theEnd"
/>
</process>
</definitions>
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录