Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
开发团队
Flowable Engine
提交
05c8a821
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,发现更多精彩内容 >>
提交
05c8a821
编写于
8月 06, 2014
作者:
B
Bassam Al-Sarori
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
JSON owner and custom identity links json conversion
added support in modeler
上级
0ddf1f18
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
183 addition
and
6 deletion
+183
-6
modules/activiti-json-converter/src/main/java/org/activiti/editor/constants/StencilConstants.java
.../java/org/activiti/editor/constants/StencilConstants.java
+7
-1
modules/activiti-json-converter/src/main/java/org/activiti/editor/language/json/converter/UserTaskJsonConverter.java
...editor/language/json/converter/UserTaskJsonConverter.java
+80
-2
modules/activiti-json-converter/src/test/java/org/activiti/editor/language/UserTaskConverterTest.java
...a/org/activiti/editor/language/UserTaskConverterTest.java
+12
-1
modules/activiti-json-converter/src/test/resources/test.usertaskmodel.json
...json-converter/src/test/resources/test.usertaskmodel.json
+19
-0
modules/activiti-webapp-explorer2/src/main/resources/stencilset.json
...iviti-webapp-explorer2/src/main/resources/stencilset.json
+65
-2
未找到文件。
modules/activiti-json-converter/src/main/java/org/activiti/editor/constants/StencilConstants.java
浏览文件 @
05c8a821
...
...
@@ -146,9 +146,15 @@ public interface StencilConstants {
final
String
PROPERTY_USERTASK_ASSIGNMENT
=
"usertaskassignment"
;
final
String
PROPERTY_USERTASK_ASSIGNMENT_TYPE
=
"assignment_type"
;
final
String
PROPERTY_USERTASK_ASSIGNMENT_EXPRESSION
=
"resourceassignmentexpr"
;
final
String
PROPERTY_USERTASK_OWNER
=
"owner"
;
final
String
PROPERTY_USERTASK_ASSIGNEE
=
"assignee"
;
final
String
PROPERTY_USERTASK_CANDIDATE_USERS
=
"candidateUsers"
;
final
String
PROPERTY_USERTASK_CANDIDATE_GROUPS
=
"candidateGroups"
;
final
String
PROPERTY_USERTASK_CUSTOM_IDENTITY_LINKS
=
"customidentitylinks"
;
final
String
PROPERTY_USERTASK_IDENTITY_TYPE
=
"identity_type"
;
final
String
PROPERTY_USERTASK_IDENTITY_LINK_TYPE
=
"identity_link_type"
;
final
String
PROPERTY_USERTASK_IDENTITY_LINK_EXPRESSION
=
"identitylinkexpr"
;
final
String
PROPERTY_SERVICETASK_CLASS
=
"servicetaskclass"
;
final
String
PROPERTY_SERVICETASK_EXPRESSION
=
"servicetaskexpression"
;
...
...
@@ -198,4 +204,4 @@ public interface StencilConstants {
final
String
PROPERTY_IOPARAMETER_TARGET
=
"ioparameter_target"
;
final
String
PROPERTY_SEQUENCEFLOW_CONDITION
=
"conditionsequenceflow"
;
}
}
\ No newline at end of file
modules/activiti-json-converter/src/main/java/org/activiti/editor/language/json/converter/UserTaskJsonConverter.java
浏览文件 @
05c8a821
...
...
@@ -12,8 +12,12 @@
*/
package
org.activiti.editor.language.json.converter
;
import
java.util.ArrayList
;
import
java.util.HashSet
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
org.activiti.bpmn.model.BaseElement
;
import
org.activiti.bpmn.model.FlowElement
;
...
...
@@ -52,14 +56,22 @@ public class UserTaskJsonConverter extends BaseBpmnJsonConverter {
@Override
protected
void
convertElementToJson
(
ObjectNode
propertiesNode
,
FlowElement
flowElement
)
{
UserTask
userTask
=
(
UserTask
)
flowElement
;
String
owner
=
userTask
.
getOwner
();
String
assignee
=
userTask
.
getAssignee
();
String
candidateUsers
=
convertListToCommaSeparatedString
(
userTask
.
getCandidateUsers
());
String
candidateGroups
=
convertListToCommaSeparatedString
(
userTask
.
getCandidateGroups
());
if
(
StringUtils
.
isNotEmpty
(
assignee
)
||
StringUtils
.
isNotEmpty
(
candidateUsers
)
||
StringUtils
.
isNotEmpty
(
candidateGroups
))
{
if
(
StringUtils
.
isNotEmpty
(
owner
)
||
StringUtils
.
isNotEmpty
(
assignee
)
||
StringUtils
.
isNotEmpty
(
candidateUsers
)
||
StringUtils
.
isNotEmpty
(
candidateGroups
))
{
ObjectNode
assignmentNode
=
objectMapper
.
createObjectNode
();
ArrayNode
itemsNode
=
objectMapper
.
createArrayNode
();
if
(
StringUtils
.
isNotEmpty
(
owner
))
{
ObjectNode
assignmentItemNode
=
objectMapper
.
createObjectNode
();
assignmentItemNode
.
put
(
PROPERTY_USERTASK_ASSIGNMENT_TYPE
,
PROPERTY_USERTASK_OWNER
);
assignmentItemNode
.
put
(
PROPERTY_USERTASK_ASSIGNMENT_EXPRESSION
,
owner
);
itemsNode
.
add
(
assignmentItemNode
);
}
if
(
StringUtils
.
isNotEmpty
(
assignee
))
{
ObjectNode
assignmentItemNode
=
objectMapper
.
createObjectNode
();
assignmentItemNode
.
put
(
PROPERTY_USERTASK_ASSIGNMENT_TYPE
,
PROPERTY_USERTASK_ASSIGNEE
);
...
...
@@ -84,8 +96,37 @@ public class UserTaskJsonConverter extends BaseBpmnJsonConverter {
assignmentNode
.
put
(
"totalCount"
,
itemsNode
.
size
());
assignmentNode
.
put
(
EDITOR_PROPERTIES_GENERAL_ITEMS
,
itemsNode
);
propertiesNode
.
put
(
PROPERTY_USERTASK_ASSIGNMENT
,
assignmentNode
);
}
if
(
userTask
.
getCustomUserIdentityLinks
().
size
()
>
0
||
userTask
.
getCustomGroupIdentityLinks
().
size
()
>
0
){
ObjectNode
customIdentityLinksNode
=
objectMapper
.
createObjectNode
();
ArrayNode
itemsNode
=
objectMapper
.
createArrayNode
();
for
(
String
linkType
:
userTask
.
getCustomUserIdentityLinks
().
keySet
()){
ObjectNode
identityItemNode
=
objectMapper
.
createObjectNode
();
identityItemNode
.
put
(
PROPERTY_USERTASK_IDENTITY_TYPE
,
"user"
);
identityItemNode
.
put
(
PROPERTY_USERTASK_IDENTITY_LINK_TYPE
,
linkType
);
String
users
=
convertListToCommaSeparatedString
(
new
ArrayList
<
String
>(
userTask
.
getCustomUserIdentityLinks
().
get
(
linkType
)));
identityItemNode
.
put
(
PROPERTY_USERTASK_IDENTITY_LINK_EXPRESSION
,
users
);
itemsNode
.
add
(
identityItemNode
);
}
for
(
String
linkType
:
userTask
.
getCustomGroupIdentityLinks
().
keySet
()){
ObjectNode
identityItemNode
=
objectMapper
.
createObjectNode
();
identityItemNode
.
put
(
PROPERTY_USERTASK_IDENTITY_TYPE
,
"group"
);
identityItemNode
.
put
(
PROPERTY_USERTASK_IDENTITY_LINK_TYPE
,
linkType
);
String
groups
=
convertListToCommaSeparatedString
(
new
ArrayList
<
String
>(
userTask
.
getCustomGroupIdentityLinks
().
get
(
linkType
)));
identityItemNode
.
put
(
PROPERTY_USERTASK_IDENTITY_LINK_EXPRESSION
,
groups
);
itemsNode
.
add
(
identityItemNode
);
}
customIdentityLinksNode
.
put
(
"totalCount"
,
itemsNode
.
size
());
customIdentityLinksNode
.
put
(
EDITOR_PROPERTIES_GENERAL_ITEMS
,
itemsNode
);
propertiesNode
.
put
(
PROPERTY_USERTASK_CUSTOM_IDENTITY_LINKS
,
customIdentityLinksNode
);
}
if
(
userTask
.
getPriority
()
!=
null
)
{
setPropertyValue
(
PROPERTY_PRIORITY
,
userTask
.
getPriority
().
toString
(),
propertiesNode
);
}
...
...
@@ -117,6 +158,8 @@ public class UserTaskJsonConverter extends BaseBpmnJsonConverter {
String
assignmentType
=
assignmentItemNode
.
get
(
PROPERTY_USERTASK_ASSIGNMENT_TYPE
).
asText
();
if
(
PROPERTY_USERTASK_ASSIGNEE
.
equals
(
assignmentType
))
{
task
.
setAssignee
(
assignmentItemNode
.
get
(
PROPERTY_USERTASK_ASSIGNMENT_EXPRESSION
).
asText
());
}
else
if
(
PROPERTY_USERTASK_OWNER
.
equals
(
assignmentType
))
{
task
.
setOwner
(
assignmentItemNode
.
get
(
PROPERTY_USERTASK_ASSIGNMENT_EXPRESSION
).
asText
());
}
else
if
(
PROPERTY_USERTASK_CANDIDATE_USERS
.
equals
(
assignmentType
))
{
task
.
setCandidateUsers
(
getValueAsList
(
PROPERTY_USERTASK_ASSIGNMENT_EXPRESSION
,
assignmentItemNode
));
}
else
if
(
PROPERTY_USERTASK_CANDIDATE_GROUPS
.
equals
(
assignmentType
))
{
...
...
@@ -126,7 +169,42 @@ public class UserTaskJsonConverter extends BaseBpmnJsonConverter {
}
}
}
JsonNode
customIdentityLinksNode
=
getProperty
(
PROPERTY_USERTASK_CUSTOM_IDENTITY_LINKS
,
elementNode
);
if
(
customIdentityLinksNode
!=
null
)
{
JsonNode
itemsNode
=
customIdentityLinksNode
.
get
(
EDITOR_PROPERTIES_GENERAL_ITEMS
);
if
(
itemsNode
!=
null
)
{
Iterator
<
JsonNode
>
customIdentityLinksIterator
=
itemsNode
.
elements
();
while
(
customIdentityLinksIterator
.
hasNext
())
{
JsonNode
customIdentityLinksItemNode
=
customIdentityLinksIterator
.
next
();
if
(
customIdentityLinksItemNode
.
get
(
PROPERTY_USERTASK_IDENTITY_TYPE
)
!=
null
&&
customIdentityLinksItemNode
.
get
(
PROPERTY_USERTASK_IDENTITY_LINK_TYPE
)
!=
null
&&
customIdentityLinksItemNode
.
get
(
PROPERTY_USERTASK_IDENTITY_LINK_EXPRESSION
)
!=
null
)
{
String
identityType
=
customIdentityLinksItemNode
.
get
(
PROPERTY_USERTASK_IDENTITY_TYPE
).
asText
();
String
identityLinkType
=
customIdentityLinksItemNode
.
get
(
PROPERTY_USERTASK_IDENTITY_LINK_TYPE
).
asText
();
List
<
String
>
identitiesList
=
getValueAsList
(
PROPERTY_USERTASK_IDENTITY_LINK_EXPRESSION
,
customIdentityLinksItemNode
);
if
(
"user"
.
equals
(
identityType
))
{
Set
<
String
>
users
=
task
.
getCustomUserIdentityLinks
().
get
(
identityLinkType
);
if
(
users
==
null
){
users
=
new
HashSet
<
String
>();
task
.
getCustomUserIdentityLinks
().
put
(
identityLinkType
,
users
);
}
users
.
addAll
(
identitiesList
);
}
else
if
(
"group"
.
equals
(
identityType
))
{
Set
<
String
>
groups
=
task
.
getCustomGroupIdentityLinks
().
get
(
identityLinkType
);
if
(
groups
==
null
){
groups
=
new
HashSet
<
String
>();
task
.
getCustomGroupIdentityLinks
().
put
(
identityLinkType
,
groups
);
}
groups
.
addAll
(
identitiesList
);
}
}
}
}
}
convertJsonToFormProperties
(
elementNode
,
task
);
return
task
;
}
}
}
\ No newline at end of file
modules/activiti-json-converter/src/test/java/org/activiti/editor/language/UserTaskConverterTest.java
浏览文件 @
05c8a821
...
...
@@ -49,7 +49,9 @@ public class UserTaskConverterTest extends AbstractConverterTest {
assertEquals
(
"testKey"
,
userTask
.
getFormKey
());
assertEquals
(
"40"
,
userTask
.
getPriority
());
assertEquals
(
"2012-11-01"
,
userTask
.
getDueDate
());
assertEquals
(
"defaultCategory"
,
userTask
.
getCategory
());
assertEquals
(
"gonzo"
,
userTask
.
getOwner
());
assertEquals
(
"kermit"
,
userTask
.
getAssignee
());
assertEquals
(
2
,
userTask
.
getCandidateUsers
().
size
());
assertTrue
(
userTask
.
getCandidateUsers
().
contains
(
"kermit"
));
...
...
@@ -58,6 +60,15 @@ public class UserTaskConverterTest extends AbstractConverterTest {
assertTrue
(
userTask
.
getCandidateGroups
().
contains
(
"management"
));
assertTrue
(
userTask
.
getCandidateGroups
().
contains
(
"sales"
));
assertEquals
(
2
,
userTask
.
getCustomUserIdentityLinks
().
size
());
assertEquals
(
1
,
userTask
.
getCustomGroupIdentityLinks
().
size
());
assertTrue
(
userTask
.
getCustomUserIdentityLinks
().
get
(
"bizAdmin"
).
contains
(
"kermit"
));
assertTrue
(
userTask
.
getCustomGroupIdentityLinks
().
get
(
"bizAdmin"
).
contains
(
"management"
));
assertTrue
(
userTask
.
getCustomGroupIdentityLinks
().
get
(
"bizAdmin"
).
contains
(
"sales"
));
assertTrue
(
userTask
.
getCustomUserIdentityLinks
().
get
(
"manager"
).
contains
(
"fozzie"
));
assertTrue
(
userTask
.
getCustomUserIdentityLinks
().
get
(
"manager"
).
contains
(
"gonzo"
));
List
<
FormProperty
>
formProperties
=
userTask
.
getFormProperties
();
assertEquals
(
2
,
formProperties
.
size
());
FormProperty
formProperty
=
formProperties
.
get
(
0
);
...
...
@@ -102,4 +113,4 @@ public class UserTaskConverterTest extends AbstractConverterTest {
assertNotNull
(
flow
.
getSourceRef
());
assertNotNull
(
flow
.
getTargetRef
());
}
}
}
\ No newline at end of file
modules/activiti-json-converter/src/test/resources/test.usertaskmodel.json
浏览文件 @
05c8a821
...
...
@@ -39,6 +39,7 @@
"duedatedefinition"
:
"2012-11-01"
,
"exclusivedefinition"
:
"No"
,
"formkeydefinition"
:
"testKey"
,
"categoryDefinition"
:
"defaultCategory"
,
"formproperties"
:
{
"items"
:
[
{
"formproperty_expression"
:
"${expression}"
,
"formproperty_id"
:
"formId"
,
"formproperty_name"
:
"formName"
,
...
...
@@ -62,6 +63,9 @@
"usertaskassignment"
:
{
"items"
:
[
{
"assignment_type"
:
"assignee"
,
"resourceassignmentexpr"
:
"kermit"
},
{
"assignment_type"
:
"owner"
,
"resourceassignmentexpr"
:
"gonzo"
},
{
"assignment_type"
:
"candidateUsers"
,
"resourceassignmentexpr"
:
"kermit,fozzie"
},
...
...
@@ -69,6 +73,21 @@
"resourceassignmentexpr"
:
"management,sales"
}
],
"totalCount"
:
4
},
"customidentitylinks"
:
{
"items"
:
[
{
"identity_type"
:
"user"
,
"identity_link_type"
:
"manager"
,
"identitylinkexpr"
:
"fozzie, gonzo"
},
{
"identity_type"
:
"user"
,
"identity_link_type"
:
"bizAdmin"
,
"identitylinkexpr"
:
"kermit"
},
{
"identity_type"
:
"group"
,
"identity_link_type"
:
"bizAdmin"
,
"identitylinkexpr"
:
"management,sales"
}
],
"totalCount"
:
3
}
},
...
...
modules/activiti-webapp-explorer2/src/main/resources/stencilset.json
浏览文件 @
05c8a821
...
...
@@ -100,7 +100,15 @@
"value"
:
""
,
"description"
:
"Priority of the user task."
,
"popular"
:
true
}
]
},
{
"id"
:
"categoryDefinition"
,
"type"
:
"String"
,
"title"
:
"Category"
,
"value"
:
""
,
"description"
:
"Category of the user task."
,
"popular"
:
true
}
]
},
{
"name"
:
"usertaskassignment"
,
"properties"
:
[
{
...
...
@@ -136,6 +144,12 @@
"title_de"
:
"PotentialOwner"
,
"value"
:
"candidateGroups"
,
"refToView"
:
""
},
{
"id"
:
"c4"
,
"title"
:
"Owner"
,
"title_de"
:
"Owner"
,
"value"
:
"owner"
,
"refToView"
:
""
}
]
},
{
"id"
:
"resourceassignmentexpr"
,
...
...
@@ -150,6 +164,55 @@
}
]
}
]
},
{
"name"
:
"customidentitylinks"
,
"properties"
:
[
{
"id"
:
"customidentitylinks"
,
"type"
:
"Complex"
,
"title"
:
"Identity Links"
,
"value"
:
""
,
"description"
:
"Custom Assignment definition for the user task"
,
"popular"
:
true
,
"complexItems"
:
[
{
"id"
:
"identity_type"
,
"name"
:
"Identity Type"
,
"type"
:
"Choice"
,
"value"
:
""
,
"width"
:
80
,
"optional"
:
false
,
"items"
:
[
{
"id"
:
"c1"
,
"title"
:
"User"
,
"title_de"
:
"User"
,
"value"
:
"user"
,
"refToView"
:
""
},
{
"id"
:
"c2"
,
"title"
:
"Group"
,
"title_de"
:
"Group"
,
"value"
:
"group"
,
"refToView"
:
""
}]
},
{
"id"
:
"identity_link_type"
,
"name"
:
"Identity Link Type"
,
"type"
:
"String"
,
"description"
:
"This defines the expression used for the resource assignment."
,
"description_de"
:
"Definiert den Ausdruck, der fr die Zordung von Ressourcen genutzt wird."
,
"value"
:
""
,
"width"
:
200
,
"optional"
:
true
},
{
"id"
:
"identitylinkexpr"
,
"name"
:
"Resource assignment expression"
,
"type"
:
"String"
,
"description"
:
"This defines the expression used for the resource assignment."
,
"description_de"
:
"Definiert den Ausdruck, der fr die Zordung von Ressourcen genutzt wird."
,
"value"
:
""
,
"width"
:
200
,
"optional"
:
true
}
]
}
]
},
{
"name"
:
"formdefinition"
,
"properties"
:
[
{
"id"
:
"formproperties"
,
...
...
@@ -1225,7 +1288,7 @@
"view"
:
"activity/usertask.svg"
,
"icon"
:
"activity/list/type.user.png"
,
"groups"
:
[
"Activities"
],
"propertyPackages"
:
[
"elementbase"
,
"baseattributes"
,
"usertaskbase"
,
"usertaskassignment"
,
"formdefinition"
,
"tasklistenersbase"
,
"asynchronousbase"
,
"loopcharacteristics"
,
"activity"
],
"propertyPackages"
:
[
"elementbase"
,
"baseattributes"
,
"usertaskbase"
,
"usertaskassignment"
,
"
customidentitylinks"
,
"
formdefinition"
,
"tasklistenersbase"
,
"asynchronousbase"
,
"loopcharacteristics"
,
"activity"
],
"roles"
:
[
"sequence_start"
,
"Activity"
,
"sequence_end"
,
"ActivitiesMorph"
,
"all"
]
},
{
"type"
:
"node"
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录