Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
datacollector
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
chenweisong
datacollector
Commits
ee6e03cf
Commit
ee6e03cf
authored
Mar 14, 2020
by
chenweisong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新
parent
d7ac0dd2
Hide whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
460 additions
and
1340 deletions
+460
-1340
Swagger2Config.java
...n/java/com/keymobile/rest/common/conf/Swagger2Config.java
+2
-2
AssignmentConstant.java
...om/keymobile/rest/common/constant/AssignmentConstant.java
+18
-0
TemplateConstant.java
.../com/keymobile/rest/common/constant/TemplateConstant.java
+4
-0
ExcelController.java
...n/java/com/keymobile/rest/controller/ExcelController.java
+74
-0
TaskController.java
...in/java/com/keymobile/rest/controller/TaskController.java
+78
-125
UserController.java
...in/java/com/keymobile/rest/controller/UserController.java
+38
-0
ExcelDao.java
src/main/java/com/keymobile/rest/dao/ExcelDao.java
+4
-4
JobDao.java
src/main/java/com/keymobile/rest/dao/JobDao.java
+5
-5
JobInfoDao.java
src/main/java/com/keymobile/rest/dao/JobInfoDao.java
+5
-5
RecordDataDao.java
src/main/java/com/keymobile/rest/dao/RecordDataDao.java
+2
-2
Assignment.java
src/main/java/com/keymobile/rest/model/Assignment.java
+8
-30
DataInfo.java
src/main/java/com/keymobile/rest/model/DataInfo.java
+3
-5
Process.java
src/main/java/com/keymobile/rest/model/Process.java
+29
-0
ProcessInfo.java
src/main/java/com/keymobile/rest/model/ProcessInfo.java
+4
-7
Template.java
src/main/java/com/keymobile/rest/model/Template.java
+2
-5
User.java
src/main/java/com/keymobile/rest/model/User.java
+0
-2
ExcelService.java
src/main/java/com/keymobile/rest/service/ExcelService.java
+18
-18
JobInfoService.java
src/main/java/com/keymobile/rest/service/JobInfoService.java
+8
-8
JobService.java
src/main/java/com/keymobile/rest/service/JobService.java
+25
-22
RecordDataService.java
...in/java/com/keymobile/rest/service/RecordDataService.java
+7
-7
UserService.java
src/main/java/com/keymobile/rest/service/UserService.java
+5
-3
ExcelForm.java
src/main/java/com/keymobile/rest/vo/ExcelForm.java
+2
-7
RecordDataForm.java
src/main/java/com/keymobile/rest/vo/RecordDataForm.java
+2
-2
CompDataStandardProcess(new).bpmn
src/main/resources/CompDataStandardProcess(new).bpmn
+0
-294
CompDataStandardProcess.bpmn
src/main/resources/CompDataStandardProcess.bpmn
+0
-194
GroupDataStandardProcess.bpmn
src/main/resources/GroupDataStandardProcess.bpmn
+0
-194
RecordProcess.bpmn
src/main/resources/RecordProcess.bpmn
+0
-129
RecordStandardProcess.bpmn
src/main/resources/RecordStandardProcess.bpmn
+115
-106
TestProcess.bpmn
src/main/resources/TestProcess.bpmn
+0
-154
application-test.yml
src/main/resources/application-test.yml
+2
-2
ProcessTest.java
src/test/java/com/keymobile/ProcessTest.java
+0
-8
No files found.
src/main/java/com/keymobile/rest/common/conf/Swagger2Config.java
View file @
ee6e03cf
...
@@ -33,7 +33,7 @@ public class Swagger2Config {
...
@@ -33,7 +33,7 @@ public class Swagger2Config {
ApiInfo
apiInfo
()
{
ApiInfo
apiInfo
()
{
return
new
ApiInfoBuilder
()
return
new
ApiInfoBuilder
()
.
title
(
"补录系统"
)
.
title
(
"补录系统"
)
.
description
(
"补录系统
api
"
)
.
description
(
"补录系统
接口列表
"
)
.
termsOfServiceUrl
(
""
)
.
termsOfServiceUrl
(
""
)
.
version
(
"1.0.0"
)
.
version
(
"1.0.0"
)
.
contact
(
new
Contact
(
""
,
""
,
""
))
.
contact
(
new
Contact
(
""
,
""
,
""
))
...
@@ -55,7 +55,7 @@ public class Swagger2Config {
...
@@ -55,7 +55,7 @@ public class Swagger2Config {
return
new
Docket
(
DocumentationType
.
SWAGGER_2
)
return
new
Docket
(
DocumentationType
.
SWAGGER_2
)
.
host
(
this
.
host
)
.
host
(
this
.
host
)
.
select
()
.
select
()
.
apis
(
RequestHandlerSelectors
.
basePackage
(
"com.keymobile.rest.c
trl
"
))
.
apis
(
RequestHandlerSelectors
.
basePackage
(
"com.keymobile.rest.c
ontroller
"
))
.
paths
(
PathSelectors
.
any
())
.
paths
(
PathSelectors
.
any
())
.
build
()
.
build
()
.
apiInfo
(
this
.
apiInfo
());
.
apiInfo
(
this
.
apiInfo
());
...
...
src/main/java/com/keymobile/rest/common/constant/AssignmentConstant.java
0 → 100644
View file @
ee6e03cf
package
com
.
keymobile
.
rest
.
common
.
constant
;
public
interface
AssignmentConstant
{
int
KIND_RECORD
=
1
;
int
KIND_AUDIT
=
2
;
int
TYPE_AUTO
=
2
;
int
TYPE_MANUAL
=
1
;
int
STATUS_RELEASED
=
2
;
int
STATUS_UNRELEASED
=
1
;
int
STATUS_COMPLETED
=
3
;
int
AUDIT_NEED
=
1
;
int
AUDIT_NO_NEED
=
2
;
}
src/main/java/com/keymobile/rest/common/constant/TemplateConstant.java
0 → 100644
View file @
ee6e03cf
package
com
.
keymobile
.
rest
.
common
.
constant
;
public
interface
TemplateConstant
{
}
src/main/java/com/keymobile/rest/controller/ExcelController.java
0 → 100644
View file @
ee6e03cf
package
com
.
keymobile
.
rest
.
controller
;
import
com.google.common.collect.ImmutableMap
;
import
com.keymobile.rest.common.bean.ApiResponse
;
import
com.keymobile.rest.model.*
;
import
com.keymobile.rest.service.ExcelService
;
import
com.keymobile.rest.service.JobInfoService
;
import
com.keymobile.rest.service.UserService
;
import
com.keymobile.rest.vo.RecordDataForm
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.activiti.engine.*
;
import
org.activiti.engine.task.Task
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
@Api
(
value
=
"模板控制器"
)
@RestController
@RequestMapping
(
path
=
"/api/excel"
)
public
class
ExcelController
{
@Autowired
private
RecordDataService
recordDataService
;
@Autowired
private
ExcelService
excelService
;
@Autowired
private
JobInfoService
jobInfoService
;
@Autowired
private
UserService
userService
;
@Autowired
private
TaskService
taskService
;
@ApiOperation
(
value
=
"填写补录数据"
)
@PostMapping
(
value
=
"/excel/saveData"
)
public
ApiResponse
saveRecordData
(
@RequestBody
RecordDataForm
form
)
{
User
curUser
=
userService
.
getNormalUser
();
Template
template
=
excelService
.
get
(
form
.
getExcelId
());
ProcessInfo
processInfo
=
jobInfoService
.
findByExcelIdAndUserId
(
form
.
getExcelId
(),
curUser
.
getId
());
DataInfo
dataInfo
;
if
(
form
.
getDataId
()
!=
null
)
{
dataInfo
=
recordDataService
.
update
(
form
);
}
else
{
form
.
setProcessInfo
(
processInfo
);
dataInfo
=
recordDataService
.
save
(
form
);
}
Assignment
assignment
=
template
.
getAssignment
();
String
processId
=
assignment
.
getProcessId
();
// 发起人把流程发送到下一个人
List
<
Task
>
taskList
=
taskService
.
createTaskQuery
().
processInstanceId
(
processId
)
.
taskAssignee
(
curUser
.
getUsername
()).
list
();
Task
task
=
taskList
.
get
(
0
);
User
judge
=
userService
.
getAudit
();
taskService
.
complete
(
task
.
getId
(),
ImmutableMap
.
of
(
"judgeId"
,
judge
.
getUsername
()));
return
ApiResponse
.
ok
(
dataInfo
.
getId
());
}
@ApiOperation
(
value
=
"传excelId过来,获取用户填写的数据"
)
@PostMapping
(
value
=
"/excel/getData"
)
public
ApiResponse
getRecordData
(
@RequestParam
long
excelId
)
{
User
curUser
=
userService
.
getNormalUser
();
ProcessInfo
processInfo
=
jobInfoService
.
findByExcelIdAndUserId
(
excelId
,
curUser
.
getId
());
List
<
DataInfo
>
dataInfoList
=
processInfo
.
getDataInfoList
();
if
(
dataInfoList
.
size
()
>
0
)
{
return
ApiResponse
.
ok
(
dataInfoList
.
get
(
0
));
}
else
{
return
ApiResponse
.
ok
();
}
}
}
src/main/java/com/keymobile/rest/c
trl/IndexCtrl
.java
→
src/main/java/com/keymobile/rest/c
ontroller/TaskController
.java
View file @
ee6e03cf
package
com
.
keymobile
.
rest
.
c
trl
;
package
com
.
keymobile
.
rest
.
c
ontroller
;
import
com.google.common.collect.ImmutableMap
;
import
com.google.common.collect.ImmutableMap
;
import
com.keymobile.activiti.service.formService.FormExcelFileService
;
import
com.keymobile.rest.common.bean.ApiResponse
;
import
com.keymobile.rest.common.bean.ApiResponse
;
import
com.keymobile.rest.common.validator.TwinkleValidator
;
import
com.keymobile.rest.common.validator.TwinkleValidator
;
import
com.keymobile.rest.model.*
;
import
com.keymobile.rest.model.Template
;
import
com.keymobile.rest.service.*
;
import
com.keymobile.rest.model.Assignment
;
import
com.keymobile.rest.vo.*
;
import
com.keymobile.rest.model.ProcessInfo
;
import
com.keymobile.rest.model.User
;
import
com.keymobile.rest.service.ExcelService
;
import
com.keymobile.rest.service.JobInfoService
;
import
com.keymobile.rest.service.JobService
;
import
com.keymobile.rest.service.UserService
;
import
com.keymobile.rest.vo.ExcelForm
;
import
com.keymobile.rest.vo.JobForm
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiParam
;
import
io.swagger.annotations.ApiParam
;
import
lombok.extern.java.Log
;
import
org.activiti.engine.*
;
import
org.activiti.engine.*
;
import
org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl
;
import
org.activiti.engine.repository.Deployment
;
import
org.activiti.engine.repository.Deployment
;
import
org.activiti.engine.repository.ProcessDefinition
;
import
org.activiti.engine.repository.ProcessDefinition
;
import
org.activiti.engine.runtime.ProcessInstance
;
import
org.activiti.engine.runtime.ProcessInstance
;
...
@@ -24,10 +29,14 @@ import org.springframework.web.bind.annotation.*;
...
@@ -24,10 +29,14 @@ import org.springframework.web.bind.annotation.*;
import
java.util.*
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
@Log
@RestController
@RestController
@RequestMapping
(
path
=
"/api"
)
@RequestMapping
(
path
=
"/api/task"
)
public
class
IndexCtrl
{
@Api
(
value
=
"活动控制器"
)
public
class
TaskController
{
// 默认启动的固化流程
@Value
(
"${app.active-process}"
)
private
String
process
;
@Autowired
@Autowired
private
ManagementService
managementService
;
private
ManagementService
managementService
;
...
@@ -36,8 +45,6 @@ public class IndexCtrl {
...
@@ -36,8 +45,6 @@ public class IndexCtrl {
@Autowired
@Autowired
private
ExcelService
excelService
;
private
ExcelService
excelService
;
@Autowired
@Autowired
private
RecordDataService
recordDataService
;
@Autowired
private
JobInfoService
jobInfoService
;
private
JobInfoService
jobInfoService
;
@Autowired
@Autowired
private
UserService
userService
;
private
UserService
userService
;
...
@@ -47,20 +54,12 @@ public class IndexCtrl {
...
@@ -47,20 +54,12 @@ public class IndexCtrl {
private
RuntimeService
runtimeService
;
private
RuntimeService
runtimeService
;
@Autowired
@Autowired
private
TaskService
taskService
;
private
TaskService
taskService
;
@Autowired
private
HistoryService
historyService
;
@Autowired
private
ProcessEngineConfigurationImpl
processEngineConfiguration
;
@Autowired
private
FormExcelFileService
formExcelFileService
;
@Value
(
"${app.active-process}"
)
private
String
process
;
@ApiOperation
(
value
=
"获取首页活动列表"
)
@ApiOperation
(
value
=
"获取首页活动列表"
)
@PostMapping
(
value
=
"/
task/
list"
)
@PostMapping
(
value
=
"/list"
)
public
ApiResponse
getTaskList
(
@RequestParam
Integer
pageNo
,
@RequestParam
Integer
pageSize
,
@RequestParam
(
required
=
false
)
@ApiParam
(
name
=
"name"
,
value
=
"活动名称"
)
String
name
)
{
public
ApiResponse
getTaskList
(
@RequestParam
Integer
pageNo
,
@RequestParam
Integer
pageSize
,
@RequestParam
(
required
=
false
)
@ApiParam
(
name
=
"name"
,
value
=
"活动名称"
)
String
name
)
{
Page
<
Job
>
taskList
;
Page
<
Assignment
>
taskList
;
String
orderBy
=
"descending"
;
//
String
orderBy
=
"descending"
;
//
String
propBy
=
"id"
;
// groupBy
String
propBy
=
"id"
;
// groupBy
if
(
name
!=
null
)
{
if
(
name
!=
null
)
{
...
@@ -72,20 +71,20 @@ public class IndexCtrl {
...
@@ -72,20 +71,20 @@ public class IndexCtrl {
}
}
@ApiOperation
(
value
=
"查看活动"
)
@ApiOperation
(
value
=
"查看活动"
)
@PostMapping
(
value
=
"/
task/
get"
)
@PostMapping
(
value
=
"/get"
)
public
ApiResponse
get
(
@RequestParam
@ApiParam
(
required
=
true
,
name
=
"taskId"
,
value
=
"活动id"
)
Long
taskId
)
{
public
ApiResponse
get
(
@RequestParam
@ApiParam
(
required
=
true
,
name
=
"taskId"
,
value
=
"活动id"
)
Long
taskId
)
{
Job
job
=
jobService
.
get
(
taskId
);
Assignment
assignment
=
jobService
.
get
(
taskId
);
TwinkleValidator
.
notNull
(
job
,
"活动不存在"
);
TwinkleValidator
.
notNull
(
assignment
,
"活动不存在"
);
return
ApiResponse
.
ok
(
job
);
return
ApiResponse
.
ok
(
assignment
);
}
}
@ApiOperation
(
value
=
"补录任务列表及审核任务列表"
)
@ApiOperation
(
value
=
"补录任务列表及审核任务列表"
)
@PostMapping
(
value
=
"/
task/
getMyTasks"
)
@PostMapping
(
value
=
"/getMyTasks"
)
public
ApiResponse
getMyTasks
()
{
public
ApiResponse
getMyTasks
()
{
User
user
=
userService
.
getNormalUser
();
User
user
=
userService
.
getNormalUser
();
User
audit
=
userService
.
getAudit
();
User
audit
=
userService
.
getAudit
();
List
<
Job
>
job
List
=
new
ArrayList
<>();
List
<
Assignment
>
assignment
List
=
new
ArrayList
<>();
// 获取任务
// 获取任务
List
<
Task
>
tasks
=
taskService
.
createNativeTaskQuery
()
List
<
Task
>
tasks
=
taskService
.
createNativeTaskQuery
()
.
sql
(
"SELECT * FROM "
+
managementService
.
getTableName
(
Task
.
class
)
+
" T WHERE T.ASSIGNEE_ = #{assignee1} OR T.ASSIGNEE_ = #{assignee2}"
)
.
sql
(
"SELECT * FROM "
+
managementService
.
getTableName
(
Task
.
class
)
+
" T WHERE T.ASSIGNEE_ = #{assignee1} OR T.ASSIGNEE_ = #{assignee2}"
)
...
@@ -94,23 +93,23 @@ public class IndexCtrl {
...
@@ -94,23 +93,23 @@ public class IndexCtrl {
for
(
Task
task
:
tasks
)
{
for
(
Task
task
:
tasks
)
{
String
processId
=
task
.
getProcessInstanceId
();
String
processId
=
task
.
getProcessInstanceId
();
Job
job
=
jobService
.
findByProcessId
(
processId
);
Assignment
assignment
=
jobService
.
findByProcessId
(
processId
);
if
(
job
!=
null
&&
job
.
getStatus
()
!=
Job
.
STATUS_COMPLETED
)
{
if
(
assignment
!=
null
&&
assignment
.
getStatus
()
!=
Assignment
.
STATUS_COMPLETED
)
{
if
(
task
.
getTaskDefinitionKey
().
equals
(
"addData"
))
{
if
(
task
.
getTaskDefinitionKey
().
equals
(
"addData"
))
{
job
.
setKind
(
Job
.
KIND_RECORD
);
assignment
.
setKind
(
Assignment
.
KIND_RECORD
);
}
else
{
}
else
{
job
.
setKind
(
Job
.
KIND_AUDIT
);
assignment
.
setKind
(
Assignment
.
KIND_AUDIT
);
}
}
jobList
.
add
(
job
);
assignmentList
.
add
(
assignment
);
}
}
}
}
return
ApiResponse
.
ok
(
job
List
);
return
ApiResponse
.
ok
(
assignment
List
);
}
}
@ApiOperation
(
value
=
"新建活动"
)
@ApiOperation
(
value
=
"新建活动"
)
@PostMapping
(
value
=
"/
task/
create"
)
@PostMapping
(
value
=
"/create"
)
public
ApiResponse
createTask
(
@RequestBody
JobForm
form
)
{
public
ApiResponse
createTask
(
@RequestBody
JobForm
form
)
{
TwinkleValidator
.
notEmpty
(
form
.
getName
(),
"名称不能为空"
);
TwinkleValidator
.
notEmpty
(
form
.
getName
(),
"名称不能为空"
);
TwinkleValidator
.
notNull
(
form
.
getType
(),
"类型不能为空"
);
TwinkleValidator
.
notNull
(
form
.
getType
(),
"类型不能为空"
);
...
@@ -118,59 +117,59 @@ public class IndexCtrl {
...
@@ -118,59 +117,59 @@ public class IndexCtrl {
// 创建人
// 创建人
User
manager
=
userService
.
getManager
();
User
manager
=
userService
.
getManager
();
form
.
setUser
(
manager
);
form
.
setUser
(
manager
);
Job
job
=
jobService
.
save
(
form
);
Assignment
assignment
=
jobService
.
save
(
form
);
// 新建excel实例
// 新建excel实例
List
<
ExcelForm
>
excelFormList
=
form
.
getExcels
();
List
<
ExcelForm
>
excelFormList
=
form
.
getExcels
();
excelFormList
.
forEach
(
excelForm
->
{
excelFormList
.
forEach
(
excelForm
->
{
TwinkleValidator
.
notEmpty
(
excelForm
.
getUserIds
(),
"补录人不能为空"
);
TwinkleValidator
.
notEmpty
(
excelForm
.
getUserIds
(),
"补录人不能为空"
);
excelForm
.
set
Job
(
job
);
excelForm
.
set
Assignment
(
assignment
);
Excel
excel
=
excelService
.
save
(
excelForm
);
Template
template
=
excelService
.
save
(
excelForm
);
// 新建补录人员任务关联
// 新建补录人员任务关联
String
[]
userIds
=
excelForm
.
getUserIds
().
split
(
","
);
String
[]
userIds
=
excelForm
.
getUserIds
().
split
(
","
);
List
<
Long
>
userIdList
=
Arrays
.
asList
(
userIds
).
stream
().
map
(
Long:
:
parseLong
).
collect
(
Collectors
.
toList
());
List
<
Long
>
userIdList
=
Arrays
.
asList
(
userIds
).
stream
().
map
(
Long:
:
parseLong
).
collect
(
Collectors
.
toList
());
List
<
User
>
userList
=
userService
.
findAllByIdIn
(
userIdList
);
List
<
User
>
userList
=
userService
.
findAllByIdIn
(
userIdList
);
TwinkleValidator
.
notLessThan
(
userList
.
size
(),
1
,
"补录人员不存在"
);
TwinkleValidator
.
notLessThan
(
userList
.
size
(),
1
,
"补录人员不存在"
);
userList
.
forEach
(
user
->
{
userList
.
forEach
(
user
->
{
jobInfoService
.
save
(
user
,
excel
);
jobInfoService
.
save
(
user
,
template
);
});
});
});
});
return
ApiResponse
.
ok
(
job
.
getId
());
return
ApiResponse
.
ok
(
assignment
.
getId
());
}
}
@ApiOperation
(
value
=
"修改活动"
)
@ApiOperation
(
value
=
"修改活动"
)
@PostMapping
(
value
=
"/
task/
update"
)
@PostMapping
(
value
=
"/update"
)
public
ApiResponse
updateTask
(
@RequestBody
JobForm
form
)
{
public
ApiResponse
updateTask
(
@RequestBody
JobForm
form
)
{
TwinkleValidator
.
isFalse
((
form
.
getId
()
==
null
&&
form
.
getId
()
<=
0
),
"活动id不能为空"
);
TwinkleValidator
.
isFalse
((
form
.
getId
()
==
null
&&
form
.
getId
()
<=
0
),
"活动id不能为空"
);
Job
job
=
jobService
.
get
(
form
.
getId
());
Assignment
assignment
=
jobService
.
get
(
form
.
getId
());
TwinkleValidator
.
notNull
(
job
,
"活动不存在"
);
TwinkleValidator
.
notNull
(
assignment
,
"活动不存在"
);
int
status
=
job
.
getStatus
();
int
status
=
assignment
.
getStatus
();
TwinkleValidator
.
isFalse
(
status
!=
Job
.
STATUS_UNRELEASED
,
"活动已经发起"
);
TwinkleValidator
.
isFalse
(
status
!=
Assignment
.
STATUS_UNRELEASED
,
"活动已经发起"
);
TwinkleValidator
.
notEmpty
(
form
.
getName
(),
"名称不能为空"
);
TwinkleValidator
.
notEmpty
(
form
.
getName
(),
"名称不能为空"
);
TwinkleValidator
.
notNull
(
form
.
getType
(),
"类型不能为空"
);
TwinkleValidator
.
notNull
(
form
.
getType
(),
"类型不能为空"
);
TwinkleValidator
.
isFalse
((
form
.
getExcels
()
==
null
||
form
.
getExcels
().
size
()
==
0
),
"补录模板不能为空"
);
TwinkleValidator
.
isFalse
((
form
.
getExcels
()
==
null
||
form
.
getExcels
().
size
()
==
0
),
"补录模板不能为空"
);
job
.
setType
(
form
.
getType
());
assignment
.
setType
(
form
.
getType
());
job
.
setRemark
(
form
.
getRemark
());
assignment
.
setRemark
(
form
.
getRemark
());
job
.
setName
(
form
.
getName
());
assignment
.
setName
(
form
.
getName
());
jobService
.
update
(
job
);
jobService
.
update
(
assignment
);
// 新建excel实例
// 新建excel实例
List
<
ExcelForm
>
excelFormList
=
form
.
getExcels
();
List
<
ExcelForm
>
excelFormList
=
form
.
getExcels
();
excelFormList
.
forEach
(
excelForm
->
{
excelFormList
.
forEach
(
excelForm
->
{
Excel
excel
=
excelService
.
get
(
excelForm
.
getId
());
Template
template
=
excelService
.
get
(
excelForm
.
getId
());
TwinkleValidator
.
notNull
(
excel
,
"模板不存在"
);
TwinkleValidator
.
notNull
(
template
,
"模板不存在"
);
excel
.
setName
(
excelForm
.
getName
());
template
.
setName
(
excelForm
.
getName
());
excel
.
setConfig
(
excelForm
.
getConfig
());
template
.
setConfig
(
excelForm
.
getConfig
());
excel
.
setRemark
(
excelForm
.
getRemark
());
template
.
setRemark
(
excelForm
.
getRemark
());
excel
.
setDataAt
(
excelForm
.
getDataAt
());
template
.
setDataAt
(
excelForm
.
getDataAt
());
excelService
.
update
(
excel
);
excelService
.
update
(
template
);
});
});
return
ApiResponse
.
ok
(
job
.
getId
());
return
ApiResponse
.
ok
(
assignment
.
getId
());
}
}
@ApiOperation
(
value
=
"手动发起活动"
)
@ApiOperation
(
value
=
"手动发起活动"
)
@PostMapping
(
value
=
"/
task/
start"
)
@PostMapping
(
value
=
"/start"
)
public
ApiResponse
startTask
(
@RequestParam
Long
taskId
)
{
public
ApiResponse
startTask
(
@RequestParam
Long
taskId
)
{
Job
job
=
jobService
.
get
(
taskId
);
Assignment
assignment
=
jobService
.
get
(
taskId
);
TwinkleValidator
.
notNull
(
job
,
"活动不存在"
);
TwinkleValidator
.
notNull
(
assignment
,
"活动不存在"
);
// 部署补录流程
// 部署补录流程
Deployment
deploy
=
repositoryService
Deployment
deploy
=
repositoryService
.
createDeployment
()
.
createDeployment
()
...
@@ -181,53 +180,53 @@ public class IndexCtrl {
...
@@ -181,53 +180,53 @@ public class IndexCtrl {
createProcessDefinitionQuery
().
createProcessDefinitionQuery
().
deploymentId
(
deploy
.
getId
()).
deploymentId
(
deploy
.
getId
()).
singleResult
();
singleResult
();
String
inputUser
=
job
.
getUser
().
getUsername
();
String
inputUser
=
assignment
.
getUser
().
getUsername
();
Map
<
String
,
Object
>
variables
=
new
HashMap
<>();
Map
<
String
,
Object
>
variables
=
new
HashMap
<>();
variables
.
put
(
"managerId"
,
inputUser
);
variables
.
put
(
"managerId"
,
inputUser
);
//启动流程
//启动流程
ProcessInstance
processInstance
=
runtimeService
.
startProcessInstanceByKey
(
processDefinition
.
getKey
(),
variables
);
ProcessInstance
processInstance
=
runtimeService
.
startProcessInstanceByKey
(
processDefinition
.
getKey
(),
variables
);
job
.
setProcessId
(
processInstance
.
getId
());
assignment
.
setProcessId
(
processInstance
.
getId
());
jobService
.
update
(
job
);
jobService
.
update
(
assignment
);
// 发起人把流程发送到下一个人
// 发起人把流程发送到下一个人
Task
resultTask
=
taskService
.
createTaskQuery
().
processInstanceId
(
processInstance
.
getId
()).
Task
resultTask
=
taskService
.
createTaskQuery
().
processInstanceId
(
processInstance
.
getId
()).
taskInvolvedUser
(
inputUser
).
singleResult
();
taskInvolvedUser
(
inputUser
).
singleResult
();
// 根据活动查找需要填写的人 目前只支持一人
// 根据活动查找需要填写的人 目前只支持一人
List
<
Excel
>
excelList
=
job
.
getExcel
List
();
List
<
Template
>
templateList
=
assignment
.
getTemplate
List
();
TwinkleValidator
.
notLessThan
(
excel
List
.
size
(),
1
,
"补录模板不存在"
);
TwinkleValidator
.
notLessThan
(
template
List
.
size
(),
1
,
"补录模板不存在"
);
Excel
excel
=
excel
List
.
get
(
0
);
Template
template
=
template
List
.
get
(
0
);
List
<
JobInfo
>
jobInfoList
=
jobInfoService
.
findAllByExcelId
(
excel
.
getId
());
List
<
ProcessInfo
>
processInfoList
=
jobInfoService
.
findAllByExcelId
(
template
.
getId
());
TwinkleValidator
.
notLessThan
(
job
InfoList
.
size
(),
1
,
"补录人员不存在"
);
TwinkleValidator
.
notLessThan
(
process
InfoList
.
size
(),
1
,
"补录人员不存在"
);
taskService
.
complete
(
resultTask
.
getId
(),
ImmutableMap
.
of
(
"userId"
,
job
InfoList
.
get
(
0
).
getUser
().
getUsername
()));
taskService
.
complete
(
resultTask
.
getId
(),
ImmutableMap
.
of
(
"userId"
,
process
InfoList
.
get
(
0
).
getUser
().
getUsername
()));
return
ApiResponse
.
ok
();
return
ApiResponse
.
ok
();
}
}
@ApiOperation
(
value
=
"审核通过活动"
)
@ApiOperation
(
value
=
"审核通过活动"
)
@PostMapping
(
value
=
"/
task/
pass"
)
@PostMapping
(
value
=
"/pass"
)
public
ApiResponse
passTask
(
@RequestParam
Long
taskId
)
{
public
ApiResponse
passTask
(
@RequestParam
Long
taskId
)
{
Job
job
=
jobService
.
get
(
taskId
);
Assignment
assignment
=
jobService
.
get
(
taskId
);
// 完结活动, 流程跑完
// 完结活动, 流程跑完
User
judge
=
userService
.
getAudit
();
User
judge
=
userService
.
getAudit
();
List
<
Task
>
taskList
=
taskService
.
createTaskQuery
().
processInstanceId
(
job
.
getProcessId
())
List
<
Task
>
taskList
=
taskService
.
createTaskQuery
().
processInstanceId
(
assignment
.
getProcessId
())
.
taskAssignee
(
judge
.
getUsername
()).
list
();
.
taskAssignee
(
judge
.
getUsername
()).
list
();
TwinkleValidator
.
notLessThan
(
taskList
.
size
(),
1
,
"启动失败"
);
TwinkleValidator
.
notLessThan
(
taskList
.
size
(),
1
,
"启动失败"
);
Task
task
=
taskList
.
get
(
0
);
Task
task
=
taskList
.
get
(
0
);
taskService
.
complete
(
task
.
getId
(),
ImmutableMap
.
of
(
"pass"
,
"true"
));
taskService
.
complete
(
task
.
getId
(),
ImmutableMap
.
of
(
"pass"
,
"true"
));
job
.
setStatus
(
Job
.
STATUS_COMPLETED
);
assignment
.
setStatus
(
Assignment
.
STATUS_COMPLETED
);
jobService
.
update
(
job
);
jobService
.
update
(
assignment
);
return
ApiResponse
.
ok
();
return
ApiResponse
.
ok
();
}
}
@ApiOperation
(
value
=
"审核驳回活动"
)
@ApiOperation
(
value
=
"审核驳回活动"
)
@PostMapping
(
value
=
"/
task/
reject"
)
@PostMapping
(
value
=
"/reject"
)
public
ApiResponse
rejectTask
(
@RequestParam
Long
taskId
)
{
public
ApiResponse
rejectTask
(
@RequestParam
Long
taskId
)
{
Job
job
=
jobService
.
get
(
taskId
);
Assignment
assignment
=
jobService
.
get
(
taskId
);
// 完结活动, 流程跑完
// 完结活动, 流程跑完
User
judge
=
userService
.
getAudit
();
User
judge
=
userService
.
getAudit
();
List
<
Task
>
taskList
=
taskService
.
createTaskQuery
().
processInstanceId
(
job
.
getProcessId
())
List
<
Task
>
taskList
=
taskService
.
createTaskQuery
().
processInstanceId
(
assignment
.
getProcessId
())
.
taskAssignee
(
judge
.
getUsername
()).
list
();
.
taskAssignee
(
judge
.
getUsername
()).
list
();
TwinkleValidator
.
notLessThan
(
taskList
.
size
(),
1
,
"启动失败"
);
TwinkleValidator
.
notLessThan
(
taskList
.
size
(),
1
,
"启动失败"
);
Task
task
=
taskList
.
get
(
0
);
Task
task
=
taskList
.
get
(
0
);
...
@@ -235,57 +234,11 @@ public class IndexCtrl {
...
@@ -235,57 +234,11 @@ public class IndexCtrl {
return
ApiResponse
.
ok
();
return
ApiResponse
.
ok
();
}
}
// @ApiOperation(value = "查看当前活动进度")
// @ApiOperation(value = "查看当前活动进度")
// @PostMapping(value = "/task/viewTaskProcess")
// @PostMapping(value = "/task/viewTaskProcess")
// public ApiResponse viewTaskProcess(@RequestParam Long taskId) {
// public ApiResponse viewTaskProcess(@RequestParam Long taskId) {
// return ApiResponse.ok();
// return ApiResponse.ok();
// }
// }
@ApiOperation
(
value
=
"获取补录人员列表"
)
@PostMapping
(
value
=
"/user/list"
)
public
ApiResponse
getUserList
()
{
List
<
User
>
userList
=
userService
.
findAllByRole
(
User
.
ROLE_NORMAL
);
return
ApiResponse
.
ok
(
userList
);
}
@ApiOperation
(
value
=
"填写补录数据"
)
@PostMapping
(
value
=
"/excel/saveData"
)
public
ApiResponse
saveRecordData
(
@RequestBody
RecordDataForm
form
)
{
User
curUser
=
userService
.
getNormalUser
();
Excel
excel
=
excelService
.
get
(
form
.
getExcelId
());
JobInfo
jobInfo
=
jobInfoService
.
findByExcelIdAndUserId
(
form
.
getExcelId
(),
curUser
.
getId
());
RecordData
recordData
;
if
(
form
.
getDataId
()
!=
null
)
{
recordData
=
recordDataService
.
update
(
form
);
}
else
{
form
.
setJobInfo
(
jobInfo
);
recordData
=
recordDataService
.
save
(
form
);
}
Job
job
=
excel
.
getJob
();
String
processId
=
job
.
getProcessId
();
// 发起人把流程发送到下一个人
List
<
Task
>
taskList
=
taskService
.
createTaskQuery
().
processInstanceId
(
processId
)
.
taskAssignee
(
curUser
.
getUsername
()).
list
();
Task
task
=
taskList
.
get
(
0
);
User
judge
=
userService
.
getAudit
();
taskService
.
complete
(
task
.
getId
(),
ImmutableMap
.
of
(
"judgeId"
,
judge
.
getUsername
()));
return
ApiResponse
.
ok
(
recordData
.
getId
());
}
@ApiOperation
(
value
=
"传excelId过来,获取用户填写的数据"
)
@PostMapping
(
value
=
"/excel/getData"
)
public
ApiResponse
getRecordData
(
@RequestParam
long
excelId
)
{
User
curUser
=
userService
.
getNormalUser
();
JobInfo
jobInfo
=
jobInfoService
.
findByExcelIdAndUserId
(
excelId
,
curUser
.
getId
());
List
<
RecordData
>
recordDataList
=
jobInfo
.
getRecordDataList
();
if
(
recordDataList
.
size
()
>
0
)
{
return
ApiResponse
.
ok
(
recordDataList
.
get
(
0
));
}
else
{
return
ApiResponse
.
ok
();
}
}
}
}
src/main/java/com/keymobile/rest/controller/UserController.java
0 → 100644
View file @
ee6e03cf
package
com
.
keymobile
.
rest
.
controller
;
import
com.google.common.collect.ImmutableMap
;
import
com.keymobile.activiti.service.formService.FormExcelFileService
;
import
com.keymobile.rest.common.bean.ApiResponse
;
import
com.keymobile.rest.model.*
;
import
com.keymobile.rest.service.*
;
import
com.keymobile.rest.vo.*
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.activiti.engine.*
;
import
org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl
;
import
org.activiti.engine.task.Task
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.*
;
@Api
(
value
=
"用户控制器"
)
@RestController
@RequestMapping
(
path
=
"/api/user"
)
public
class
UserController
{
@Autowired
private
UserService
userService
;
@ApiOperation
(
value
=
"获取补录人员列表"
)
@PostMapping
(
value
=
"/user/list"
)
public
ApiResponse
getUserList
()
{
List
<
User
>
userList
=
userService
.
findAllByRole
(
User
.
ROLE_NORMAL
);
return
ApiResponse
.
ok
(
userList
);
}
}
src/main/java/com/keymobile/rest/dao/ExcelDao.java
View file @
ee6e03cf
package
com
.
keymobile
.
rest
.
dao
;
package
com
.
keymobile
.
rest
.
dao
;
import
com.keymobile.rest.model.
Excel
;
import
com.keymobile.rest.model.
Template
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
java.util.List
;
import
java.util.List
;
public
interface
ExcelDao
extends
JpaRepository
<
Excel
,
Long
>
{
public
interface
ExcelDao
extends
JpaRepository
<
Template
,
Long
>
{
List
<
Excel
>
findAllByIdIn
(
List
<
Long
>
ids
);
List
<
Template
>
findAllByIdIn
(
List
<
Long
>
ids
);
List
<
Excel
>
findAllByJobId
(
long
jid
);
List
<
Template
>
findAllByJobId
(
long
jid
);
}
}
src/main/java/com/keymobile/rest/dao/JobDao.java
View file @
ee6e03cf
package
com
.
keymobile
.
rest
.
dao
;
package
com
.
keymobile
.
rest
.
dao
;
import
com.keymobile.rest.model.
Job
;
import
com.keymobile.rest.model.
Assignment
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaRepository
;
public
interface
JobDao
extends
JpaRepository
<
Job
,
Long
>
{
public
interface
JobDao
extends
JpaRepository
<
Assignment
,
Long
>
{
Page
<
Job
>
findAll
(
Pageable
pageable
);
Page
<
Assignment
>
findAll
(
Pageable
pageable
);
Page
<
Job
>
findAllByNameLike
(
String
valueOf
,
Pageable
pageable
);
Page
<
Assignment
>
findAllByNameLike
(
String
valueOf
,
Pageable
pageable
);
Job
findByProcessId
(
String
pid
);
Assignment
findByProcessId
(
String
pid
);
}
}
src/main/java/com/keymobile/rest/dao/JobInfoDao.java
View file @
ee6e03cf
package
com
.
keymobile
.
rest
.
dao
;
package
com
.
keymobile
.
rest
.
dao
;
import
com.keymobile.rest.model.
Job
Info
;
import
com.keymobile.rest.model.
Process
Info
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
java.util.List
;
import
java.util.List
;
public
interface
JobInfoDao
extends
JpaRepository
<
Job
Info
,
Long
>
{
public
interface
JobInfoDao
extends
JpaRepository
<
Process
Info
,
Long
>
{
List
<
Job
Info
>
findAllByExcelId
(
long
eid
);
List
<
Process
Info
>
findAllByExcelId
(
long
eid
);
List
<
Job
Info
>
findAllByUserId
(
long
uid
);
List
<
Process
Info
>
findAllByUserId
(
long
uid
);
void
deleteAllByExcelId
(
long
eid
);
void
deleteAllByExcelId
(
long
eid
);
Job
Info
findByExcelIdAndUserId
(
long
eid
,
long
uid
);
Process
Info
findByExcelIdAndUserId
(
long
eid
,
long
uid
);
}
}
src/main/java/com/keymobile/rest/dao/RecordDataDao.java
View file @
ee6e03cf
package
com
.
keymobile
.
rest
.
dao
;
package
com
.
keymobile
.
rest
.
dao
;
import
com.keymobile.rest.model.
RecordData
;
import
com.keymobile.rest.model.
DataInfo
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaRepository
;
public
interface
RecordDataDao
extends
JpaRepository
<
RecordData
,
Long
>
{
public
interface
RecordDataDao
extends
JpaRepository
<
DataInfo
,
Long
>
{
...
...
src/main/java/com/keymobile/rest/model/
Job
.java
→
src/main/java/com/keymobile/rest/model/
Assignment
.java
View file @
ee6e03cf
package
com
.
keymobile
.
rest
.
model
;
package
com
.
keymobile
.
rest
.
model
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.NoArgsConstructor
;
import
org.hibernate.annotations.CreationTimestamp
;
import
org.hibernate.annotations.CreationTimestamp
;
...
@@ -13,28 +12,15 @@ import java.io.Serializable;
...
@@ -13,28 +12,15 @@ import java.io.Serializable;
import
java.util.List
;
import
java.util.List
;
/**
/**
* @name
流程、
任务
* @name
活动,
任务
* @desc 包含
属于哪个activiti流程、相关人员、附件信息id
* @desc 包含
一些活动的定义以及绑定一些spreadJs生成的excel模板
*/
*/
@JsonIgnoreProperties
(
value
=
{
"hibernateLazyInitializer"
,
"handler"
,
"fieldHandler"
})
@JsonIgnoreProperties
(
value
=
{
"hibernateLazyInitializer"
,
"handler"
,
"fieldHandler"
})
@NoArgsConstructor
// 自动生成无参数构造函数。
@NoArgsConstructor
@AllArgsConstructor
// 自动生成全参数构造函数。
@Data
@Data
@Entity
@Entity
public
class
Job
implements
Serializable
{
public
class
Assignment
implements
Serializable
{
public
static
int
KIND_RECORD
=
1
;
public
static
int
KIND_AUDIT
=
2
;
public
static
int
TYPE_AUTO
=
2
;
public
static
int
TYPE_MANUAL
=
1
;
public
static
int
STATUS_RELEASED
=
2
;
public
static
int
STATUS_UNRELEASED
=
1
;
public
static
int
STATUS_COMPLETED
=
3
;
public
static
int
AUDIT_NEED
=
1
;
public
static
int
AUDIT_NO_NEED
=
2
;
@Id
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
...
@@ -44,20 +30,17 @@ public class Job implements Serializable {
...
@@ -44,20 +30,17 @@ public class Job implements Serializable {
private
String
name
;
private
String
name
;
@Column
(
nullable
=
false
)
@Column
(
nullable
=
false
)
private
int
type
=
1
;
private
int
type
;
@Column
(
nullable
=
false
)
@Column
(
nullable
=
false
)
private
int
status
=
1
;
private
int
status
;
@Column
(
nullable
=
false
)
@Column
(
nullable
=
false
)
private
int
audit
=
1
;
private
int
needAudit
;
@Column
@Column
private
String
remark
;
private
String
remark
;
@Column
(
name
=
"process_id"
)
private
String
processId
;
// 报送频度 按年 按年 按周 按月 按日 自动推送
// 报送频度 按年 按年 按周 按月 按日 自动推送
@Column
(
name
=
"start_at"
)
@Column
(
name
=
"start_at"
)
private
Timestamp
startAt
;
private
Timestamp
startAt
;
...
@@ -67,14 +50,9 @@ public class Job implements Serializable {
...
@@ -67,14 +50,9 @@ public class Job implements Serializable {
@CreationTimestamp
@CreationTimestamp
private
Timestamp
createAt
;
private
Timestamp
createAt
;
@OneToMany
(
fetch
=
FetchType
.
EAGER
,
mappedBy
=
"job"
)
@OneToMany
(
fetch
=
FetchType
.
EAGER
,
mappedBy
=
"job"
)
private
List
<
Excel
>
excel
List
;
private
List
<
Template
>
template
List
;
@ManyToOne
@ManyToOne
private
User
user
;
private
User
user
;
@Transient
private
int
kind
;
}
}
src/main/java/com/keymobile/rest/model/
RecordData
.java
→
src/main/java/com/keymobile/rest/model/
DataInfo
.java
View file @
ee6e03cf
...
@@ -2,7 +2,6 @@ package com.keymobile.rest.model;
...
@@ -2,7 +2,6 @@ package com.keymobile.rest.model;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.NoArgsConstructor
;
import
org.hibernate.annotations.CreationTimestamp
;
import
org.hibernate.annotations.CreationTimestamp
;
...
@@ -12,14 +11,13 @@ import java.io.Serializable;
...
@@ -12,14 +11,13 @@ import java.io.Serializable;
import
java.sql.Timestamp
;
import
java.sql.Timestamp
;
/**
/**
*
spreadJs 填写的数据
*
已经填写的数据实例
*/
*/
@JsonIgnoreProperties
(
value
=
{
"hibernateLazyInitializer"
,
"handler"
,
"fieldHandler"
})
@JsonIgnoreProperties
(
value
=
{
"hibernateLazyInitializer"
,
"handler"
,
"fieldHandler"
})
@NoArgsConstructor
@NoArgsConstructor
@AllArgsConstructor
@Data
@Data
@Entity
@Entity
public
class
RecordData
implements
Serializable
{
public
class
DataInfo
implements
Serializable
{
@Id
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
...
@@ -34,5 +32,5 @@ public class RecordData implements Serializable {
...
@@ -34,5 +32,5 @@ public class RecordData implements Serializable {
@ManyToOne
(
fetch
=
FetchType
.
LAZY
)
@ManyToOne
(
fetch
=
FetchType
.
LAZY
)
@JsonIgnore
@JsonIgnore
private
JobInfo
job
Info
;
private
ProcessInfo
process
Info
;
}
}
src/main/java/com/keymobile/rest/model/Process.java
0 → 100644
View file @
ee6e03cf
package
com
.
keymobile
.
rest
.
model
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.persistence.*
;
import
java.io.Serializable
;
/**
* @name 进程
* @desc
*/
@JsonIgnoreProperties
(
value
=
{
"hibernateLazyInitializer"
,
"handler"
,
"fieldHandler"
})
@NoArgsConstructor
@Data
@Entity
public
class
Process
implements
Serializable
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
long
id
;
// activiti运行中的流程实例id
@Column
(
name
=
"process_id"
)
private
String
processId
;
}
src/main/java/com/keymobile/rest/model/
Job
Info.java
→
src/main/java/com/keymobile/rest/model/
Process
Info.java
View file @
ee6e03cf
package
com
.
keymobile
.
rest
.
model
;
package
com
.
keymobile
.
rest
.
model
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.NoArgsConstructor
;
import
org.hibernate.annotations.CreationTimestamp
;
import
org.hibernate.annotations.CreationTimestamp
;
...
@@ -13,14 +11,13 @@ import java.sql.Timestamp;
...
@@ -13,14 +11,13 @@ import java.sql.Timestamp;
import
java.util.List
;
import
java.util.List
;
/**
/**
*
spreadJs 补录人员信息
*
进程&指派人员关系
*/
*/
@JsonIgnoreProperties
(
value
=
{
"hibernateLazyInitializer"
,
"handler"
,
"fieldHandler"
})
@JsonIgnoreProperties
(
value
=
{
"hibernateLazyInitializer"
,
"handler"
,
"fieldHandler"
})
@NoArgsConstructor
@NoArgsConstructor
@AllArgsConstructor
@Data
@Data
@Entity
@Entity
public
class
Job
Info
implements
Serializable
{
public
class
Process
Info
implements
Serializable
{
@Id
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
...
@@ -31,12 +28,12 @@ public class JobInfo implements Serializable {
...
@@ -31,12 +28,12 @@ public class JobInfo implements Serializable {
private
Timestamp
createAt
;
private
Timestamp
createAt
;
@OneToOne
@OneToOne
private
Excel
excel
;
private
Template
template
;
@OneToOne
@OneToOne
private
User
user
;
private
User
user
;
@OneToMany
(
mappedBy
=
"jobInfo"
,
fetch
=
FetchType
.
EAGER
)
@OneToMany
(
mappedBy
=
"jobInfo"
,
fetch
=
FetchType
.
EAGER
)
List
<
RecordData
>
recordData
List
;
List
<
DataInfo
>
dataInfo
List
;
}
}
src/main/java/com/keymobile/rest/model/
Excel
.java
→
src/main/java/com/keymobile/rest/model/
Template
.java
View file @
ee6e03cf
...
@@ -2,7 +2,6 @@ package com.keymobile.rest.model;
...
@@ -2,7 +2,6 @@ package com.keymobile.rest.model;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.NoArgsConstructor
;
import
org.hibernate.annotations.CreationTimestamp
;
import
org.hibernate.annotations.CreationTimestamp
;
...
@@ -10,17 +9,15 @@ import org.hibernate.annotations.CreationTimestamp;
...
@@ -10,17 +9,15 @@ import org.hibernate.annotations.CreationTimestamp;
import
javax.persistence.*
;
import
javax.persistence.*
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.sql.Timestamp
;
import
java.sql.Timestamp
;
import
java.util.List
;
/**
/**
* spreadJs 配置的报表
* spreadJs 配置的报表
*/
*/
@JsonIgnoreProperties
(
value
=
{
"hibernateLazyInitializer"
,
"handler"
,
"fieldHandler"
})
@JsonIgnoreProperties
(
value
=
{
"hibernateLazyInitializer"
,
"handler"
,
"fieldHandler"
})
@NoArgsConstructor
@NoArgsConstructor
@AllArgsConstructor
@Data
@Data
@Entity
@Entity
public
class
Excel
implements
Serializable
{
public
class
Template
implements
Serializable
{
@Id
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
...
@@ -44,5 +41,5 @@ public class Excel implements Serializable {
...
@@ -44,5 +41,5 @@ public class Excel implements Serializable {
@ManyToOne
(
fetch
=
FetchType
.
LAZY
)
@ManyToOne
(
fetch
=
FetchType
.
LAZY
)
@JsonIgnore
@JsonIgnore
private
Job
job
;
private
Assignment
assignment
;
}
}
src/main/java/com/keymobile/rest/model/User.java
View file @
ee6e03cf
package
com
.
keymobile
.
rest
.
model
;
package
com
.
keymobile
.
rest
.
model
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.NoArgsConstructor
;
...
@@ -10,7 +9,6 @@ import java.io.Serializable;
...
@@ -10,7 +9,6 @@ import java.io.Serializable;
@JsonIgnoreProperties
(
value
=
{
"hibernateLazyInitializer"
,
"handler"
,
"fieldHandler"
})
@JsonIgnoreProperties
(
value
=
{
"hibernateLazyInitializer"
,
"handler"
,
"fieldHandler"
})
@NoArgsConstructor
@NoArgsConstructor
@AllArgsConstructor
@Data
@Data
@Entity
@Entity
public
class
User
implements
Serializable
{
public
class
User
implements
Serializable
{
...
...
src/main/java/com/keymobile/rest/service/ExcelService.java
View file @
ee6e03cf
...
@@ -2,7 +2,7 @@ package com.keymobile.rest.service;
...
@@ -2,7 +2,7 @@ package com.keymobile.rest.service;
import
com.keymobile.activiti.utils.DateUtil
;
import
com.keymobile.activiti.utils.DateUtil
;
import
com.keymobile.rest.dao.*
;
import
com.keymobile.rest.dao.*
;
import
com.keymobile.rest.model.
Excel
;
import
com.keymobile.rest.model.
Template
;
import
com.keymobile.rest.vo.ExcelForm
;
import
com.keymobile.rest.vo.ExcelForm
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -16,36 +16,36 @@ public class ExcelService {
...
@@ -16,36 +16,36 @@ public class ExcelService {
@Autowired
@Autowired
private
ExcelDao
excelDao
;
private
ExcelDao
excelDao
;
public
Excel
save
(
ExcelForm
form
)
{
public
Template
save
(
ExcelForm
form
)
{
Excel
excel
=
new
Excel
();
Template
template
=
new
Template
();
excel
.
setName
(
form
.
getName
());
template
.
setName
(
form
.
getName
());
excel
.
setDataAt
(
1
);
template
.
setDataAt
(
1
);
excel
.
setConfig
(
form
.
getConfig
());
template
.
setConfig
(
form
.
getConfig
());
excel
.
setRemark
(
form
.
getRemark
());
template
.
setRemark
(
form
.
getRemark
());
excel
.
setJob
(
form
.
getJob
());
template
.
setAssignment
(
form
.
getAssignment
());
Timestamp
now
=
Timestamp
.
valueOf
(
DateUtil
.
getDateTime
());
Timestamp
now
=
Timestamp
.
valueOf
(
DateUtil
.
getDateTime
());
excel
.
setCreateAt
(
now
);
template
.
setCreateAt
(
now
);
excel
=
excelDao
.
save
(
excel
);
template
=
excelDao
.
save
(
template
);
return
excel
;
return
template
;
}
}
public
Excel
get
(
long
id
)
{
public
Template
get
(
long
id
)
{
return
excelDao
.
getOne
(
id
);
return
excelDao
.
getOne
(
id
);
}
}
public
void
update
(
Excel
excel
)
{
public
void
update
(
Template
template
)
{
excelDao
.
save
(
excel
);
excelDao
.
save
(
template
);
}
}
public
List
<
Excel
>
findAllByIdIn
(
List
<
Long
>
ids
)
{
public
List
<
Template
>
findAllByIdIn
(
List
<
Long
>
ids
)
{
return
excelDao
.
findAllByIdIn
(
ids
);
return
excelDao
.
findAllByIdIn
(
ids
);
}
}
public
List
<
Excel
>
findAllByJobId
(
long
jid
)
{
public
List
<
Template
>
findAllByJobId
(
long
jid
)
{
return
excelDao
.
findAllByJobId
(
jid
);
return
excelDao
.
findAllByJobId
(
jid
);
}
}
public
void
saveAll
(
List
<
Excel
>
excel
List
)
{
public
void
saveAll
(
List
<
Template
>
template
List
)
{
excelDao
.
saveAll
(
excel
List
);
excelDao
.
saveAll
(
template
List
);
}
}
}
}
src/main/java/com/keymobile/rest/service/JobInfoService.java
View file @
ee6e03cf
...
@@ -2,8 +2,8 @@ package com.keymobile.rest.service;
...
@@ -2,8 +2,8 @@ package com.keymobile.rest.service;
import
com.keymobile.activiti.utils.DateUtil
;
import
com.keymobile.activiti.utils.DateUtil
;
import
com.keymobile.rest.dao.*
;
import
com.keymobile.rest.dao.*
;
import
com.keymobile.rest.model.
Excel
;
import
com.keymobile.rest.model.
Template
;
import
com.keymobile.rest.model.
Job
Info
;
import
com.keymobile.rest.model.
Process
Info
;
import
com.keymobile.rest.model.User
;
import
com.keymobile.rest.model.User
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -17,9 +17,9 @@ public class JobInfoService {
...
@@ -17,9 +17,9 @@ public class JobInfoService {
@Autowired
@Autowired
private
JobInfoDao
jobInfoDao
;
private
JobInfoDao
jobInfoDao
;
public
JobInfo
save
(
User
user
,
Excel
excel
)
{
public
ProcessInfo
save
(
User
user
,
Template
template
)
{
JobInfo
info
=
new
Job
Info
();
ProcessInfo
info
=
new
Process
Info
();
info
.
set
Excel
(
excel
);
info
.
set
Template
(
template
);
info
.
setUser
(
user
);
info
.
setUser
(
user
);
Timestamp
now
=
Timestamp
.
valueOf
(
DateUtil
.
getDateTime
());
Timestamp
now
=
Timestamp
.
valueOf
(
DateUtil
.
getDateTime
());
info
.
setCreateAt
(
now
);
info
.
setCreateAt
(
now
);
...
@@ -27,15 +27,15 @@ public class JobInfoService {
...
@@ -27,15 +27,15 @@ public class JobInfoService {
return
info
;
return
info
;
}
}
public
List
<
Job
Info
>
findAllByExcelId
(
long
eid
)
{
public
List
<
Process
Info
>
findAllByExcelId
(
long
eid
)
{
return
jobInfoDao
.
findAllByExcelId
(
eid
);
return
jobInfoDao
.
findAllByExcelId
(
eid
);
}
}
public
Job
Info
findByExcelIdAndUserId
(
long
eid
,
long
uid
)
{
public
Process
Info
findByExcelIdAndUserId
(
long
eid
,
long
uid
)
{
return
jobInfoDao
.
findByExcelIdAndUserId
(
eid
,
uid
);
return
jobInfoDao
.
findByExcelIdAndUserId
(
eid
,
uid
);
}
}
public
List
<
Job
Info
>
findByUserId
(
long
uid
)
{
public
List
<
Process
Info
>
findByUserId
(
long
uid
)
{
return
jobInfoDao
.
findAllByUserId
(
uid
);
return
jobInfoDao
.
findAllByUserId
(
uid
);
}
}
...
...
src/main/java/com/keymobile/rest/service/JobService.java
View file @
ee6e03cf
...
@@ -2,7 +2,7 @@ package com.keymobile.rest.service;
...
@@ -2,7 +2,7 @@ package com.keymobile.rest.service;
import
com.keymobile.activiti.utils.DateUtil
;
import
com.keymobile.activiti.utils.DateUtil
;
import
com.keymobile.rest.dao.JobDao
;
import
com.keymobile.rest.dao.JobDao
;
import
com.keymobile.rest.model.
Job
;
import
com.keymobile.rest.model.
Assignment
;
import
com.keymobile.rest.vo.JobForm
;
import
com.keymobile.rest.vo.JobForm
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Page
;
...
@@ -13,7 +13,6 @@ import org.springframework.stereotype.Service;
...
@@ -13,7 +13,6 @@ import org.springframework.stereotype.Service;
import
java.sql.Timestamp
;
import
java.sql.Timestamp
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.util.Date
;
@Service
@Service
public
class
JobService
{
public
class
JobService
{
...
@@ -21,56 +20,60 @@ public class JobService {
...
@@ -21,56 +20,60 @@ public class JobService {
@Autowired
@Autowired
private
JobDao
jobDao
;
private
JobDao
jobDao
;
public
Job
get
(
long
id
)
{
public
Assignment
get
(
long
id
)
{
return
jobDao
.
getOne
(
id
);
return
jobDao
.
getOne
(
id
);
}
}
public
Job
update
(
Job
job
)
{
public
Assignment
update
(
Assignment
assignment
)
{
return
jobDao
.
save
(
job
);
return
jobDao
.
save
(
assignment
);
}
}
public
Job
save
(
JobForm
form
)
{
public
Assignment
save
(
Assignment
assignment
)
{
Job
job
=
new
Job
();
return
jobDao
.
save
(
assignment
);
}
public
Assignment
save
(
JobForm
form
)
{
Assignment
assignment
=
new
Assignment
();
Timestamp
now
=
Timestamp
.
valueOf
(
DateUtil
.
getDateTime
());
Timestamp
now
=
Timestamp
.
valueOf
(
DateUtil
.
getDateTime
());
job
.
setCreateAt
(
now
);
assignment
.
setCreateAt
(
now
);
job
.
setStatus
(
Job
.
STATUS_UNRELEASED
);
assignment
.
setStatus
(
Assignment
.
STATUS_UNRELEASED
);
job
.
setAudit
(
Job
.
AUDIT_NEED
);
assignment
.
setAudit
(
Assignment
.
AUDIT_NEED
);
job
.
setName
(
form
.
getName
());
assignment
.
setName
(
form
.
getName
());
job
.
setType
(
form
.
getType
());
assignment
.
setType
(
form
.
getType
());
if
(
form
.
getType
()
==
Job
.
TYPE_AUTO
)
{
if
(
form
.
getType
()
==
Assignment
.
TYPE_AUTO
)
{
Timestamp
startAt
;
Timestamp
startAt
;
try
{
try
{
startAt
=
Timestamp
.
valueOf
(
form
.
getStartAt
());
startAt
=
Timestamp
.
valueOf
(
form
.
getStartAt
());
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
startAt
=
Timestamp
.
valueOf
(
LocalDateTime
.
now
());
startAt
=
Timestamp
.
valueOf
(
LocalDateTime
.
now
());
}
}
job
.
setStartAt
(
startAt
);
assignment
.
setStartAt
(
startAt
);
}
}
job
.
setUser
(
form
.
getUser
());
assignment
.
setUser
(
form
.
getUser
());
job
=
jobDao
.
save
(
job
);
assignment
=
jobDao
.
save
(
assignment
);
return
job
;
return
assignment
;
}
}
public
Job
findByProcessId
(
String
pid
)
{
public
Assignment
findByProcessId
(
String
pid
)
{
return
jobDao
.
findByProcessId
(
pid
);
return
jobDao
.
findByProcessId
(
pid
);
}
}
public
Page
<
Job
>
findAll
(
int
pageNo
,
int
pageSize
)
{
public
Page
<
Assignment
>
findAll
(
int
pageNo
,
int
pageSize
)
{
Pageable
pageable
=
convert
(
pageNo
,
pageSize
);
Pageable
pageable
=
convert
(
pageNo
,
pageSize
);
return
jobDao
.
findAll
(
pageable
);
return
jobDao
.
findAll
(
pageable
);
}
}
public
Page
<
Job
>
findAllByName
(
String
name
,
int
pageNo
,
int
pageSize
)
{
public
Page
<
Assignment
>
findAllByName
(
String
name
,
int
pageNo
,
int
pageSize
)
{
Pageable
pageable
=
convert
(
pageNo
,
pageSize
);
Pageable
pageable
=
convert
(
pageNo
,
pageSize
);
return
jobDao
.
findAllByNameLike
((
"%"
+
name
+
"%"
),
pageable
);
return
jobDao
.
findAllByNameLike
((
"%"
+
name
+
"%"
),
pageable
);
}
}
public
Page
<
Job
>
findAll
(
int
pageNo
,
int
pageSize
,
String
orderBy
,
String
propBy
)
{
public
Page
<
Assignment
>
findAll
(
int
pageNo
,
int
pageSize
,
String
orderBy
,
String
propBy
)
{
Pageable
pageable
=
convert
(
pageNo
,
pageSize
,
orderBy
,
propBy
);
Pageable
pageable
=
convert
(
pageNo
,
pageSize
,
orderBy
,
propBy
);
return
jobDao
.
findAll
(
pageable
);
return
jobDao
.
findAll
(
pageable
);
}
}
public
Page
<
Job
>
findAllByName
(
String
name
,
int
pageNo
,
int
pageSize
,
String
orderBy
,
String
propBy
)
{
public
Page
<
Assignment
>
findAllByName
(
String
name
,
int
pageNo
,
int
pageSize
,
String
orderBy
,
String
propBy
)
{
Pageable
pageable
=
convert
(
pageNo
,
pageSize
,
orderBy
,
propBy
);
Pageable
pageable
=
convert
(
pageNo
,
pageSize
,
orderBy
,
propBy
);
return
jobDao
.
findAllByNameLike
((
"%"
+
name
+
"%"
),
pageable
);
return
jobDao
.
findAllByNameLike
((
"%"
+
name
+
"%"
),
pageable
);
}
}
...
...
src/main/java/com/keymobile/rest/service/RecordDataService.java
View file @
ee6e03cf
...
@@ -2,7 +2,7 @@ package com.keymobile.rest.service;
...
@@ -2,7 +2,7 @@ package com.keymobile.rest.service;
import
com.keymobile.activiti.utils.DateUtil
;
import
com.keymobile.activiti.utils.DateUtil
;
import
com.keymobile.rest.dao.*
;
import
com.keymobile.rest.dao.*
;
import
com.keymobile.rest.model.
RecordData
;
import
com.keymobile.rest.model.
DataInfo
;
import
com.keymobile.rest.vo.RecordDataForm
;
import
com.keymobile.rest.vo.RecordDataForm
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -15,22 +15,22 @@ public class RecordDataService {
...
@@ -15,22 +15,22 @@ public class RecordDataService {
@Autowired
@Autowired
private
RecordDataDao
recordDataDao
;
private
RecordDataDao
recordDataDao
;
public
RecordData
get
(
long
id
)
{
public
DataInfo
get
(
long
id
)
{
return
recordDataDao
.
getOne
(
id
);
return
recordDataDao
.
getOne
(
id
);
}
}
public
RecordData
save
(
RecordDataForm
form
)
{
public
DataInfo
save
(
RecordDataForm
form
)
{
RecordData
data
=
new
RecordData
();
DataInfo
data
=
new
DataInfo
();
data
.
setDatas
(
form
.
getDataStr
());
data
.
setDatas
(
form
.
getDataStr
());
data
.
set
JobInfo
(
form
.
getJob
Info
());
data
.
set
ProcessInfo
(
form
.
getProcess
Info
());
Timestamp
now
=
Timestamp
.
valueOf
(
DateUtil
.
getDateTime
());
Timestamp
now
=
Timestamp
.
valueOf
(
DateUtil
.
getDateTime
());
data
.
setCreateAt
(
now
);
data
.
setCreateAt
(
now
);
data
=
recordDataDao
.
save
(
data
);
data
=
recordDataDao
.
save
(
data
);
return
data
;
return
data
;
}
}
public
RecordData
update
(
RecordDataForm
form
)
{
public
DataInfo
update
(
RecordDataForm
form
)
{
RecordData
data
=
this
.
get
(
form
.
getDataId
());
DataInfo
data
=
this
.
get
(
form
.
getDataId
());
data
=
recordDataDao
.
save
(
data
);
data
=
recordDataDao
.
save
(
data
);
return
data
;
return
data
;
}
}
...
...
src/main/java/com/keymobile/rest/service/UserService.java
View file @
ee6e03cf
...
@@ -13,6 +13,10 @@ public class UserService {
...
@@ -13,6 +13,10 @@ public class UserService {
@Autowired
@Autowired
private
UserDao
userDao
;
private
UserDao
userDao
;
public
List
<
User
>
findAllByIdIn
(
List
<
Long
>
ids
)
{
return
userDao
.
findAllByIdIn
(
ids
);
}
public
List
<
User
>
findAllByRole
(
int
role
)
{
public
List
<
User
>
findAllByRole
(
int
role
)
{
return
userDao
.
findAllByRole
(
role
);
return
userDao
.
findAllByRole
(
role
);
}
}
...
@@ -35,7 +39,5 @@ public class UserService {
...
@@ -35,7 +39,5 @@ public class UserService {
return
user
;
return
user
;
}
}
public
List
<
User
>
findAllByIdIn
(
List
<
Long
>
ids
)
{
return
userDao
.
findAllByIdIn
(
ids
);
}
}
}
src/main/java/com/keymobile/rest/vo/ExcelForm.java
View file @
ee6e03cf
package
com
.
keymobile
.
rest
.
vo
;
package
com
.
keymobile
.
rest
.
vo
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.keymobile.rest.model.
Job
;
import
com.keymobile.rest.model.
Assignment
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.Data
;
import
javax.persistence.Column
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.GenerationType
;
import
javax.persistence.Id
;
import
java.sql.Timestamp
;
import
java.util.List
;
import
java.util.List
;
@Data
@Data
...
@@ -39,5 +34,5 @@ public class ExcelForm {
...
@@ -39,5 +34,5 @@ public class ExcelForm {
private
Integer
dataAt
;
private
Integer
dataAt
;
@JsonIgnore
@JsonIgnore
private
Job
job
;
private
Assignment
assignment
;
}
}
src/main/java/com/keymobile/rest/vo/RecordDataForm.java
View file @
ee6e03cf
package
com
.
keymobile
.
rest
.
vo
;
package
com
.
keymobile
.
rest
.
vo
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.keymobile.rest.model.
Job
Info
;
import
com.keymobile.rest.model.
Process
Info
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.Data
;
...
@@ -27,7 +27,7 @@ public class RecordDataForm {
...
@@ -27,7 +27,7 @@ public class RecordDataForm {
private
List
<
Object
>
dataList
;
private
List
<
Object
>
dataList
;
@JsonIgnore
@JsonIgnore
private
JobInfo
job
Info
;
private
ProcessInfo
process
Info
;
}
}
src/main/resources/CompDataStandardProcess(new).bpmn
deleted
100644 → 0
View file @
d7ac0dd2
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<definitions
xmlns=
"http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:activiti=
"http://activiti.org/bpmn"
xmlns:bpmndi=
"http://www.omg.org/spec/BPMN/20100524/DI"
xmlns:omgdc=
"http://www.omg.org/spec/DD/20100524/DC"
xmlns:omgdi=
"http://www.omg.org/spec/DD/20100524/DI"
xmlns:tns=
"http://www.activiti.org/test"
xmlns:xsd=
"http://www.w3.org/2001/XMLSchema"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
expressionLanguage=
"http://www.w3.org/1999/XPath"
id=
"m1583335449426"
name=
""
targetNamespace=
"http://www.activiti.org/test"
typeLanguage=
"http://www.w3.org/2001/XMLSchema"
>
<process
id=
"CompDataStandardProcess"
isClosed=
"false"
isExecutable=
"true"
name=
"专业公司数据标准流程"
processType=
"None"
>
<startEvent
id=
"startevent1"
name=
"Start"
/>
<userTask
activiti:assignee=
"${inputUser}"
activiti:exclusive=
"true"
id=
"dataStandardMake"
name=
"提出数据标准编制需求"
/>
<userTask
activiti:candidateUsers=
"${groupDataStandardServiceImpl.findAssigneesForProcess(execution,"group1")}"
activiti:exclusive=
"true"
id=
"applyTask1"
name=
"审批(报表中心1)"
/>
<exclusiveGateway
gatewayDirection=
"Unspecified"
id=
"exclusivegateway1"
name=
"Exclusive Gateway"
/>
<sequenceFlow
id=
"flow1"
sourceRef=
"startevent1"
targetRef=
"dataStandardMake"
/>
<sequenceFlow
id=
"flow4"
name=
"N"
skipExpression=
"${sign=='false'}"
sourceRef=
"exclusivegateway1"
targetRef=
"dataStandardMake"
/>
<userTask
activiti:candidateUsers=
"${groupDataStandardServiceImpl.findAssigneesForProcess(execution,"group2")}"
activiti:exclusive=
"true"
id=
"selectStandardApartment"
name=
"确定数据标准责任部门"
/>
<userTask
activiti:exclusive=
"true"
id=
"writeStandardAttr"
name=
"填写数据标准属性"
>
<extensionElements>
<activiti:taskListener
class=
"com.keymobile.activiti.listener.WirteStandardAttrListener"
event=
"create"
/>
</extensionElements>
</userTask>
<sequenceFlow
id=
"flow5"
name=
"Y"
skipExpression=
"${sign=='true'}"
sourceRef=
"exclusivegateway1"
targetRef=
"selectStandardApartment"
/>
<sequenceFlow
id=
"flow6"
sourceRef=
"selectStandardApartment"
targetRef=
"writeStandardAttr"
/>
<userTask
activiti:candidateUsers=
"${groupDataStandardServiceImpl.findAssigneesForProcess(execution,"group3")}"
activiti:exclusive=
"true"
id=
"applyTask2"
name=
"审批(报表中心2)"
/>
<exclusiveGateway
gatewayDirection=
"Unspecified"
id=
"exclusivegateway2"
name=
"Exclusive Gateway"
/>
<userTask
activiti:candidateUsers=
"${groupDataStandardServiceImpl.findAssigneesForProcess(execution,"group4")}"
activiti:exclusive=
"true"
id=
"applyTask3"
name=
"审批(科技运营部)"
/>
<sequenceFlow
id=
"flow11"
name=
"Y"
skipExpression=
"${sign=='true'}"
sourceRef=
"exclusivegateway2"
targetRef=
"applyTask3"
/>
<exclusiveGateway
gatewayDirection=
"Unspecified"
id=
"exclusivegateway3"
name=
"Exclusive Gateway"
/>
<userTask
activiti:candidateUsers=
"${groupDataStandardServiceImpl.findAssigneesForProcess(execution,"group5")}"
activiti:exclusive=
"true"
id=
"applyTask4"
name=
"审批(报表中心4)"
/>
<exclusiveGateway
gatewayDirection=
"Unspecified"
id=
"exclusivegateway4"
name=
"Exclusive Gateway"
/>
<endEvent
id=
"endevent1"
name=
"End"
/>
<userTask
activiti:candidateUsers=
"${groupDataStandardServiceImpl.findAssigneesForProcess(execution,"group6")}"
activiti:exclusive=
"true"
id=
"publishStandard"
name=
"发布数据标准终版"
/>
<sequenceFlow
id=
"flow13"
sourceRef=
"applyTask3"
targetRef=
"exclusivegateway3"
/>
<sequenceFlow
id=
"flow15"
sourceRef=
"applyTask4"
targetRef=
"exclusivegateway4"
/>
<sequenceFlow
id=
"flow16"
name=
"N"
skipExpression=
"${sign=='false'}"
sourceRef=
"exclusivegateway3"
targetRef=
"applyTask4"
/>
<sequenceFlow
id=
"flow17"
name=
"Y"
skipExpression=
"${sign=='true'}"
sourceRef=
"exclusivegateway4"
targetRef=
"endevent1"
/>
<sequenceFlow
id=
"flow18"
name=
"Y"
skipExpression=
"${sign=='true'}"
sourceRef=
"exclusivegateway3"
targetRef=
"publishStandard"
/>
<sequenceFlow
id=
"flow19"
sourceRef=
"publishStandard"
targetRef=
"endevent1"
/>
<sequenceFlow
id=
"flow24"
name=
"N"
skipExpression=
"${sign=='false'}"
sourceRef=
"exclusivegateway4"
targetRef=
"writeStandardAttr"
/>
<sequenceFlow
id=
"flow25"
name=
"N"
skipExpression=
"${sign=='true'}"
sourceRef=
"exclusivegateway2"
targetRef=
"writeStandardAttr"
/>
<sequenceFlow
id=
"flow29"
sourceRef=
"dataStandardMake"
targetRef=
"applyTask1"
/>
<sequenceFlow
id=
"flow30"
sourceRef=
"applyTask1"
targetRef=
"exclusivegateway1"
/>
<sequenceFlow
id=
"flow31"
sourceRef=
"applyTask2"
targetRef=
"exclusivegateway2"
/>
<userTask
activiti:candidateUsers=
"${groupDataStandardServiceImpl.findAssigneesForProcess(execution,"group8")}"
activiti:exclusive=
"true"
id=
"commentCollction"
name=
"意见征集"
/>
<userTask
activiti:assignee=
"${assignee}"
activiti:exclusive=
"true"
id=
"askComment"
name=
"意见询问"
>
<multiInstanceLoopCharacteristics
activiti:collection=
"commentUsers"
activiti:elementVariable=
"assignee"
isSequential=
"false"
/>
</userTask>
<sequenceFlow
id=
"flow32"
sourceRef=
"writeStandardAttr"
targetRef=
"commentCollction"
/>
<sequenceFlow
id=
"flow33"
sourceRef=
"commentCollction"
targetRef=
"askComment"
/>
<sequenceFlow
id=
"flow34"
sourceRef=
"askComment"
targetRef=
"applyTask2"
/>
</process>
<bpmndi:BPMNDiagram
documentation=
"background=#3C3F41;count=1;horizontalcount=1;orientation=0;width=842.4;height=1195.2;imageableWidth=832.4;imageableHeight=1185.2;imageableX=5.0;imageableY=5.0"
id=
"Diagram-_1"
name=
"New Diagram"
>
<bpmndi:BPMNPlane
bpmnElement=
"CompDataStandardProcess"
>
<bpmndi:BPMNShape
bpmnElement=
"startevent1"
id=
"Shape-startevent1"
>
<omgdc:Bounds
height=
"32.0"
width=
"32.0"
x=
"185.0"
y=
"380.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"32.0"
width=
"32.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"dataStandardMake"
id=
"Shape-dataStandardMake"
>
<omgdc:Bounds
height=
"75.0"
width=
"85.0"
x=
"195.0"
y=
"195.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"75.0"
width=
"85.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"applyTask1"
id=
"Shape-applyTask1"
>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"105.0"
y=
"15.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"exclusivegateway1"
id=
"Shape-exclusivegateway1"
isMarkerVisible=
"false"
>
<omgdc:Bounds
height=
"32.0"
width=
"32.0"
x=
"305.0"
y=
"65.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"32.0"
width=
"32.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"selectStandardApartment"
id=
"Shape-selectStandardApartment"
>
<omgdc:Bounds
height=
"63.0"
width=
"105.0"
x=
"600.0"
y=
"270.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"63.0"
width=
"105.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"writeStandardAttr"
id=
"Shape-writeStandardAttr"
>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"745.0"
y=
"370.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"applyTask2"
id=
"Shape-applyTask2"
>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"875.0"
y=
"540.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"exclusivegateway2"
id=
"Shape-exclusivegateway2"
isMarkerVisible=
"false"
>
<omgdc:Bounds
height=
"32.0"
width=
"32.0"
x=
"803.0"
y=
"547.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"32.0"
width=
"32.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"applyTask3"
id=
"Shape-applyTask3"
>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"635.0"
y=
"540.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"exclusivegateway3"
id=
"Shape-exclusivegateway3"
isMarkerVisible=
"false"
>
<omgdc:Bounds
height=
"32.0"
width=
"32.0"
x=
"574.0"
y=
"547.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"32.0"
width=
"32.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"applyTask4"
id=
"Shape-applyTask4"
>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"429.0"
y=
"540.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"exclusivegateway4"
id=
"Shape-exclusivegateway4"
isMarkerVisible=
"false"
>
<omgdc:Bounds
height=
"32.0"
width=
"32.0"
x=
"330.0"
y=
"547.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"32.0"
width=
"32.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"endevent1"
id=
"Shape-endevent1"
>
<omgdc:Bounds
height=
"32.0"
width=
"32.0"
x=
"185.0"
y=
"550.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"32.0"
width=
"32.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"publishStandard"
id=
"Shape-publishStandard"
>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"247.0"
y=
"594.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"commentCollction"
id=
"Shape-commentCollction"
>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"875.0"
y=
"370.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"askComment"
id=
"Shape-askComment"
>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"875.0"
y=
"450.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge
bpmnElement=
"flow29"
id=
"BPMNEdge_flow29"
sourceElement=
"dataStandardMake"
targetElement=
"applyTask1"
>
<omgdi:waypoint
x=
"202.5"
y=
"195.0"
/>
<omgdi:waypoint
x=
"202.5"
y=
"70.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"-1.0"
width=
"-1.0"
x=
"-1.0"
y=
"-1.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow24"
id=
"BPMNEdge_flow24"
sourceElement=
"exclusivegateway4"
targetElement=
"writeStandardAttr"
>
<omgdi:waypoint
x=
"350.0"
y=
"551.0"
/>
<omgdi:waypoint
x=
"350.0"
y=
"470.0"
/>
<omgdi:waypoint
x=
"541.0"
y=
"470.0"
/>
<omgdi:waypoint
x=
"650.0"
y=
"470.0"
/>
<omgdi:waypoint
x=
"797.0"
y=
"470.0"
/>
<omgdi:waypoint
x=
"745.0"
y=
"397.5"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"14.0"
width=
"7.0"
x=
"185.0"
y=
"237.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow25"
id=
"BPMNEdge_flow25"
sourceElement=
"exclusivegateway2"
targetElement=
"writeStandardAttr"
>
<omgdi:waypoint
x=
"822.0"
y=
"550.0"
/>
<omgdi:waypoint
x=
"822.0"
y=
"483.0"
/>
<omgdi:waypoint
x=
"822.0"
y=
"466.0"
/>
<omgdi:waypoint
x=
"822.0"
y=
"466.0"
/>
<omgdi:waypoint
x=
"797.0"
y=
"466.0"
/>
<omgdi:waypoint
x=
"797.0"
y=
"466.0"
/>
<omgdi:waypoint
x=
"822.0"
y=
"425.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"14.0"
width=
"7.0"
x=
"658.0"
y=
"237.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow1"
id=
"BPMNEdge_flow1"
sourceElement=
"startevent1"
targetElement=
"dataStandardMake"
>
<omgdi:waypoint
x=
"206.0"
y=
"380.80131584642936"
/>
<omgdi:waypoint
x=
"206.0"
y=
"270.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"-1.0"
width=
"-1.0"
x=
"-1.0"
y=
"-1.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow4"
id=
"BPMNEdge_flow4"
sourceElement=
"exclusivegateway1"
targetElement=
"dataStandardMake"
>
<omgdi:waypoint
x=
"337.0"
y=
"81.0"
/>
<omgdi:waypoint
x=
"545.0"
y=
"458.0"
/>
<omgdi:waypoint
x=
"416.0"
y=
"458.0"
/>
<omgdi:waypoint
x=
"298.0"
y=
"458.0"
/>
<omgdi:waypoint
x=
"280.0"
y=
"232.5"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"14.0"
width=
"7.0"
x=
"381.0"
y=
"107.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow5"
id=
"BPMNEdge_flow5"
sourceElement=
"exclusivegateway1"
targetElement=
"selectStandardApartment"
>
<omgdi:waypoint
x=
"337.0"
y=
"81.0"
/>
<omgdi:waypoint
x=
"650.0"
y=
"180.0"
/>
<omgdi:waypoint
x=
"650.0"
y=
"270.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"14.0"
width=
"8.0"
x=
"401.0"
y=
"87.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow6"
id=
"BPMNEdge_flow6"
sourceElement=
"selectStandardApartment"
targetElement=
"writeStandardAttr"
>
<omgdi:waypoint
x=
"705.0"
y=
"301.5"
/>
<omgdi:waypoint
x=
"745.0"
y=
"397.5"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"-1.0"
width=
"-1.0"
x=
"-1.0"
y=
"-1.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow17"
id=
"BPMNEdge_flow17"
sourceElement=
"exclusivegateway4"
targetElement=
"endevent1"
>
<omgdi:waypoint
x=
"330.0"
y=
"563.0"
/>
<omgdi:waypoint
x=
"217.0"
y=
"566.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"14.0"
width=
"8.0"
x=
"165.0"
y=
"257.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow18"
id=
"BPMNEdge_flow18"
sourceElement=
"exclusivegateway3"
targetElement=
"publishStandard"
>
<omgdi:waypoint
x=
"593.0"
y=
"576.0"
/>
<omgdi:waypoint
x=
"593.0"
y=
"621.0"
/>
<omgdi:waypoint
x=
"352.0"
y=
"621.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"14.0"
width=
"8.0"
x=
"429.0"
y=
"277.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow19"
id=
"BPMNEdge_flow19"
sourceElement=
"publishStandard"
targetElement=
"endevent1"
>
<omgdi:waypoint
x=
"247.0"
y=
"620.0"
/>
<omgdi:waypoint
x=
"202.0"
y=
"620.0"
/>
<omgdi:waypoint
x=
"202.0"
y=
"581.9687194226713"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"-1.0"
width=
"-1.0"
x=
"-1.0"
y=
"-1.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow13"
id=
"BPMNEdge_flow13"
sourceElement=
"applyTask3"
targetElement=
"exclusivegateway3"
>
<omgdi:waypoint
x=
"635.0"
y=
"567.5"
/>
<omgdi:waypoint
x=
"606.0"
y=
"563.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"-1.0"
width=
"-1.0"
x=
"-1.0"
y=
"-1.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow15"
id=
"BPMNEdge_flow15"
sourceElement=
"applyTask4"
targetElement=
"exclusivegateway4"
>
<omgdi:waypoint
x=
"429.0"
y=
"567.5"
/>
<omgdi:waypoint
x=
"362.0"
y=
"563.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"-1.0"
width=
"-1.0"
x=
"-1.0"
y=
"-1.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow16"
id=
"BPMNEdge_flow16"
sourceElement=
"exclusivegateway3"
targetElement=
"applyTask4"
>
<omgdi:waypoint
x=
"574.0"
y=
"563.0"
/>
<omgdi:waypoint
x=
"534.0"
y=
"567.5"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"14.0"
width=
"7.0"
x=
"409.0"
y=
"257.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow31"
id=
"BPMNEdge_flow31"
sourceElement=
"applyTask2"
targetElement=
"exclusivegateway2"
>
<omgdi:waypoint
x=
"875.0"
y=
"567.5"
/>
<omgdi:waypoint
x=
"835.0"
y=
"563.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"-1.0"
width=
"-1.0"
x=
"-1.0"
y=
"-1.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow32"
id=
"BPMNEdge_flow32"
sourceElement=
"writeStandardAttr"
targetElement=
"commentCollction"
>
<omgdi:waypoint
x=
"850.0"
y=
"397.5"
/>
<omgdi:waypoint
x=
"875.0"
y=
"397.5"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"-1.0"
width=
"-1.0"
x=
"-1.0"
y=
"-1.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow11"
id=
"BPMNEdge_flow11"
sourceElement=
"exclusivegateway2"
targetElement=
"applyTask3"
>
<omgdi:waypoint
x=
"803.0"
y=
"563.0"
/>
<omgdi:waypoint
x=
"740.0"
y=
"567.5"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"14.0"
width=
"8.0"
x=
"638.0"
y=
"257.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow33"
id=
"BPMNEdge_flow33"
sourceElement=
"commentCollction"
targetElement=
"askComment"
>
<omgdi:waypoint
x=
"927.5"
y=
"425.0"
/>
<omgdi:waypoint
x=
"927.5"
y=
"450.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"-1.0"
width=
"-1.0"
x=
"-1.0"
y=
"-1.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow34"
id=
"BPMNEdge_flow34"
sourceElement=
"askComment"
targetElement=
"applyTask2"
>
<omgdi:waypoint
x=
"927.5"
y=
"505.0"
/>
<omgdi:waypoint
x=
"927.5"
y=
"540.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"-1.0"
width=
"-1.0"
x=
"-1.0"
y=
"-1.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow30"
id=
"BPMNEdge_flow30"
sourceElement=
"applyTask1"
targetElement=
"exclusivegateway1"
>
<omgdi:waypoint
x=
"210.0"
y=
"42.5"
/>
<omgdi:waypoint
x=
"305.0"
y=
"81.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"-1.0"
width=
"-1.0"
x=
"-1.0"
y=
"-1.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>
src/main/resources/CompDataStandardProcess.bpmn
deleted
100644 → 0
View file @
d7ac0dd2
<?xml version="1.0" encoding="UTF-8"?>
<definitions
xmlns=
"http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd=
"http://www.w3.org/2001/XMLSchema"
xmlns:activiti=
"http://activiti.org/bpmn"
xmlns:bpmndi=
"http://www.omg.org/spec/BPMN/20100524/DI"
xmlns:omgdc=
"http://www.omg.org/spec/DD/20100524/DC"
xmlns:omgdi=
"http://www.omg.org/spec/DD/20100524/DI"
typeLanguage=
"http://www.w3.org/2001/XMLSchema"
expressionLanguage=
"http://www.w3.org/1999/XPath"
targetNamespace=
"http://www.activiti.org/test"
>
<process
id=
"CompDataStandardProcess"
name=
"专业公司数据标准流程"
isExecutable=
"true"
>
<startEvent
id=
"startevent1"
name=
"Start"
></startEvent>
<userTask
id=
"dataStandardMake"
name=
"提出数据标准编制需求"
activiti:assignee=
"${inputUser}"
></userTask>
<userTask
id=
"applyTask1"
name=
"审批(报表中心1)"
activiti:candidateUsers=
"${groupDataStandardServiceImpl.findAssigneesForProcess(execution,"group1")}"
></userTask>
<exclusiveGateway
id=
"exclusivegateway1"
name=
"Exclusive Gateway"
></exclusiveGateway>
<sequenceFlow
id=
"flow1"
sourceRef=
"startevent1"
targetRef=
"dataStandardMake"
></sequenceFlow>
<sequenceFlow
id=
"flow4"
name=
"N"
sourceRef=
"exclusivegateway1"
targetRef=
"dataStandardMake"
skipExpression=
"${sign=='false'}"
></sequenceFlow>
<userTask
id=
"selectStandardApartment"
name=
"确定数据标准责任部门"
activiti:candidateUsers=
"${groupDataStandardServiceImpl.findAssigneesForProcess(execution,"group2")}"
></userTask>
<userTask
id=
"writeStandardAttr"
name=
"填写数据标准属性"
>
<extensionElements>
<activiti:taskListener
event=
"create"
class=
"com.keymobile.activiti.listener.WirteStandardAttrListener"
></activiti:taskListener>
</extensionElements>
</userTask>
<sequenceFlow
id=
"flow5"
name=
"Y"
sourceRef=
"exclusivegateway1"
targetRef=
"selectStandardApartment"
skipExpression=
"${sign=='true'}"
></sequenceFlow>
<sequenceFlow
id=
"flow6"
sourceRef=
"selectStandardApartment"
targetRef=
"writeStandardAttr"
></sequenceFlow>
<userTask
id=
"applyTask2"
name=
"审批(报表中心2)"
activiti:candidateUsers=
"${groupDataStandardServiceImpl.findAssigneesForProcess(execution,"group3")}"
></userTask>
<exclusiveGateway
id=
"exclusivegateway2"
name=
"Exclusive Gateway"
></exclusiveGateway>
<userTask
id=
"applyTask3"
name=
"审批(科技运营部)"
activiti:candidateUsers=
"${groupDataStandardServiceImpl.findAssigneesForProcess(execution,"group4")}"
></userTask>
<sequenceFlow
id=
"flow11"
name=
"Y"
sourceRef=
"exclusivegateway2"
targetRef=
"applyTask3"
skipExpression=
"${sign=='true'}"
></sequenceFlow>
<exclusiveGateway
id=
"exclusivegateway3"
name=
"Exclusive Gateway"
></exclusiveGateway>
<userTask
id=
"applyTask4"
name=
"审批(报表中心4)"
activiti:candidateUsers=
"${groupDataStandardServiceImpl.findAssigneesForProcess(execution,"group5")}"
></userTask>
<exclusiveGateway
id=
"exclusivegateway4"
name=
"Exclusive Gateway"
></exclusiveGateway>
<endEvent
id=
"endevent1"
name=
"End"
></endEvent>
<userTask
id=
"publishStandard"
name=
"发布数据标准终版"
activiti:candidateUsers=
"${groupDataStandardServiceImpl.findAssigneesForProcess(execution,"group6")}"
></userTask>
<sequenceFlow
id=
"flow13"
sourceRef=
"applyTask3"
targetRef=
"exclusivegateway3"
></sequenceFlow>
<sequenceFlow
id=
"flow15"
sourceRef=
"applyTask4"
targetRef=
"exclusivegateway4"
></sequenceFlow>
<sequenceFlow
id=
"flow16"
name=
"N"
sourceRef=
"exclusivegateway3"
targetRef=
"applyTask4"
skipExpression=
"${sign=='false'}"
></sequenceFlow>
<sequenceFlow
id=
"flow17"
name=
"Y"
sourceRef=
"exclusivegateway4"
targetRef=
"endevent1"
skipExpression=
"${sign=='true'}"
></sequenceFlow>
<sequenceFlow
id=
"flow18"
name=
"Y"
sourceRef=
"exclusivegateway3"
targetRef=
"publishStandard"
skipExpression=
"${sign=='true'}"
></sequenceFlow>
<sequenceFlow
id=
"flow19"
sourceRef=
"publishStandard"
targetRef=
"endevent1"
></sequenceFlow>
<sequenceFlow
id=
"flow24"
name=
"N"
sourceRef=
"exclusivegateway4"
targetRef=
"writeStandardAttr"
skipExpression=
"${sign=='false'}"
></sequenceFlow>
<sequenceFlow
id=
"flow25"
name=
"N"
sourceRef=
"exclusivegateway2"
targetRef=
"writeStandardAttr"
skipExpression=
"${sign=='true'}"
></sequenceFlow>
<sequenceFlow
id=
"flow28"
sourceRef=
"writeStandardAttr"
targetRef=
"applyTask2"
></sequenceFlow>
<sequenceFlow
id=
"flow29"
sourceRef=
"dataStandardMake"
targetRef=
"applyTask1"
></sequenceFlow>
<sequenceFlow
id=
"flow30"
sourceRef=
"applyTask1"
targetRef=
"exclusivegateway1"
></sequenceFlow>
<sequenceFlow
id=
"flow31"
sourceRef=
"applyTask2"
targetRef=
"exclusivegateway2"
></sequenceFlow>
</process>
<bpmndi:BPMNDiagram
id=
"BPMNDiagram_CompDataStandardProcess"
>
<bpmndi:BPMNPlane
bpmnElement=
"CompDataStandardProcess"
id=
"BPMNPlane_CompDataStandardProcess"
>
<bpmndi:BPMNShape
bpmnElement=
"startevent1"
id=
"BPMNShape_startevent1"
>
<omgdc:Bounds
height=
"35.0"
width=
"35.0"
x=
"20.0"
y=
"70.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"dataStandardMake"
id=
"BPMNShape_dataStandardMake"
>
<omgdc:Bounds
height=
"71.0"
width=
"105.0"
x=
"82.0"
y=
"52.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"applyTask1"
id=
"BPMNShape_applyTask1"
>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"210.0"
y=
"60.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"exclusivegateway1"
id=
"BPMNShape_exclusivegateway1"
>
<omgdc:Bounds
height=
"40.0"
width=
"40.0"
x=
"361.0"
y=
"67.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"selectStandardApartment"
id=
"BPMNShape_selectStandardApartment"
>
<omgdc:Bounds
height=
"63.0"
width=
"105.0"
x=
"450.0"
y=
"56.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"writeStandardAttr"
id=
"BPMNShape_writeStandardAttr"
>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"580.0"
y=
"60.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"applyTask2"
id=
"BPMNShape_applyTask2"
>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"710.0"
y=
"230.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"exclusivegateway2"
id=
"BPMNShape_exclusivegateway2"
>
<omgdc:Bounds
height=
"40.0"
width=
"40.0"
x=
"638.0"
y=
"237.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"applyTask3"
id=
"BPMNShape_applyTask3"
>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"470.0"
y=
"230.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"exclusivegateway3"
id=
"BPMNShape_exclusivegateway3"
>
<omgdc:Bounds
height=
"40.0"
width=
"40.0"
x=
"409.0"
y=
"237.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"applyTask4"
id=
"BPMNShape_applyTask4"
>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"264.0"
y=
"230.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"exclusivegateway4"
id=
"BPMNShape_exclusivegateway4"
>
<omgdc:Bounds
height=
"40.0"
width=
"40.0"
x=
"165.0"
y=
"237.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"endevent1"
id=
"BPMNShape_endevent1"
>
<omgdc:Bounds
height=
"35.0"
width=
"35.0"
x=
"20.0"
y=
"240.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"publishStandard"
id=
"BPMNShape_publishStandard"
>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"82.0"
y=
"284.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge
bpmnElement=
"flow1"
id=
"BPMNEdge_flow1"
>
<omgdi:waypoint
x=
"55.0"
y=
"87.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"82.0"
y=
"87.0"
></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow4"
id=
"BPMNEdge_flow4"
>
<omgdi:waypoint
x=
"381.0"
y=
"107.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"380.0"
y=
"148.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"251.0"
y=
"148.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"133.0"
y=
"148.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"134.0"
y=
"123.0"
></omgdi:waypoint>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"14.0"
width=
"7.0"
x=
"381.0"
y=
"107.0"
></omgdc:Bounds>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow5"
id=
"BPMNEdge_flow5"
>
<omgdi:waypoint
x=
"401.0"
y=
"87.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"450.0"
y=
"87.0"
></omgdi:waypoint>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"14.0"
width=
"8.0"
x=
"401.0"
y=
"87.0"
></omgdc:Bounds>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow6"
id=
"BPMNEdge_flow6"
>
<omgdi:waypoint
x=
"555.0"
y=
"87.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"580.0"
y=
"87.0"
></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow11"
id=
"BPMNEdge_flow11"
>
<omgdi:waypoint
x=
"638.0"
y=
"257.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"575.0"
y=
"257.0"
></omgdi:waypoint>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"14.0"
width=
"8.0"
x=
"638.0"
y=
"257.0"
></omgdc:Bounds>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow13"
id=
"BPMNEdge_flow13"
>
<omgdi:waypoint
x=
"470.0"
y=
"257.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"449.0"
y=
"257.0"
></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow15"
id=
"BPMNEdge_flow15"
>
<omgdi:waypoint
x=
"264.0"
y=
"257.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"205.0"
y=
"257.0"
></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow16"
id=
"BPMNEdge_flow16"
>
<omgdi:waypoint
x=
"409.0"
y=
"257.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"369.0"
y=
"257.0"
></omgdi:waypoint>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"14.0"
width=
"7.0"
x=
"409.0"
y=
"257.0"
></omgdc:Bounds>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow17"
id=
"BPMNEdge_flow17"
>
<omgdi:waypoint
x=
"165.0"
y=
"257.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"55.0"
y=
"257.0"
></omgdi:waypoint>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"14.0"
width=
"8.0"
x=
"165.0"
y=
"257.0"
></omgdc:Bounds>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow18"
id=
"BPMNEdge_flow18"
>
<omgdi:waypoint
x=
"429.0"
y=
"277.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"428.0"
y=
"311.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"187.0"
y=
"311.0"
></omgdi:waypoint>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"14.0"
width=
"8.0"
x=
"429.0"
y=
"277.0"
></omgdc:Bounds>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow19"
id=
"BPMNEdge_flow19"
>
<omgdi:waypoint
x=
"82.0"
y=
"311.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"37.0"
y=
"310.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"37.0"
y=
"275.0"
></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow24"
id=
"BPMNEdge_flow24"
>
<omgdi:waypoint
x=
"185.0"
y=
"237.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"185.0"
y=
"160.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"376.0"
y=
"160.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"485.0"
y=
"160.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"632.0"
y=
"160.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"632.0"
y=
"115.0"
></omgdi:waypoint>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"14.0"
width=
"7.0"
x=
"185.0"
y=
"237.0"
></omgdc:Bounds>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow25"
id=
"BPMNEdge_flow25"
>
<omgdi:waypoint
x=
"658.0"
y=
"237.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"657.0"
y=
"173.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"657.0"
y=
"156.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"657.0"
y=
"156.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"632.0"
y=
"156.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"632.0"
y=
"156.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"632.0"
y=
"115.0"
></omgdi:waypoint>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"14.0"
width=
"7.0"
x=
"658.0"
y=
"237.0"
></omgdc:Bounds>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow28"
id=
"BPMNEdge_flow28"
>
<omgdi:waypoint
x=
"685.0"
y=
"87.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"762.0"
y=
"87.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"762.0"
y=
"230.0"
></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow29"
id=
"BPMNEdge_flow29"
>
<omgdi:waypoint
x=
"187.0"
y=
"87.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"210.0"
y=
"87.0"
></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow30"
id=
"BPMNEdge_flow30"
>
<omgdi:waypoint
x=
"315.0"
y=
"87.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"361.0"
y=
"87.0"
></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow31"
id=
"BPMNEdge_flow31"
>
<omgdi:waypoint
x=
"710.0"
y=
"257.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"678.0"
y=
"257.0"
></omgdi:waypoint>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>
\ No newline at end of file
src/main/resources/GroupDataStandardProcess.bpmn
deleted
100644 → 0
View file @
d7ac0dd2
<?xml version="1.0" encoding="UTF-8"?>
<definitions
xmlns=
"http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd=
"http://www.w3.org/2001/XMLSchema"
xmlns:activiti=
"http://activiti.org/bpmn"
xmlns:bpmndi=
"http://www.omg.org/spec/BPMN/20100524/DI"
xmlns:omgdc=
"http://www.omg.org/spec/DD/20100524/DC"
xmlns:omgdi=
"http://www.omg.org/spec/DD/20100524/DI"
typeLanguage=
"http://www.w3.org/2001/XMLSchema"
expressionLanguage=
"http://www.w3.org/1999/XPath"
targetNamespace=
"http://www.activiti.org/test"
>
<process
id=
"groupDataStandardProcess"
name=
"集团数据标准流程"
isExecutable=
"true"
>
<startEvent
id=
"startevent1"
name=
"Start"
></startEvent>
<userTask
id=
"dataStandardMake"
name=
"提出数据标准编制需求"
activiti:assignee=
"${inputUser}"
></userTask>
<userTask
id=
"applyTask1"
name=
"审批(报表中心1)"
activiti:candidateUsers=
"${groupDataStandardServiceImpl.findAssigneesForProcess(execution,"group1")}"
></userTask>
<exclusiveGateway
id=
"exclusivegateway1"
name=
"Exclusive Gateway"
></exclusiveGateway>
<sequenceFlow
id=
"flow1"
sourceRef=
"startevent1"
targetRef=
"dataStandardMake"
></sequenceFlow>
<sequenceFlow
id=
"flow4"
name=
"N"
sourceRef=
"exclusivegateway1"
targetRef=
"dataStandardMake"
skipExpression=
"${sign=='false'}"
></sequenceFlow>
<userTask
id=
"selectStandardApartment"
name=
"确定数据标准责任部门"
activiti:candidateUsers=
"${groupDataStandardServiceImpl.findAssigneesForProcess(execution,"group2")}"
></userTask>
<userTask
id=
"writeStandardAttr"
name=
"填写数据标准属性"
>
<extensionElements>
<activiti:taskListener
event=
"create"
class=
"com.keymobile.activiti.listener.WirteStandardAttrListener"
></activiti:taskListener>
</extensionElements>
</userTask>
<sequenceFlow
id=
"flow5"
name=
"Y"
sourceRef=
"exclusivegateway1"
targetRef=
"selectStandardApartment"
skipExpression=
"${sign=='true'}"
></sequenceFlow>
<sequenceFlow
id=
"flow6"
sourceRef=
"selectStandardApartment"
targetRef=
"writeStandardAttr"
></sequenceFlow>
<userTask
id=
"applyTask2"
name=
"审批(报表中心2)"
activiti:candidateUsers=
"${groupDataStandardServiceImpl.findAssigneesForProcess(execution,"group3")}"
></userTask>
<exclusiveGateway
id=
"exclusivegateway2"
name=
"Exclusive Gateway"
></exclusiveGateway>
<userTask
id=
"applyTask3"
name=
"审批(科技运营部)"
activiti:candidateUsers=
"${groupDataStandardServiceImpl.findAssigneesForProcess(execution,"group4")}"
></userTask>
<sequenceFlow
id=
"flow11"
name=
"Y"
sourceRef=
"exclusivegateway2"
targetRef=
"applyTask3"
skipExpression=
"${sign=='true'}"
></sequenceFlow>
<exclusiveGateway
id=
"exclusivegateway3"
name=
"Exclusive Gateway"
></exclusiveGateway>
<userTask
id=
"applyTask4"
name=
"审批(报表中心4)"
activiti:candidateUsers=
"${groupDataStandardServiceImpl.findAssigneesForProcess(execution,"group5")}"
></userTask>
<exclusiveGateway
id=
"exclusivegateway4"
name=
"Exclusive Gateway"
></exclusiveGateway>
<endEvent
id=
"endevent1"
name=
"End"
></endEvent>
<userTask
id=
"publishStandard"
name=
"发布数据标准终版"
activiti:candidateUsers=
"${groupDataStandardServiceImpl.findAssigneesForProcess(execution,"group6")}"
></userTask>
<sequenceFlow
id=
"flow13"
sourceRef=
"applyTask3"
targetRef=
"exclusivegateway3"
></sequenceFlow>
<sequenceFlow
id=
"flow15"
sourceRef=
"applyTask4"
targetRef=
"exclusivegateway4"
></sequenceFlow>
<sequenceFlow
id=
"flow16"
name=
"N"
sourceRef=
"exclusivegateway3"
targetRef=
"applyTask4"
skipExpression=
"${sign=='false'}"
></sequenceFlow>
<sequenceFlow
id=
"flow17"
name=
"Y"
sourceRef=
"exclusivegateway4"
targetRef=
"endevent1"
skipExpression=
"${sign=='true'}"
></sequenceFlow>
<sequenceFlow
id=
"flow18"
name=
"Y"
sourceRef=
"exclusivegateway3"
targetRef=
"publishStandard"
skipExpression=
"${sign=='true'}"
></sequenceFlow>
<sequenceFlow
id=
"flow19"
sourceRef=
"publishStandard"
targetRef=
"endevent1"
></sequenceFlow>
<sequenceFlow
id=
"flow24"
name=
"N"
sourceRef=
"exclusivegateway4"
targetRef=
"writeStandardAttr"
skipExpression=
"${sign=='false'}"
></sequenceFlow>
<sequenceFlow
id=
"flow25"
name=
"N"
sourceRef=
"exclusivegateway2"
targetRef=
"writeStandardAttr"
skipExpression=
"${sign=='false'}"
></sequenceFlow>
<sequenceFlow
id=
"flow28"
sourceRef=
"writeStandardAttr"
targetRef=
"applyTask2"
></sequenceFlow>
<sequenceFlow
id=
"flow29"
sourceRef=
"dataStandardMake"
targetRef=
"applyTask1"
></sequenceFlow>
<sequenceFlow
id=
"flow30"
sourceRef=
"applyTask1"
targetRef=
"exclusivegateway1"
></sequenceFlow>
<sequenceFlow
id=
"flow31"
sourceRef=
"applyTask2"
targetRef=
"exclusivegateway2"
></sequenceFlow>
</process>
<bpmndi:BPMNDiagram
id=
"BPMNDiagram_groupDataStandardProcess"
>
<bpmndi:BPMNPlane
bpmnElement=
"groupDataStandardProcess"
id=
"BPMNPlane_groupDataStandardProcess"
>
<bpmndi:BPMNShape
bpmnElement=
"startevent1"
id=
"BPMNShape_startevent1"
>
<omgdc:Bounds
height=
"35.0"
width=
"35.0"
x=
"20.0"
y=
"70.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"dataStandardMake"
id=
"BPMNShape_dataStandardMake"
>
<omgdc:Bounds
height=
"71.0"
width=
"105.0"
x=
"82.0"
y=
"52.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"applyTask1"
id=
"BPMNShape_applyTask1"
>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"210.0"
y=
"60.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"exclusivegateway1"
id=
"BPMNShape_exclusivegateway1"
>
<omgdc:Bounds
height=
"40.0"
width=
"40.0"
x=
"361.0"
y=
"67.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"selectStandardApartment"
id=
"BPMNShape_selectStandardApartment"
>
<omgdc:Bounds
height=
"63.0"
width=
"105.0"
x=
"450.0"
y=
"56.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"writeStandardAttr"
id=
"BPMNShape_writeStandardAttr"
>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"580.0"
y=
"60.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"applyTask2"
id=
"BPMNShape_applyTask2"
>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"710.0"
y=
"230.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"exclusivegateway2"
id=
"BPMNShape_exclusivegateway2"
>
<omgdc:Bounds
height=
"40.0"
width=
"40.0"
x=
"638.0"
y=
"237.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"applyTask3"
id=
"BPMNShape_applyTask3"
>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"470.0"
y=
"230.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"exclusivegateway3"
id=
"BPMNShape_exclusivegateway3"
>
<omgdc:Bounds
height=
"40.0"
width=
"40.0"
x=
"409.0"
y=
"237.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"applyTask4"
id=
"BPMNShape_applyTask4"
>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"264.0"
y=
"230.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"exclusivegateway4"
id=
"BPMNShape_exclusivegateway4"
>
<omgdc:Bounds
height=
"40.0"
width=
"40.0"
x=
"165.0"
y=
"237.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"endevent1"
id=
"BPMNShape_endevent1"
>
<omgdc:Bounds
height=
"35.0"
width=
"35.0"
x=
"20.0"
y=
"240.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"publishStandard"
id=
"BPMNShape_publishStandard"
>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"82.0"
y=
"284.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge
bpmnElement=
"flow1"
id=
"BPMNEdge_flow1"
>
<omgdi:waypoint
x=
"55.0"
y=
"87.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"82.0"
y=
"87.0"
></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow4"
id=
"BPMNEdge_flow4"
>
<omgdi:waypoint
x=
"381.0"
y=
"107.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"380.0"
y=
"148.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"251.0"
y=
"148.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"133.0"
y=
"148.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"134.0"
y=
"123.0"
></omgdi:waypoint>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"14.0"
width=
"7.0"
x=
"381.0"
y=
"107.0"
></omgdc:Bounds>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow5"
id=
"BPMNEdge_flow5"
>
<omgdi:waypoint
x=
"401.0"
y=
"87.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"450.0"
y=
"87.0"
></omgdi:waypoint>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"14.0"
width=
"8.0"
x=
"401.0"
y=
"87.0"
></omgdc:Bounds>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow6"
id=
"BPMNEdge_flow6"
>
<omgdi:waypoint
x=
"555.0"
y=
"87.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"580.0"
y=
"87.0"
></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow11"
id=
"BPMNEdge_flow11"
>
<omgdi:waypoint
x=
"638.0"
y=
"257.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"575.0"
y=
"257.0"
></omgdi:waypoint>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"14.0"
width=
"100.0"
x=
"638.0"
y=
"257.0"
></omgdc:Bounds>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow13"
id=
"BPMNEdge_flow13"
>
<omgdi:waypoint
x=
"470.0"
y=
"257.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"449.0"
y=
"257.0"
></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow15"
id=
"BPMNEdge_flow15"
>
<omgdi:waypoint
x=
"264.0"
y=
"257.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"205.0"
y=
"257.0"
></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow16"
id=
"BPMNEdge_flow16"
>
<omgdi:waypoint
x=
"409.0"
y=
"257.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"369.0"
y=
"257.0"
></omgdi:waypoint>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"14.0"
width=
"7.0"
x=
"409.0"
y=
"257.0"
></omgdc:Bounds>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow17"
id=
"BPMNEdge_flow17"
>
<omgdi:waypoint
x=
"165.0"
y=
"257.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"55.0"
y=
"257.0"
></omgdi:waypoint>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"14.0"
width=
"100.0"
x=
"165.0"
y=
"257.0"
></omgdc:Bounds>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow18"
id=
"BPMNEdge_flow18"
>
<omgdi:waypoint
x=
"429.0"
y=
"277.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"428.0"
y=
"311.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"187.0"
y=
"311.0"
></omgdi:waypoint>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"14.0"
width=
"8.0"
x=
"429.0"
y=
"277.0"
></omgdc:Bounds>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow19"
id=
"BPMNEdge_flow19"
>
<omgdi:waypoint
x=
"82.0"
y=
"311.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"37.0"
y=
"310.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"37.0"
y=
"275.0"
></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow24"
id=
"BPMNEdge_flow24"
>
<omgdi:waypoint
x=
"185.0"
y=
"237.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"185.0"
y=
"160.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"376.0"
y=
"160.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"485.0"
y=
"160.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"632.0"
y=
"160.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"632.0"
y=
"115.0"
></omgdi:waypoint>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"14.0"
width=
"100.0"
x=
"185.0"
y=
"237.0"
></omgdc:Bounds>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow25"
id=
"BPMNEdge_flow25"
>
<omgdi:waypoint
x=
"658.0"
y=
"237.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"657.0"
y=
"173.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"657.0"
y=
"156.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"657.0"
y=
"156.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"632.0"
y=
"156.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"632.0"
y=
"156.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"632.0"
y=
"115.0"
></omgdi:waypoint>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"14.0"
width=
"100.0"
x=
"658.0"
y=
"237.0"
></omgdc:Bounds>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow28"
id=
"BPMNEdge_flow28"
>
<omgdi:waypoint
x=
"685.0"
y=
"87.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"762.0"
y=
"87.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"762.0"
y=
"230.0"
></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow29"
id=
"BPMNEdge_flow29"
>
<omgdi:waypoint
x=
"187.0"
y=
"87.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"210.0"
y=
"87.0"
></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow30"
id=
"BPMNEdge_flow30"
>
<omgdi:waypoint
x=
"315.0"
y=
"87.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"361.0"
y=
"87.0"
></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow31"
id=
"BPMNEdge_flow31"
>
<omgdi:waypoint
x=
"710.0"
y=
"257.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"678.0"
y=
"257.0"
></omgdi:waypoint>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>
\ No newline at end of file
src/main/resources/RecordProcess.bpmn
deleted
100644 → 0
View file @
d7ac0dd2
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<definitions
xmlns=
"http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:activiti=
"http://activiti.org/bpmn"
xmlns:bpmndi=
"http://www.omg.org/spec/BPMN/20100524/DI"
xmlns:omgdc=
"http://www.omg.org/spec/DD/20100524/DC"
xmlns:omgdi=
"http://www.omg.org/spec/DD/20100524/DI"
xmlns:tns=
"http://www.activiti.org/test"
xmlns:xsd=
"http://www.w3.org/2001/XMLSchema"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
expressionLanguage=
"http://www.w3.org/1999/XPath"
id=
"m1583334145142"
name=
""
targetNamespace=
"http://www.activiti.org/test"
typeLanguage=
"http://www.w3.org/2001/XMLSchema"
>
<process
id=
"RecordProcess"
isClosed=
"false"
isExecutable=
"true"
name=
"RecordProcess"
processType=
"None"
>
<startEvent
id=
"startEvent"
name=
"流程开始"
>
<extensionElements>
<activiti:executionListener
event=
"start"
/>
</extensionElements>
</startEvent>
<endEvent
id=
"endEvent"
name=
"End"
/>
<userTask
activiti:assignee=
"chenws"
activiti:candidateUsers=
"${activityDemoServiceImpl.findUsersForSP(execution)}"
activiti:exclusive=
"true"
id=
"checkData"
name=
"审批数据"
/>
<exclusiveGateway
gatewayDirection=
"Unspecified"
id=
"isDataPass"
name=
"数据是否正确通过"
>
<extensionElements>
<activiti:executionListener
event=
"start"
>
<activiti:field>
<activiti:string/>
</activiti:field>
</activiti:executionListener>
</extensionElements>
</exclusiveGateway>
<sequenceFlow
id=
"flow5"
sourceRef=
"checkData"
targetRef=
"isDataPass"
/>
<userTask
activiti:assignee=
"管理"
activiti:exclusive=
"true"
id=
"addExcel"
name=
"添加补录模板"
>
<extensionElements>
<activiti:taskListener
event=
"create"
/>
</extensionElements>
</userTask>
<userTask
activiti:assignee=
"chenws"
activiti:candidateUsers=
"${userIds}"
activiti:exclusive=
"true"
id=
"addData"
name=
"补录人员填写模板"
/>
<sequenceFlow
id=
"_7"
sourceRef=
"addExcel"
targetRef=
"addData"
/>
<sequenceFlow
id=
"_8"
sourceRef=
"addData"
targetRef=
"checkData"
/>
<sequenceFlow
id=
"_10"
sourceRef=
"startEvent"
targetRef=
"addExcel"
/>
<sequenceFlow
id=
"_12"
skipExpression=
"${sign=='false'}"
sourceRef=
"isDataPass"
targetRef=
"addData"
>
<conditionExpression
xsi:type=
"tFormalExpression"
>
<![CDATA[
]]>
</conditionExpression>
</sequenceFlow>
<sequenceFlow
id=
"_13"
sourceRef=
"isDataPass"
targetRef=
"endEvent"
>
<extensionElements>
<activiti:executionListener
event=
"start"
/>
</extensionElements>
<conditionExpression
xsi:type=
"tFormalExpression"
>
<![CDATA[
]]>
</conditionExpression>
</sequenceFlow>
</process>
<bpmndi:BPMNDiagram
documentation=
"background=#3C3F41;count=1;horizontalcount=1;orientation=0;width=842.4;height=1195.2;imageableWidth=832.4;imageableHeight=1185.2;imageableX=5.0;imageableY=5.0"
id=
"Diagram-_1"
name=
"New Diagram"
>
<bpmndi:BPMNPlane
bpmnElement=
"RecordProcess"
>
<bpmndi:BPMNShape
bpmnElement=
"startEvent"
id=
"Shape-startEvent"
>
<omgdc:Bounds
height=
"32.0"
width=
"32.0"
x=
"450.0"
y=
"45.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"32.0"
width=
"32.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"endEvent"
id=
"Shape-endEvent"
>
<omgdc:Bounds
height=
"32.0"
width=
"32.0"
x=
"455.0"
y=
"675.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"32.0"
width=
"32.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"checkData"
id=
"Shape-checkData"
>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"410.0"
y=
"445.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"isDataPass"
id=
"Shape-isDataPass"
isMarkerVisible=
"false"
>
<omgdc:Bounds
height=
"32.0"
width=
"32.0"
x=
"455.0"
y=
"545.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"32.0"
width=
"32.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"addExcel"
id=
"Shape-addExcel"
>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"415.0"
y=
"205.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"addData"
id=
"Shape-addData"
>
<omgdc:Bounds
height=
"70.0"
width=
"105.0"
x=
"400.0"
y=
"315.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"70.0"
width=
"105.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge
bpmnElement=
"_13"
id=
"BPMNEdge__13"
sourceElement=
"isDataPass"
targetElement=
"endEvent"
>
<omgdi:waypoint
x=
"471.0"
y=
"577.0"
/>
<omgdi:waypoint
x=
"471.0"
y=
"675.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"0.0"
width=
"0.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"_12"
id=
"BPMNEdge__12"
sourceElement=
"isDataPass"
targetElement=
"addData"
>
<omgdi:waypoint
x=
"458.0"
y=
"558.0"
/>
<omgdi:waypoint
x=
"350.0"
y=
"558.0"
/>
<omgdi:waypoint
x=
"400.0"
y=
"350.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"-1.0"
width=
"-1.0"
x=
"-1.0"
y=
"-1.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow5"
id=
"BPMNEdge_flow5"
sourceElement=
"checkData"
targetElement=
"isDataPass"
>
<omgdi:waypoint
x=
"471.0"
y=
"500.0"
/>
<omgdi:waypoint
x=
"471.0"
y=
"545.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"-1.0"
width=
"-1.0"
x=
"-1.0"
y=
"-1.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"_7"
id=
"BPMNEdge__7"
sourceElement=
"addExcel"
targetElement=
"addData"
>
<omgdi:waypoint
x=
"460.0"
y=
"260.0"
/>
<omgdi:waypoint
x=
"460.0"
y=
"315.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"0.0"
width=
"0.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"_8"
id=
"BPMNEdge__8"
sourceElement=
"addData"
targetElement=
"checkData"
>
<omgdi:waypoint
x=
"457.5"
y=
"385.0"
/>
<omgdi:waypoint
x=
"457.5"
y=
"445.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"0.0"
width=
"0.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"_10"
id=
"BPMNEdge__10"
sourceElement=
"startEvent"
targetElement=
"addExcel"
>
<omgdi:waypoint
x=
"466.0"
y=
"77.0"
/>
<omgdi:waypoint
x=
"466.0"
y=
"205.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"0.0"
width=
"0.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>
src/main/resources/RecordStandardProcess.bpmn
View file @
ee6e03cf
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<definitions
xmlns=
"http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:activiti=
"http://activiti.org/bpmn"
xmlns:bpmndi=
"http://www.omg.org/spec/BPMN/20100524/DI"
xmlns:dc=
"http://www.omg.org/spec/DD/20100524/DC"
xmlns:di=
"http://www.omg.org/spec/DD/20100524/DI"
xmlns:tns=
"http://www.activiti.org/testm1583600477586"
xmlns:xsd=
"http://www.w3.org/2001/XMLSchema"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
expressionLanguage=
"http://www.w3.org/1999/XPath"
id=
"m1583600477586"
name=
""
targetNamespace=
"http://www.activiti.org/testm1583600477586"
typeLanguage=
"http://www.w3.org/2001/XMLSchema"
>
<definitions
xmlns=
"http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:activiti=
"http://activiti.org/bpmn"
<process
id=
"RecordStandardProcess"
isClosed=
"false"
isExecutable=
"true"
name=
"RecordStandardProcess"
processType=
"None"
>
xmlns:bpmndi=
"http://www.omg.org/spec/BPMN/20100524/DI"
xmlns:dc=
"http://www.omg.org/spec/DD/20100524/DC"
<startEvent
id=
"RecordStartEvent"
name=
"StartEvent"
/>
xmlns:di=
"http://www.omg.org/spec/DD/20100524/DI"
xmlns:tns=
"http://www.activiti.org/testm1583600477586"
<userTask
activiti:assignee=
"${userId}"
activiti:exclusive=
"true"
id=
"addData"
name=
"填写补录报表"
/>
xmlns:xsd=
"http://www.w3.org/2001/XMLSchema"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
<userTask
activiti:assignee=
"${managerId}"
activiti:exclusive=
"true"
id=
"addExcel"
name=
"发起流程添加模板"
/>
expressionLanguage=
"http://www.w3.org/1999/XPath"
id=
"m1583600477586"
name=
""
<userTask
activiti:assignee=
"${judgeId}"
activiti:exclusive=
"true"
id=
"JudgeData"
name=
"审核数据"
/>
targetNamespace=
"http://www.activiti.org/testm1583600477586"
<endEvent
id=
"RecordEndEvent"
name=
"EndEvent"
/>
typeLanguage=
"http://www.w3.org/2001/XMLSchema"
>
<sequenceFlow
id=
"_8"
sourceRef=
"RecordStartEvent"
targetRef=
"addExcel"
/>
<process
id=
"RecordStandardProcess"
isClosed=
"false"
isExecutable=
"true"
name=
"RecordStandardProcess"
<sequenceFlow
id=
"_9"
sourceRef=
"addExcel"
targetRef=
"addData"
/>
processType=
"None"
>
<sequenceFlow
id=
"_7"
sourceRef=
"addData"
targetRef=
"JudgeData"
/>
<startEvent
id=
"RecordStartEvent"
name=
"StartEvent"
/>
<exclusiveGateway
gatewayDirection=
"Unspecified"
id=
"JudgeGateway"
name=
"JudgeGateway"
/>
<userTask
activiti:assignee=
"${userId}"
activiti:exclusive=
"true"
id=
"addData"
name=
"填写补录报表"
/>
<sequenceFlow
id=
"_11"
sourceRef=
"JudgeData"
targetRef=
"JudgeGateway"
/>
<userTask
activiti:assignee=
"${managerId}"
activiti:exclusive=
"true"
id=
"addExcel"
name=
"发起流程添加模板"
/>
<sequenceFlow
id=
"_12"
sourceRef=
"JudgeGateway"
targetRef=
"RecordEndEvent"
>
<userTask
activiti:assignee=
"${judgeId}"
activiti:exclusive=
"true"
id=
"JudgeData"
name=
"审核数据"
/>
<conditionExpression
xsi:type=
"tFormalExpression"
>
<endEvent
id=
"RecordEndEvent"
name=
"EndEvent"
/>
<![CDATA[${pass == 'true'}]]>
<sequenceFlow
id=
"_8"
sourceRef=
"RecordStartEvent"
targetRef=
"addExcel"
/>
</conditionExpression>
<sequenceFlow
id=
"_9"
sourceRef=
"addExcel"
targetRef=
"addData"
/>
</sequenceFlow>
<sequenceFlow
id=
"_7"
sourceRef=
"addData"
targetRef=
"JudgeData"
/>
<sequenceFlow
id=
"_13"
sourceRef=
"JudgeGateway"
targetRef=
"addData"
>
<exclusiveGateway
gatewayDirection=
"Unspecified"
id=
"JudgeGateway"
name=
"JudgeGateway"
/>
<conditionExpression
xsi:type=
"tFormalExpression"
>
<sequenceFlow
id=
"_11"
sourceRef=
"JudgeData"
targetRef=
"JudgeGateway"
/>
<![CDATA[${pass == 'false'}]]>
<sequenceFlow
id=
"_12"
sourceRef=
"JudgeGateway"
targetRef=
"RecordEndEvent"
>
</conditionExpression>
<conditionExpression
xsi:type=
"tFormalExpression"
>
</sequenceFlow>
<![CDATA[${pass == 'true'}]]>
</process>
</conditionExpression>
<bpmndi:BPMNDiagram
documentation=
"background=#3C3F41;count=1;horizontalcount=1;orientation=0;width=842.4;height=1195.2;imageableWidth=832.4;imageableHeight=1185.2;imageableX=5.0;imageableY=5.0"
id=
"Diagram-_1"
name=
"New Diagram"
>
</sequenceFlow>
<bpmndi:BPMNPlane
bpmnElement=
"RecordStandardProcess"
>
<sequenceFlow
id=
"_13"
sourceRef=
"JudgeGateway"
targetRef=
"addData"
>
<bpmndi:BPMNShape
bpmnElement=
"RecordStartEvent"
id=
"Shape-RecordStartEvent"
>
<conditionExpression
xsi:type=
"tFormalExpression"
>
<dc:Bounds
height=
"32.0"
width=
"32.0"
x=
"625.0"
y=
"35.0"
/>
<![CDATA[${pass == 'false'}]]>
<bpmndi:BPMNLabel>
</conditionExpression>
<dc:Bounds
height=
"32.0"
width=
"32.0"
x=
"0.0"
y=
"0.0"
/>
</sequenceFlow>
</bpmndi:BPMNLabel>
</process>
</bpmndi:BPMNShape>
<bpmndi:BPMNDiagram
<bpmndi:BPMNShape
bpmnElement=
"addData"
id=
"Shape-addData"
>
documentation=
"background=#3C3F41;count=1;horizontalcount=1;orientation=0;width=842.4;height=1195.2;imageableWidth=832.4;imageableHeight=1185.2;imageableX=5.0;imageableY=5.0"
<dc:Bounds
height=
"55.0"
width=
"85.0"
x=
"595.0"
y=
"215.0"
/>
id=
"Diagram-_1"
name=
"New Diagram"
>
<bpmndi:BPMNLabel>
<bpmndi:BPMNPlane
bpmnElement=
"RecordStandardProcess"
>
<dc:Bounds
height=
"55.0"
width=
"85.0"
x=
"0.0"
y=
"0.0"
/>
<bpmndi:BPMNShape
bpmnElement=
"RecordStartEvent"
id=
"Shape-RecordStartEvent"
>
</bpmndi:BPMNLabel>
<dc:Bounds
height=
"32.0"
width=
"32.0"
x=
"625.0"
y=
"35.0"
/>
</bpmndi:BPMNShape>
<bpmndi:BPMNLabel>
<bpmndi:BPMNShape
bpmnElement=
"addExcel"
id=
"Shape-addExcel"
>
<dc:Bounds
height=
"32.0"
width=
"32.0"
x=
"0.0"
y=
"0.0"
/>
<dc:Bounds
height=
"55.0"
width=
"85.0"
x=
"600.0"
y=
"110.0"
/>
</bpmndi:BPMNLabel>
<bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<dc:Bounds
height=
"55.0"
width=
"85.0"
x=
"0.0"
y=
"0.0"
/>
<bpmndi:BPMNShape
bpmnElement=
"addData"
id=
"Shape-addData"
>
</bpmndi:BPMNLabel>
<dc:Bounds
height=
"55.0"
width=
"85.0"
x=
"595.0"
y=
"215.0"
/>
</bpmndi:BPMNShape>
<bpmndi:BPMNLabel>
<bpmndi:BPMNShape
bpmnElement=
"JudgeData"
id=
"Shape-JudgeData"
>
<dc:Bounds
height=
"55.0"
width=
"85.0"
x=
"0.0"
y=
"0.0"
/>
<dc:Bounds
height=
"55.0"
width=
"85.0"
x=
"590.0"
y=
"325.0"
/>
</bpmndi:BPMNLabel>
<bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<dc:Bounds
height=
"55.0"
width=
"85.0"
x=
"0.0"
y=
"0.0"
/>
<bpmndi:BPMNShape
bpmnElement=
"addExcel"
id=
"Shape-addExcel"
>
</bpmndi:BPMNLabel>
<dc:Bounds
height=
"55.0"
width=
"85.0"
x=
"600.0"
y=
"110.0"
/>
</bpmndi:BPMNShape>
<bpmndi:BPMNLabel>
<bpmndi:BPMNShape
bpmnElement=
"RecordEndEvent"
id=
"Shape-RecordEndEvent"
>
<dc:Bounds
height=
"55.0"
width=
"85.0"
x=
"0.0"
y=
"0.0"
/>
<dc:Bounds
height=
"32.0"
width=
"32.0"
x=
"620.0"
y=
"565.0"
/>
</bpmndi:BPMNLabel>
<bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<dc:Bounds
height=
"32.0"
width=
"32.0"
x=
"0.0"
y=
"0.0"
/>
<bpmndi:BPMNShape
bpmnElement=
"JudgeData"
id=
"Shape-JudgeData"
>
</bpmndi:BPMNLabel>
<dc:Bounds
height=
"55.0"
width=
"85.0"
x=
"590.0"
y=
"325.0"
/>
</bpmndi:BPMNShape>
<bpmndi:BPMNLabel>
<bpmndi:BPMNShape
bpmnElement=
"JudgeGateway"
id=
"Shape-JudgeGateway"
isMarkerVisible=
"false"
>
<dc:Bounds
height=
"55.0"
width=
"85.0"
x=
"0.0"
y=
"0.0"
/>
<dc:Bounds
height=
"32.0"
width=
"32.0"
x=
"620.0"
y=
"455.0"
/>
</bpmndi:BPMNLabel>
<bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<dc:Bounds
height=
"32.0"
width=
"32.0"
x=
"0.0"
y=
"0.0"
/>
<bpmndi:BPMNShape
bpmnElement=
"RecordEndEvent"
id=
"Shape-RecordEndEvent"
>
</bpmndi:BPMNLabel>
<dc:Bounds
height=
"32.0"
width=
"32.0"
x=
"620.0"
y=
"565.0"
/>
</bpmndi:BPMNShape>
<bpmndi:BPMNLabel>
<bpmndi:BPMNEdge
bpmnElement=
"_13"
id=
"BPMNEdge__13"
sourceElement=
"_10"
targetElement=
"_3"
>
<dc:Bounds
height=
"32.0"
width=
"32.0"
x=
"0.0"
y=
"0.0"
/>
<di:waypoint
x=
"620.0"
y=
"471.0"
/>
</bpmndi:BPMNLabel>
<di:waypoint
x=
"500.0"
y=
"345.0"
/>
</bpmndi:BPMNShape>
<di:waypoint
x=
"595.0"
y=
"242.5"
/>
<bpmndi:BPMNShape
bpmnElement=
"JudgeGateway"
id=
"Shape-JudgeGateway"
isMarkerVisible=
"false"
>
<bpmndi:BPMNLabel>
<dc:Bounds
height=
"32.0"
width=
"32.0"
x=
"620.0"
y=
"455.0"
/>
<dc:Bounds
height=
"0.0"
width=
"0.0"
x=
"0.0"
y=
"0.0"
/>
<bpmndi:BPMNLabel>
</bpmndi:BPMNLabel>
<dc:Bounds
height=
"32.0"
width=
"32.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNEdge>
</bpmndi:BPMNLabel>
<bpmndi:BPMNEdge
bpmnElement=
"_12"
id=
"BPMNEdge__12"
sourceElement=
"_10"
targetElement=
"_6"
>
</bpmndi:BPMNShape>
<di:waypoint
x=
"636.0"
y=
"487.0"
/>
<bpmndi:BPMNEdge
bpmnElement=
"_13"
id=
"BPMNEdge__13"
sourceElement=
"_10"
targetElement=
"_3"
>
<di:waypoint
x=
"636.0"
y=
"565.0"
/>
<di:waypoint
x=
"620.0"
y=
"471.0"
/>
<bpmndi:BPMNLabel>
<di:waypoint
x=
"500.0"
y=
"345.0"
/>
<dc:Bounds
height=
"0.0"
width=
"0.0"
x=
"0.0"
y=
"0.0"
/>
<di:waypoint
x=
"595.0"
y=
"242.5"
/>
</bpmndi:BPMNLabel>
<bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<dc:Bounds
height=
"0.0"
width=
"0.0"
x=
"0.0"
y=
"0.0"
/>
<bpmndi:BPMNEdge
bpmnElement=
"_7"
id=
"BPMNEdge__7"
sourceElement=
"_3"
targetElement=
"_5"
>
</bpmndi:BPMNLabel>
<di:waypoint
x=
"635.0"
y=
"270.0"
/>
</bpmndi:BPMNEdge>
<di:waypoint
x=
"635.0"
y=
"325.0"
/>
<bpmndi:BPMNEdge
bpmnElement=
"_12"
id=
"BPMNEdge__12"
sourceElement=
"_10"
targetElement=
"_6"
>
<bpmndi:BPMNLabel>
<di:waypoint
x=
"636.0"
y=
"487.0"
/>
<dc:Bounds
height=
"0.0"
width=
"0.0"
x=
"0.0"
y=
"0.0"
/>
<di:waypoint
x=
"636.0"
y=
"565.0"
/>
</bpmndi:BPMNLabel>
<bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<dc:Bounds
height=
"0.0"
width=
"0.0"
x=
"0.0"
y=
"0.0"
/>
<bpmndi:BPMNEdge
bpmnElement=
"_8"
id=
"BPMNEdge__8"
sourceElement=
"_2"
targetElement=
"_4"
>
</bpmndi:BPMNLabel>
<di:waypoint
x=
"641.0"
y=
"67.0"
/>
</bpmndi:BPMNEdge>
<di:waypoint
x=
"641.0"
y=
"110.0"
/>
<bpmndi:BPMNEdge
bpmnElement=
"_7"
id=
"BPMNEdge__7"
sourceElement=
"_3"
targetElement=
"_5"
>
<bpmndi:BPMNLabel>
<di:waypoint
x=
"635.0"
y=
"270.0"
/>
<dc:Bounds
height=
"0.0"
width=
"0.0"
x=
"0.0"
y=
"0.0"
/>
<di:waypoint
x=
"635.0"
y=
"325.0"
/>
</bpmndi:BPMNLabel>
<bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<dc:Bounds
height=
"0.0"
width=
"0.0"
x=
"0.0"
y=
"0.0"
/>
<bpmndi:BPMNEdge
bpmnElement=
"_9"
id=
"BPMNEdge__9"
sourceElement=
"_4"
targetElement=
"_3"
>
</bpmndi:BPMNLabel>
<di:waypoint
x=
"640.0"
y=
"165.0"
/>
</bpmndi:BPMNEdge>
<di:waypoint
x=
"640.0"
y=
"215.0"
/>
<bpmndi:BPMNEdge
bpmnElement=
"_8"
id=
"BPMNEdge__8"
sourceElement=
"_2"
targetElement=
"_4"
>
<bpmndi:BPMNLabel>
<di:waypoint
x=
"641.0"
y=
"67.0"
/>
<dc:Bounds
height=
"0.0"
width=
"0.0"
x=
"0.0"
y=
"0.0"
/>
<di:waypoint
x=
"641.0"
y=
"110.0"
/>
</bpmndi:BPMNLabel>
<bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<dc:Bounds
height=
"0.0"
width=
"0.0"
x=
"0.0"
y=
"0.0"
/>
<bpmndi:BPMNEdge
bpmnElement=
"_11"
id=
"BPMNEdge__11"
sourceElement=
"_5"
targetElement=
"_10"
>
</bpmndi:BPMNLabel>
<di:waypoint
x=
"636.0"
y=
"380.0"
/>
</bpmndi:BPMNEdge>
<di:waypoint
x=
"636.0"
y=
"455.0"
/>
<bpmndi:BPMNEdge
bpmnElement=
"_9"
id=
"BPMNEdge__9"
sourceElement=
"_4"
targetElement=
"_3"
>
<bpmndi:BPMNLabel>
<di:waypoint
x=
"640.0"
y=
"165.0"
/>
<dc:Bounds
height=
"0.0"
width=
"0.0"
x=
"0.0"
y=
"0.0"
/>
<di:waypoint
x=
"640.0"
y=
"215.0"
/>
</bpmndi:BPMNLabel>
<bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<dc:Bounds
height=
"0.0"
width=
"0.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNPlane>
</bpmndi:BPMNLabel>
</bpmndi:BPMNDiagram>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"_11"
id=
"BPMNEdge__11"
sourceElement=
"_5"
targetElement=
"_10"
>
<di:waypoint
x=
"636.0"
y=
"380.0"
/>
<di:waypoint
x=
"636.0"
y=
"455.0"
/>
<bpmndi:BPMNLabel>
<dc:Bounds
height=
"0.0"
width=
"0.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>
</definitions>
src/main/resources/TestProcess.bpmn
deleted
100644 → 0
View file @
d7ac0dd2
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<definitions
xmlns=
"http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:activiti=
"http://activiti.org/bpmn"
xmlns:bpmndi=
"http://www.omg.org/spec/BPMN/20100524/DI"
xmlns:omgdc=
"http://www.omg.org/spec/DD/20100524/DC"
xmlns:omgdi=
"http://www.omg.org/spec/DD/20100524/DI"
xmlns:tns=
"http://www.activiti.org/test"
xmlns:xsd=
"http://www.w3.org/2001/XMLSchema"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
expressionLanguage=
"http://www.w3.org/1999/XPath"
id=
"m1583334145142"
name=
""
targetNamespace=
"http://www.activiti.org/test"
typeLanguage=
"http://www.w3.org/2001/XMLSchema"
>
<process
id=
"testProcess"
isClosed=
"false"
isExecutable=
"true"
name=
"Test process"
processType=
"None"
>
<startEvent
id=
"startevent1"
name=
"Start"
/>
<endEvent
id=
"endevent1"
name=
"End"
/>
<serviceTask
activiti:exclusive=
"true"
activiti:expression=
"#{activityDemoServiceImpl.updateBizStatus(execution,"tj")}"
id=
"servicetask1"
name=
"用户提交"
/>
<userTask
activiti:candidateUsers=
"${activityDemoServiceImpl.findUsersForSL(execution)}"
activiti:exclusive=
"true"
id=
"usertask1"
name=
"受理"
/>
<exclusiveGateway
gatewayDirection=
"Unspecified"
id=
"exclusivegateway1"
name=
"Exclusive Gateway"
/>
<userTask
activiti:candidateUsers=
"${activityDemoServiceImpl.findUsersForSP(execution)}"
activiti:exclusive=
"true"
id=
"usertask2"
name=
"审批"
/>
<exclusiveGateway
gatewayDirection=
"Unspecified"
id=
"exclusivegateway3"
name=
"Exclusive Gateway"
/>
<serviceTask
activiti:exclusive=
"true"
activiti:expression=
"#{activityDemoServiceImpl.updateBizStatus(execution,"qf")}"
id=
"servicetask2"
name=
"已签发"
/>
<serviceTask
activiti:exclusive=
"true"
activiti:expression=
"#{activityDemoServiceImpl.updateBizStatus(execution,"bq")}"
id=
"servicetask3"
name=
"资料不全"
/>
<sequenceFlow
id=
"flow1"
sourceRef=
"startevent1"
targetRef=
"servicetask1"
/>
<sequenceFlow
id=
"flow2"
sourceRef=
"servicetask1"
targetRef=
"usertask1"
/>
<sequenceFlow
id=
"flow3"
sourceRef=
"usertask1"
targetRef=
"exclusivegateway1"
/>
<sequenceFlow
id=
"flow4"
skipExpression=
"${sign=='true'}"
sourceRef=
"exclusivegateway1"
targetRef=
"usertask2"
/>
<sequenceFlow
id=
"flow5"
sourceRef=
"usertask2"
targetRef=
"exclusivegateway3"
/>
<sequenceFlow
id=
"flow6"
skipExpression=
"${sign=='true'}"
sourceRef=
"exclusivegateway3"
targetRef=
"servicetask2"
/>
<sequenceFlow
id=
"flow7"
sourceRef=
"servicetask2"
targetRef=
"endevent1"
/>
<sequenceFlow
id=
"flow8"
skipExpression=
"${sign=='false'}"
sourceRef=
"exclusivegateway3"
targetRef=
"servicetask3"
/>
<sequenceFlow
id=
"flow9"
skipExpression=
"${sign=='false'}"
sourceRef=
"exclusivegateway1"
targetRef=
"servicetask3"
/>
<sequenceFlow
id=
"flow10"
sourceRef=
"servicetask3"
targetRef=
"endevent1"
/>
</process>
<bpmndi:BPMNDiagram
documentation=
"background=#3C3F41;count=1;horizontalcount=1;orientation=0;width=842.4;height=1195.2;imageableWidth=832.4;imageableHeight=1185.2;imageableX=5.0;imageableY=5.0"
id=
"Diagram-_1"
name=
"New Diagram"
>
<bpmndi:BPMNPlane
bpmnElement=
"testProcess"
>
<bpmndi:BPMNShape
bpmnElement=
"startevent1"
id=
"Shape-startevent1"
>
<omgdc:Bounds
height=
"32.0"
width=
"32.0"
x=
"20.0"
y=
"140.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"32.0"
width=
"32.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"endevent1"
id=
"Shape-endevent1"
>
<omgdc:Bounds
height=
"32.0"
width=
"32.0"
x=
"860.0"
y=
"140.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"32.0"
width=
"32.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"servicetask1"
id=
"Shape-servicetask1"
>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"90.0"
y=
"130.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"usertask1"
id=
"Shape-usertask1"
>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"230.0"
y=
"130.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"exclusivegateway1"
id=
"Shape-exclusivegateway1"
isMarkerVisible=
"false"
>
<omgdc:Bounds
height=
"32.0"
width=
"32.0"
x=
"380.0"
y=
"137.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"32.0"
width=
"32.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"usertask2"
id=
"Shape-usertask2"
>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"460.0"
y=
"130.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"exclusivegateway3"
id=
"Shape-exclusivegateway3"
isMarkerVisible=
"false"
>
<omgdc:Bounds
height=
"32.0"
width=
"32.0"
x=
"608.0"
y=
"137.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"32.0"
width=
"32.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"servicetask2"
id=
"Shape-servicetask2"
>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"680.0"
y=
"130.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"servicetask3"
id=
"Shape-servicetask3"
>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"576.0"
y=
"20.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"55.0"
width=
"105.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge
bpmnElement=
"flow1"
id=
"BPMNEdge_flow1"
sourceElement=
"startevent1"
targetElement=
"servicetask1"
>
<omgdi:waypoint
x=
"52.0"
y=
"156.0"
/>
<omgdi:waypoint
x=
"90.0"
y=
"157.5"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"-1.0"
width=
"-1.0"
x=
"-1.0"
y=
"-1.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow2"
id=
"BPMNEdge_flow2"
sourceElement=
"servicetask1"
targetElement=
"usertask1"
>
<omgdi:waypoint
x=
"195.0"
y=
"157.5"
/>
<omgdi:waypoint
x=
"230.0"
y=
"157.5"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"-1.0"
width=
"-1.0"
x=
"-1.0"
y=
"-1.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow3"
id=
"BPMNEdge_flow3"
sourceElement=
"usertask1"
targetElement=
"exclusivegateway1"
>
<omgdi:waypoint
x=
"335.0"
y=
"157.5"
/>
<omgdi:waypoint
x=
"380.0"
y=
"153.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"-1.0"
width=
"-1.0"
x=
"-1.0"
y=
"-1.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow4"
id=
"BPMNEdge_flow4"
sourceElement=
"exclusivegateway1"
targetElement=
"usertask2"
>
<omgdi:waypoint
x=
"412.0"
y=
"153.0"
/>
<omgdi:waypoint
x=
"460.0"
y=
"157.5"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"-1.0"
width=
"-1.0"
x=
"-1.0"
y=
"-1.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow5"
id=
"BPMNEdge_flow5"
sourceElement=
"usertask2"
targetElement=
"exclusivegateway3"
>
<omgdi:waypoint
x=
"565.0"
y=
"157.5"
/>
<omgdi:waypoint
x=
"608.0"
y=
"153.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"-1.0"
width=
"-1.0"
x=
"-1.0"
y=
"-1.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow6"
id=
"BPMNEdge_flow6"
sourceElement=
"exclusivegateway3"
targetElement=
"servicetask2"
>
<omgdi:waypoint
x=
"640.0"
y=
"153.0"
/>
<omgdi:waypoint
x=
"680.0"
y=
"157.5"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"-1.0"
width=
"-1.0"
x=
"-1.0"
y=
"-1.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow7"
id=
"BPMNEdge_flow7"
sourceElement=
"servicetask2"
targetElement=
"endevent1"
>
<omgdi:waypoint
x=
"785.0"
y=
"157.5"
/>
<omgdi:waypoint
x=
"860.0"
y=
"156.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"-1.0"
width=
"-1.0"
x=
"-1.0"
y=
"-1.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow10"
id=
"BPMNEdge_flow10"
sourceElement=
"servicetask3"
targetElement=
"endevent1"
>
<omgdi:waypoint
x=
"681.0"
y=
"47.0"
/>
<omgdi:waypoint
x=
"877.0"
y=
"47.0"
/>
<omgdi:waypoint
x=
"877.0"
y=
"140.0312805773287"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"-1.0"
width=
"-1.0"
x=
"-1.0"
y=
"-1.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow8"
id=
"BPMNEdge_flow8"
sourceElement=
"exclusivegateway3"
targetElement=
"servicetask3"
>
<omgdi:waypoint
x=
"624.0"
y=
"137.0"
/>
<omgdi:waypoint
x=
"624.0"
y=
"75.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"-1.0"
width=
"-1.0"
x=
"-1.0"
y=
"-1.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow9"
id=
"BPMNEdge_flow9"
sourceElement=
"exclusivegateway1"
targetElement=
"servicetask3"
>
<omgdi:waypoint
x=
"400.0"
y=
"141.0"
/>
<omgdi:waypoint
x=
"400.0"
y=
"47.0"
/>
<omgdi:waypoint
x=
"576.0"
y=
"47.0"
/>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"-1.0"
width=
"-1.0"
x=
"-1.0"
y=
"-1.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>
src/main/resources/application-test.yml
View file @
ee6e03cf
...
@@ -52,8 +52,8 @@ app:
...
@@ -52,8 +52,8 @@ app:
active-process
:
RecordStandardProcess.bpmn
active-process
:
RecordStandardProcess.bpmn
swagger2
:
swagger2
:
#
host: localhost:8110
host
:
localhost:8110
host
:
47.105.236.43/activiti
#
host: 47.105.236.43/activiti
...
...
src/test/java/com/keymobile/ProcessTest.java
View file @
ee6e03cf
package
com
.
keymobile
;
package
com
.
keymobile
;
import
com.keymobile.rest.common.exception.TwinkleException
;
import
com.keymobile.rest.common.validator.TwinkleValidator
;
import
com.keymobile.rest.model.Job
;
import
com.keymobile.rest.service.JobService
;
import
com.keymobile.rest.service.JobService
;
import
javafx.application.Application
;
import
org.activiti.engine.*
;
import
org.activiti.engine.*
;
import
org.activiti.engine.history.HistoricProcessInstance
;
import
org.activiti.engine.history.HistoricProcessInstance
;
import
org.activiti.engine.history.HistoricProcessInstanceQuery
;
import
org.activiti.engine.history.HistoricProcessInstanceQuery
;
import
org.activiti.engine.repository.DeploymentBuilder
;
import
org.activiti.engine.repository.ProcessDefinition
;
import
org.activiti.engine.repository.ProcessDefinition
;
import
org.activiti.engine.task.Task
;
import
org.junit.Test
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.junit.runner.RunWith
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.util.List
;
import
java.util.List
;
@RunWith
(
SpringRunner
.
class
)
@RunWith
(
SpringRunner
.
class
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment