Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
z_stack
Activiti
提交
cbcd5521
A
Activiti
项目概览
z_stack
/
Activiti
9 个月 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
Activiti
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
cbcd5521
编写于
1月 25, 2023
作者:
J
Jakub Sokołowski
提交者:
GitHub
1月 25, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
AAE-12143 Process diagram SVG generation tests (#4215)
上级
3eca644b
变更
4
展开全部
隐藏空白更改
内联
并排
Showing
4 changed file
with
731 addition
and
29 deletion
+731
-29
activiti-core/activiti-image-generator/pom.xml
activiti-core/activiti-image-generator/pom.xml
+5
-0
activiti-core/activiti-image-generator/src/test/java/org/activiti/engine/test/image/ProcessDiagramGeneratorTest.java
...tiviti/engine/test/image/ProcessDiagramGeneratorTest.java
+67
-29
activiti-core/activiti-image-generator/src/test/resources/org/activiti/engine/test/image/ProcessDiagramGeneratorTest.testOutput.bpmn20.xml
...t/image/ProcessDiagramGeneratorTest.testOutput.bpmn20.xml
+339
-0
activiti-core/activiti-image-generator/src/test/resources/org/activiti/engine/test/image/ProcessDiagramGeneratorTest.testOutput.result.svg
...t/image/ProcessDiagramGeneratorTest.testOutput.result.svg
+320
-0
未找到文件。
activiti-core/activiti-image-generator/pom.xml
浏览文件 @
cbcd5521
...
...
@@ -66,5 +66,10 @@
<artifactId>
activiti-engine
</artifactId>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.xmlunit
</groupId>
<artifactId>
xmlunit-assertj3
</artifactId>
<scope>
test
</scope>
</dependency>
</dependencies>
</project>
activiti-core/activiti-image-generator/src/test/java/org/activiti/engine/test/image/ProcessDiagramGeneratorTest.java
浏览文件 @
cbcd5521
...
...
@@ -15,10 +15,6 @@
*/
package
org.activiti.engine.test.image
;
import
java.io.InputStream
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.activiti.bpmn.model.BpmnModel
;
import
org.activiti.engine.ProcessEngineConfiguration
;
import
org.activiti.engine.ProcessEngines
;
...
...
@@ -34,6 +30,21 @@ import org.apache.batik.anim.dom.SAXSVGDocumentFactory;
import
org.apache.batik.anim.dom.SVGOMDocument
;
import
org.apache.batik.util.XMLResourceDescriptor
;
import
org.apache.commons.io.IOUtils
;
import
org.springframework.util.ResourceUtils
;
import
org.springframework.util.StreamUtils
;
import
org.xmlunit.assertj3.XmlAssert
;
import
org.xmlunit.diff.Comparison
;
import
org.xmlunit.diff.ComparisonResult
;
import
org.xmlunit.diff.ComparisonType
;
import
org.xmlunit.diff.DifferenceEvaluator
;
import
java.io.File
;
import
java.io.InputStream
;
import
java.nio.charset.StandardCharsets
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
static
java
.
util
.
Arrays
.
asList
;
import
static
java
.
util
.
Collections
.
emptyList
;
...
...
@@ -42,6 +53,17 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
public
class
ProcessDiagramGeneratorTest
extends
PluggableActivitiTestCase
{
public
static
final
String
TEST_OUTPUT_RESULT_PATH
=
"classpath:org/activiti/engine/test/image/"
+
"ProcessDiagramGeneratorTest.testOutput.result.svg"
;
private
final
ProcessDiagramGenerator
imageGenerator
=
new
DefaultProcessDiagramGenerator
();
private
final
String
activityFontName
=
imageGenerator
.
getDefaultActivityFontName
();
private
final
String
labelFontName
=
imageGenerator
.
getDefaultLabelFontName
();
private
final
String
annotationFontName
=
imageGenerator
.
getDefaultAnnotationFontName
();
@Override
protected
void
initializeProcessEngine
()
{
ProcessEngines
.
destroy
();
...
...
@@ -59,11 +81,6 @@ public class ProcessDiagramGeneratorTest extends PluggableActivitiTestCase {
@Deployment
public
void
testHighLighted
()
throws
Exception
{
ProcessDiagramGenerator
imageGenerator
=
new
DefaultProcessDiagramGenerator
();
String
activityFontName
=
imageGenerator
.
getDefaultActivityFontName
();
String
labelFontName
=
imageGenerator
.
getDefaultLabelFontName
();
String
annotationFontName
=
imageGenerator
.
getDefaultAnnotationFontName
();
runtimeService
.
startProcessInstanceByKey
(
"myProcess"
);
List
<
Task
>
tasks
=
taskService
.
createTaskQuery
().
list
();
for
(
Task
task
:
tasks
)
{
...
...
@@ -89,11 +106,6 @@ public class ProcessDiagramGeneratorTest extends PluggableActivitiTestCase {
@Deployment
public
void
testSmallBoxLabels
()
throws
Exception
{
ProcessDiagramGenerator
imageGenerator
=
new
DefaultProcessDiagramGenerator
();
String
activityFontName
=
imageGenerator
.
getDefaultActivityFontName
();
String
labelFontName
=
imageGenerator
.
getDefaultLabelFontName
();
String
annotationFontName
=
imageGenerator
.
getDefaultAnnotationFontName
();
String
id
=
repositoryService
.
createProcessDefinitionQuery
().
processDefinitionKey
(
"myProcess"
).
singleResult
()
.
getId
();
...
...
@@ -110,11 +122,6 @@ public class ProcessDiagramGeneratorTest extends PluggableActivitiTestCase {
@Deployment
public
void
testTransactionElements
()
throws
Exception
{
ProcessDiagramGenerator
imageGenerator
=
new
DefaultProcessDiagramGenerator
();
String
activityFontName
=
imageGenerator
.
getDefaultActivityFontName
();
String
labelFontName
=
imageGenerator
.
getDefaultLabelFontName
();
String
annotationFontName
=
imageGenerator
.
getDefaultAnnotationFontName
();
String
id
=
repositoryService
.
createProcessDefinitionQuery
().
processDefinitionKey
(
"transactionSubRequest"
).
singleResult
()
.
getId
();
...
...
@@ -131,11 +138,6 @@ public class ProcessDiagramGeneratorTest extends PluggableActivitiTestCase {
@Deployment
public
void
testAllElements
()
throws
Exception
{
ProcessDiagramGenerator
imageGenerator
=
new
DefaultProcessDiagramGenerator
();
String
activityFontName
=
imageGenerator
.
getDefaultActivityFontName
();
String
labelFontName
=
imageGenerator
.
getDefaultLabelFontName
();
String
annotationFontName
=
imageGenerator
.
getDefaultAnnotationFontName
();
String
id
=
repositoryService
.
createProcessDefinitionQuery
().
processDefinitionKey
(
"myProcess"
).
singleResult
()
.
getId
();
BpmnModel
bpmnModel
=
repositoryService
.
getBpmnModel
(
id
);
...
...
@@ -171,6 +173,23 @@ public class ProcessDiagramGeneratorTest extends PluggableActivitiTestCase {
}
}
@Deployment
public
void
testOutput
()
throws
Exception
{
String
id
=
repositoryService
.
createProcessDefinitionQuery
().
processDefinitionKey
(
"big-process"
).
singleResult
()
.
getId
();
BpmnModel
bpmnModel
=
repositoryService
.
getBpmnModel
(
id
);
try
(
final
InputStream
resourceStream
=
imageGenerator
.
generateDiagram
(
bpmnModel
,
""
,
""
,
""
))
{
byte
[]
bytes
=
StreamUtils
.
copyToByteArray
(
resourceStream
);
String
resultSvgContent
=
new
String
(
bytes
,
StandardCharsets
.
UTF_8
);
File
expectedResultFile
=
ResourceUtils
.
getFile
(
TEST_OUTPUT_RESULT_PATH
);
XmlAssert
.
assertThat
(
resultSvgContent
).
and
(
expectedResultFile
)
.
ignoreWhitespace
()
.
withNodeFilter
(
node
->
!
"path"
.
equals
(
node
.
getNodeName
()))
.
withDifferenceEvaluator
(
new
StyleAttributeEvaluator
())
.
areIdentical
();
}
}
/**
* Test that when the diagram is generated for a model without graphic info
* then the default diagram image is returned
...
...
@@ -188,11 +207,6 @@ public class ProcessDiagramGeneratorTest extends PluggableActivitiTestCase {
.
getId
();
BpmnModel
bpmnModel
=
repositoryService
.
getBpmnModel
(
id
);
ProcessDiagramGenerator
imageGenerator
=
new
DefaultProcessDiagramGenerator
();
String
activityFontName
=
imageGenerator
.
getDefaultActivityFontName
();
String
labelFontName
=
imageGenerator
.
getDefaultLabelFontName
();
String
annotationFontName
=
imageGenerator
.
getDefaultAnnotationFontName
();
//WHEN
try
(
final
InputStream
resourceStream
=
imageGenerator
.
generateDiagram
(
bpmnModel
,
emptyList
(),
...
...
@@ -251,4 +265,28 @@ public class ProcessDiagramGeneratorTest extends PluggableActivitiTestCase {
return
(
SVGOMDocument
)
factory
.
createDocument
(
null
,
resourceStream
);
}
private
static
class
StyleAttributeEvaluator
implements
DifferenceEvaluator
{
@Override
public
ComparisonResult
evaluate
(
Comparison
comparison
,
ComparisonResult
outcome
)
{
if
(
outcome
!=
ComparisonResult
.
EQUAL
&&
isStyleAttribute
(
comparison
))
{
List
<
String
>
controlStream
=
split
(
comparison
.
getControlDetails
());
List
<
String
>
testStream
=
split
(
comparison
.
getTestDetails
());
if
(
controlStream
.
size
()
==
testStream
.
size
()
&&
controlStream
.
containsAll
(
testStream
))
{
return
ComparisonResult
.
EQUAL
;
}
}
return
outcome
;
}
private
boolean
isStyleAttribute
(
Comparison
comparison
)
{
return
comparison
.
getType
()
==
ComparisonType
.
ATTR_VALUE
&&
"style"
.
equals
(
comparison
.
getControlDetails
().
getTarget
().
getNodeName
());
}
private
List
<
String
>
split
(
Comparison
.
Detail
comparison
)
{
return
Arrays
.
stream
(((
String
)
comparison
.
getValue
()).
split
(
";"
))
.
map
(
String:
:
trim
)
.
collect
(
Collectors
.
toList
());
}
}
}
activiti-core/activiti-image-generator/src/test/resources/org/activiti/engine/test/image/ProcessDiagramGeneratorTest.testOutput.bpmn20.xml
0 → 100644
浏览文件 @
cbcd5521
此差异已折叠。
点击以展开。
activiti-core/activiti-image-generator/src/test/resources/org/activiti/engine/test/image/ProcessDiagramGeneratorTest.testOutput.result.svg
0 → 100644
浏览文件 @
cbcd5521
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录