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
ed1caec6
Commit
ed1caec6
authored
Mar 20, 2020
by
chenweisong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新
parent
35feaef5
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
412 additions
and
200 deletions
+412
-200
pom.xml
pom.xml
+1
-1
ModelEditorJsonRestResource.java
...le/rest/activiti/modeler/ModelEditorJsonRestResource.java
+35
-35
ModelSaveRestResource.java
...eymobile/rest/activiti/modeler/ModelSaveRestResource.java
+49
-49
StencilsetRestResource.java
...ymobile/rest/activiti/modeler/StencilsetRestResource.java
+12
-12
ActivitiConfig.java
...n/java/com/keymobile/rest/common/conf/ActivitiConfig.java
+3
-2
ExceptionHandlerConfig.java
...om/keymobile/rest/common/conf/ExceptionHandlerConfig.java
+1
-1
SecurityConfig.java
...n/java/com/keymobile/rest/common/conf/SecurityConfig.java
+2
-2
AssignmentConstant.java
...om/keymobile/rest/common/constant/AssignmentConstant.java
+0
-16
TemplateConstant.java
.../com/keymobile/rest/common/constant/TemplateConstant.java
+0
-7
UserConstant.java
...java/com/keymobile/rest/common/constant/UserConstant.java
+0
-7
ExcelController.java
...n/java/com/keymobile/rest/controller/ExcelController.java
+1
-1
SubProcessCtrl.java
...in/java/com/keymobile/rest/controller/SubProcessCtrl.java
+196
-0
TaskController.java
...in/java/com/keymobile/rest/controller/TaskController.java
+29
-29
UserController.java
...in/java/com/keymobile/rest/controller/UserController.java
+3
-4
AssignmentDao.java
src/main/java/com/keymobile/rest/dao/AssignmentDao.java
+4
-4
Activity.java
src/main/java/com/keymobile/rest/model/Activity.java
+13
-1
Group.java
src/main/java/com/keymobile/rest/model/Group.java
+31
-0
Process.java
src/main/java/com/keymobile/rest/model/Process.java
+1
-1
Template.java
src/main/java/com/keymobile/rest/model/Template.java
+1
-1
User.java
src/main/java/com/keymobile/rest/model/User.java
+6
-0
AssignmentService.java
...in/java/com/keymobile/rest/service/AssignmentService.java
+20
-22
TemplateService.java
...main/java/com/keymobile/rest/service/TemplateService.java
+1
-1
UserService.java
src/main/java/com/keymobile/rest/service/UserService.java
+0
-1
ExcelForm.java
src/main/java/com/keymobile/rest/vo/ExcelForm.java
+2
-2
MoreSubProcessTest.bpmn
src/main/resources/MoreSubProcessTest.bpmn
+0
-0
README.md
...ources/static/editor-app/libs/es5-shim-15.3.4.5/README.md
+1
-1
No files found.
pom.xml
View file @
ed1caec6
...
...
@@ -164,7 +164,7 @@
</dependencies>
</dependencyManagement>
<build>
<finalName>
admin
</finalName>
<finalName>
record-demo
</finalName>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
...
...
src/main/java/com/keymobile/rest/activiti/modeler/ModelEditorJsonRestResource.java
View file @
ed1caec6
/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
...
...
@@ -33,39 +33,39 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping
(
"service"
)
public
class
ModelEditorJsonRestResource
implements
ModelDataJsonConstants
{
protected
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
ModelEditorJsonRestResource
.
class
);
@Autowired
private
RepositoryService
repositoryService
;
@Autowired
private
ObjectMapper
objectMapper
;
@RequestMapping
(
value
=
"/model/{modelId}/json"
,
method
=
RequestMethod
.
GET
,
produces
=
"application/json"
)
public
ObjectNode
getEditorJson
(
@PathVariable
String
modelId
)
{
ObjectNode
modelNode
=
null
;
Model
model
=
repositoryService
.
getModel
(
modelId
);
if
(
model
!=
null
)
{
try
{
if
(
StringUtils
.
isNotEmpty
(
model
.
getMetaInfo
()))
{
modelNode
=
(
ObjectNode
)
objectMapper
.
readTree
(
model
.
getMetaInfo
());
}
else
{
modelNode
=
objectMapper
.
createObjectNode
();
modelNode
.
put
(
MODEL_NAME
,
model
.
getName
());
protected
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
ModelEditorJsonRestResource
.
class
);
@Autowired
private
RepositoryService
repositoryService
;
@Autowired
private
ObjectMapper
objectMapper
;
@RequestMapping
(
value
=
"/model/{modelId}/json"
,
method
=
RequestMethod
.
GET
,
produces
=
"application/json"
)
public
ObjectNode
getEditorJson
(
@PathVariable
String
modelId
)
{
ObjectNode
modelNode
=
null
;
Model
model
=
repositoryService
.
getModel
(
modelId
);
if
(
model
!=
null
)
{
try
{
if
(
StringUtils
.
isNotEmpty
(
model
.
getMetaInfo
()))
{
modelNode
=
(
ObjectNode
)
objectMapper
.
readTree
(
model
.
getMetaInfo
());
}
else
{
modelNode
=
objectMapper
.
createObjectNode
();
modelNode
.
put
(
MODEL_NAME
,
model
.
getName
());
}
modelNode
.
put
(
MODEL_ID
,
model
.
getId
());
ObjectNode
editorJsonNode
=
(
ObjectNode
)
objectMapper
.
readTree
(
new
String
(
repositoryService
.
getModelEditorSource
(
model
.
getId
()),
"utf-8"
));
modelNode
.
put
(
"model"
,
editorJsonNode
);
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"Error creating model JSON"
,
e
);
throw
new
ActivitiException
(
"Error creating model JSON"
,
e
);
}
}
modelNode
.
put
(
MODEL_ID
,
model
.
getId
());
ObjectNode
editorJsonNode
=
(
ObjectNode
)
objectMapper
.
readTree
(
new
String
(
repositoryService
.
getModelEditorSource
(
model
.
getId
()),
"utf-8"
));
modelNode
.
put
(
"model"
,
editorJsonNode
);
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"Error creating model JSON"
,
e
);
throw
new
ActivitiException
(
"Error creating model JSON"
,
e
);
}
return
modelNode
;
}
return
modelNode
;
}
}
src/main/java/com/keymobile/rest/activiti/modeler/ModelSaveRestResource.java
View file @
ed1caec6
/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
...
...
@@ -37,52 +37,52 @@ import java.io.InputStream;
@RestController
@RequestMapping
(
"service"
)
public
class
ModelSaveRestResource
implements
ModelDataJsonConstants
{
protected
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
ModelSaveRestResource
.
class
);
@Autowired
private
RepositoryService
repositoryService
;
@Autowired
private
ObjectMapper
objectMapper
;
@RequestMapping
(
value
=
"/model/{modelId}/save"
,
method
=
RequestMethod
.
PUT
)
@ResponseStatus
(
value
=
HttpStatus
.
OK
)
public
void
saveModel
(
@PathVariable
String
modelId
,
String
name
,
String
description
,
String
json_xml
,
String
svg_xml
)
{
try
{
Model
model
=
repositoryService
.
getModel
(
modelId
);
ObjectNode
modelJson
=
(
ObjectNode
)
objectMapper
.
readTree
(
model
.
getMetaInfo
());
modelJson
.
put
(
MODEL_NAME
,
name
);
modelJson
.
put
(
MODEL_DESCRIPTION
,
description
);
model
.
setMetaInfo
(
modelJson
.
toString
());
model
.
setName
(
name
);
repositoryService
.
saveModel
(
model
);
repositoryService
.
addModelEditorSource
(
model
.
getId
(),
json_xml
.
getBytes
(
"utf-8"
));
InputStream
svgStream
=
new
ByteArrayInputStream
(
svg_xml
.
getBytes
(
"utf-8"
));
TranscoderInput
input
=
new
TranscoderInput
(
svgStream
);
PNGTranscoder
transcoder
=
new
PNGTranscoder
();
// Setup output
ByteArrayOutputStream
outStream
=
new
ByteArrayOutputStream
();
TranscoderOutput
output
=
new
TranscoderOutput
(
outStream
);
// Do the transformation
transcoder
.
transcode
(
input
,
output
);
final
byte
[]
result
=
outStream
.
toByteArray
();
repositoryService
.
addModelEditorSourceExtra
(
model
.
getId
(),
result
);
outStream
.
close
();
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"Error saving model"
,
e
);
throw
new
ActivitiException
(
"Error saving model"
,
e
);
protected
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
ModelSaveRestResource
.
class
);
@Autowired
private
RepositoryService
repositoryService
;
@Autowired
private
ObjectMapper
objectMapper
;
@RequestMapping
(
value
=
"/model/{modelId}/save"
,
method
=
RequestMethod
.
PUT
)
@ResponseStatus
(
value
=
HttpStatus
.
OK
)
public
void
saveModel
(
@PathVariable
String
modelId
,
String
name
,
String
description
,
String
json_xml
,
String
svg_xml
)
{
try
{
Model
model
=
repositoryService
.
getModel
(
modelId
);
ObjectNode
modelJson
=
(
ObjectNode
)
objectMapper
.
readTree
(
model
.
getMetaInfo
());
modelJson
.
put
(
MODEL_NAME
,
name
);
modelJson
.
put
(
MODEL_DESCRIPTION
,
description
);
model
.
setMetaInfo
(
modelJson
.
toString
());
model
.
setName
(
name
);
repositoryService
.
saveModel
(
model
);
repositoryService
.
addModelEditorSource
(
model
.
getId
(),
json_xml
.
getBytes
(
"utf-8"
));
InputStream
svgStream
=
new
ByteArrayInputStream
(
svg_xml
.
getBytes
(
"utf-8"
));
TranscoderInput
input
=
new
TranscoderInput
(
svgStream
);
PNGTranscoder
transcoder
=
new
PNGTranscoder
();
// Setup output
ByteArrayOutputStream
outStream
=
new
ByteArrayOutputStream
();
TranscoderOutput
output
=
new
TranscoderOutput
(
outStream
);
// Do the transformation
transcoder
.
transcode
(
input
,
output
);
final
byte
[]
result
=
outStream
.
toByteArray
();
repositoryService
.
addModelEditorSourceExtra
(
model
.
getId
(),
result
);
outStream
.
close
();
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"Error saving model"
,
e
);
throw
new
ActivitiException
(
"Error saving model"
,
e
);
}
}
}
}
src/main/java/com/keymobile/rest/activiti/modeler/StencilsetRestResource.java
View file @
ed1caec6
/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
...
...
@@ -27,15 +27,15 @@ import java.io.InputStream;
@RestController
@RequestMapping
(
"service"
)
public
class
StencilsetRestResource
{
@RequestMapping
(
value
=
"/editor/stencilset"
,
method
=
RequestMethod
.
GET
,
produces
=
"application/json;charset=utf-8"
)
public
@ResponseBody
String
getStencilset
()
{
InputStream
stencilsetStream
=
this
.
getClass
().
getClassLoader
().
getResourceAsStream
(
"static/stencilsetCN.json"
);
try
{
return
IOUtils
.
toString
(
stencilsetStream
,
"gbk"
);
}
catch
(
Exception
e
)
{
throw
new
ActivitiException
(
"Error while loading stencil set"
,
e
);
@RequestMapping
(
value
=
"/editor/stencilset"
,
method
=
RequestMethod
.
GET
,
produces
=
"application/json;charset=utf-8"
)
public
@ResponseBody
String
getStencilset
()
{
InputStream
stencilsetStream
=
this
.
getClass
().
getClassLoader
().
getResourceAsStream
(
"static/stencilsetCN.json"
);
try
{
return
IOUtils
.
toString
(
stencilsetStream
,
"gbk"
);
}
catch
(
Exception
e
)
{
throw
new
ActivitiException
(
"Error while loading stencil set"
,
e
);
}
}
}
}
src/main/java/com/keymobile/rest/common/conf/ActivitiConfig.java
View file @
ed1caec6
...
...
@@ -11,9 +11,9 @@ public class ActivitiConfig implements ProcessEngineConfigurationConfigurer {
processEngineConfiguration
.
setActivityFontName
(
"宋体"
);
processEngineConfiguration
.
setLabelFontName
(
"宋体"
);
processEngineConfiguration
.
setAnnotationFontName
(
"宋体"
);
processEngineConfiguration
.
setDbIdentityUsed
(
false
);
processEngineConfiguration
.
setDatabaseSchemaUpdate
(
"true"
);
}
}
\ No newline at end of file
src/main/java/com/keymobile/rest/common/conf/ExceptionHandlerConfig.java
View file @
ed1caec6
...
...
@@ -32,6 +32,6 @@ public class ExceptionHandlerConfig {
return
ApiResponse
.
fail
(
ApiConstant
.
FAILED_CODE
,
ex
.
getMessage
());
}
logger
.
error
(
"访问出错:"
,
ex
);
return
ApiResponse
.
fail
(
ApiConstant
.
FAILED_CODE
,
"
网络不给力
"
);
return
ApiResponse
.
fail
(
ApiConstant
.
FAILED_CODE
,
"
服务器内部出错
"
);
}
}
src/main/java/com/keymobile/rest/common/conf/SecurityConfig.java
View file @
ed1caec6
...
...
@@ -13,8 +13,8 @@ import org.springframework.security.crypto.password.PasswordEncoder;
import
javax.sql.DataSource
;
@Configuration
@ComponentScan
(
"com.keymobile.auth.common.security"
)
//
@Configuration
//
@ComponentScan("com.keymobile.auth.common.security")
public
class
SecurityConfig
extends
WebSecurityConfigurerAdapter
{
@Autowired
...
...
src/main/java/com/keymobile/rest/common/constant/AssignmentConstant.java
deleted
100644 → 0
View file @
35feaef5
package
com
.
keymobile
.
rest
.
common
.
constant
;
public
interface
AssignmentConstant
{
int
TYPE_AUTO
=
2
;
int
TYPE_MANUAL
=
1
;
int
NEED_AUDIT
=
1
;
int
NO_NEED_AUDIT
=
2
;
// 报送频度 按年 按年 按周 按月 按日 自动推送
int
FREQ_YEAR
=
1
;
int
FREQ_WEEK
=
2
;
int
FREQ_MONTH
=
3
;
int
FREQ_DAY
=
4
;
}
src/main/java/com/keymobile/rest/common/constant/TemplateConstant.java
deleted
100644 → 0
View file @
35feaef5
package
com
.
keymobile
.
rest
.
common
.
constant
;
public
interface
TemplateConstant
{
}
src/main/java/com/keymobile/rest/common/constant/UserConstant.java
deleted
100644 → 0
View file @
35feaef5
package
com
.
keymobile
.
rest
.
common
.
constant
;
public
interface
UserConstant
{
int
ROLE_NORMAL
=
1
;
int
ROLE_AUDIT
=
2
;
int
ROLE_MANAGER
=
3
;
}
src/main/java/com/keymobile/rest/controller/ExcelController.java
View file @
ed1caec6
...
...
@@ -16,7 +16,7 @@ import java.util.List;
@Api
(
value
=
"模板控制器"
)
@RestController
@RequestMapping
(
path
=
"/api
/excel
"
)
@RequestMapping
(
path
=
"/api"
)
public
class
ExcelController
{
// @Autowired
...
...
src/main/java/com/keymobile/rest/controller/SubProcessCtrl.java
0 → 100644
View file @
ed1caec6
package
com
.
keymobile
.
rest
.
controller
;
import
com.keymobile.rest.common.utils.DateUtil
;
import
io.swagger.annotations.ApiOperation
;
import
org.activiti.engine.HistoryService
;
import
org.activiti.engine.RepositoryService
;
import
org.activiti.engine.RuntimeService
;
import
org.activiti.engine.TaskService
;
import
org.activiti.engine.history.HistoricTaskInstance
;
import
org.activiti.engine.repository.Deployment
;
import
org.activiti.engine.repository.DeploymentBuilder
;
import
org.activiti.engine.runtime.ProcessInstance
;
import
org.activiti.engine.task.Comment
;
import
org.activiti.engine.task.Task
;
import
org.apache.commons.lang.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.util.*
;
@RestController
@RequestMapping
(
path
=
"/rest/subprocess"
)
public
class
SubProcessCtrl
{
private
Logger
logger
=
LoggerFactory
.
getLogger
(
SubProcessCtrl
.
class
);
@Autowired
private
RepositoryService
repositoryService
;
@Autowired
private
RuntimeService
runtimeService
;
@Autowired
private
TaskService
taskService
;
@Autowired
private
HistoryService
historyService
;
@ApiOperation
(
value
=
"部署流程"
)
@PostMapping
(
value
=
"/deployment"
)
public
String
deloymentProcess
(
@RequestParam
MultipartFile
file
)
{
String
message
=
null
;
String
fileName
=
file
.
getOriginalFilename
();
try
{
DeploymentBuilder
deployBuilder
=
repositoryService
.
createDeployment
();
if
(
fileName
.
endsWith
(
".bpmn"
))
{
Deployment
deployment
=
deployBuilder
.
addInputStream
(
fileName
,
file
.
getInputStream
()).
deploy
();
logger
.
info
(
deployment
.
getName
());
logger
.
info
(
deployment
.
getId
());
logger
.
info
(
deployment
.
getDeploymentTime
().
toString
());
message
=
"部署流程成功"
;
}
else
{
message
=
"上传文件格式不是bpmn"
;
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
message
=
"部署流程发生未知错误"
;
}
return
message
;
}
@ApiOperation
(
value
=
"发起流程并录入"
)
@PostMapping
(
value
=
"/startProcessAndSubmit"
)
public
String
startProcess
(
@RequestParam
String
processKey
,
@RequestParam
String
inputUser
)
{
StringBuilder
message
=
new
StringBuilder
();
message
.
append
(
""
);
ProcessInstance
pi
=
null
;
try
{
Map
<
String
,
Object
>
variables
=
new
HashMap
<>();
variables
.
put
(
"inputUser"
,
inputUser
);
//启动流程
pi
=
runtimeService
.
startProcessInstanceByKey
(
processKey
,
variables
);
//根据流程实例id和发起流程用户获取当前任务
Task
resultTask
=
taskService
.
createTaskQuery
().
processInstanceId
(
pi
.
getId
()).
taskInvolvedUser
(
inputUser
).
singleResult
();
//直接提交标准到下个节点
taskService
.
claim
(
resultTask
.
getId
(),
inputUser
);
//保存审批意见
taskService
.
addComment
(
resultTask
.
getId
(),
pi
.
getId
(),
""
);
//审批任务
taskService
.
complete
(
resultTask
.
getId
());
logger
.
info
(
"流程启动成功,流程id:"
+
pi
.
getId
()
+
",当前任务id:"
+
resultTask
.
getId
());
message
.
append
(
"流程启动成功,流程id:"
).
append
(
pi
.
getId
());
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
message
.
append
(
"流程启动发生未知错误"
);
}
return
message
.
toString
();
}
@ApiOperation
(
value
=
"获取待办任务列表"
)
@PostMapping
(
value
=
"/getTaskListByUser"
)
public
List
<
Map
<
String
,
Object
>>
getTaskListByUser
(
@RequestParam
String
user
)
{
List
<
Map
<
String
,
Object
>>
result
=
new
ArrayList
<>();
List
<
Task
>
resultTask
=
taskService
.
createTaskQuery
().
taskInvolvedUser
(
user
).
list
();
for
(
Task
task
:
resultTask
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"taskId"
,
task
.
getId
());
map
.
put
(
"name"
,
task
.
getName
());
map
.
put
(
"createTime"
,
DateUtil
.
formatDate
(
task
.
getCreateTime
(),
"yyyy-MM-dd HH:mm:ss"
));
map
.
put
(
"processInstanceId"
,
task
.
getProcessInstanceId
());
result
.
add
(
map
);
}
return
result
;
}
@ApiOperation
(
value
=
"审批任务"
)
@PostMapping
(
value
=
"/completeTask"
)
public
String
completeTask
(
@RequestParam
String
taskId
,
@RequestParam
String
user
,
@RequestParam
(
value
=
"result"
,
required
=
false
)
String
result
,
@RequestParam
(
value
=
"assignees"
,
required
=
false
)
String
assignees
,
@RequestParam
String
processInstanceId
,
@RequestParam
(
value
=
"comment"
,
required
=
false
)
String
comment
,
@RequestParam
(
value
=
"applySign"
,
required
=
false
)
String
applySign
)
{
String
message
=
null
;
try
{
if
(
StringUtils
.
isBlank
(
comment
))
{
comment
=
""
;
}
//根据任务id获取当前任务信息
Task
task
=
taskService
.
createTaskQuery
()
// 创建任务查询
.
taskId
(
taskId
)
// 根据任务id查询
.
singleResult
();
Map
<
String
,
Object
>
vars
=
new
HashMap
<>();
//如果是开始录入环节,需要给出子任务录入人员
if
(
task
.
getTaskDefinitionKey
().
indexOf
(
"startEntry"
)
>=
0
)
{
if
(
StringUtils
.
isNotBlank
(
assignees
))
{
String
[]
commentUsers
=
assignees
.
split
(
","
);
vars
.
put
(
"candiateUserList"
,
Arrays
.
asList
(
commentUsers
));
}
}
//认领任务
taskService
.
setAssignee
(
taskId
,
user
);
//保存审批意见
taskService
.
addComment
(
taskId
,
processInstanceId
,
comment
);
//如果需要动态设置参与者
if
(
task
.
getTaskDefinitionKey
().
indexOf
(
"startEntry"
)
<
0
)
{
if
(
StringUtils
.
isNotBlank
(
assignees
))
{
vars
.
put
(
"inputDataApply"
,
assignees
);
}
}
//如果需要审批结果
if
(
StringUtils
.
isNotBlank
(
result
))
{
vars
.
put
(
"_ACTIVITI_SKIP_EXPRESSION_ENABLED"
,
true
);
vars
.
put
(
"sign"
,
result
);
}
//是否跳过负责人审批环节
if
(
StringUtils
.
isNotBlank
(
applySign
))
{
vars
.
put
(
"_ACTIVITI_SKIP_EXPRESSION_ENABLED"
,
true
);
vars
.
put
(
"applySign"
,
applySign
);
}
taskService
.
complete
(
taskId
,
vars
);
message
=
"审批成功"
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
message
=
"审批失败"
;
}
return
message
;
}
@ApiOperation
(
value
=
"获取审批详情"
)
@PostMapping
(
value
=
"/getTaskDetail"
)
public
List
<
Map
<
String
,
Object
>>
getTaskDetail
(
@RequestParam
String
processInstanceId
)
{
List
<
Map
<
String
,
Object
>>
details
=
new
ArrayList
<>();
List
<
HistoricTaskInstance
>
htiList
=
historyService
.
createHistoricTaskInstanceQuery
()
//历史任务表查询
.
processInstanceId
(
processInstanceId
)
//使用流程实例ID查询
.
orderByTaskCreateTime
().
asc
()
//根据任务创建时间进行排序
.
list
();
for
(
HistoricTaskInstance
hti
:
htiList
)
{
Map
<
String
,
Object
>
detail
=
new
HashMap
<>();
//获取任务id
String
taskId
=
hti
.
getId
();
//根据任务id去comment表获取批注信息
List
<
Comment
>
comments
=
taskService
.
getTaskComments
(
taskId
);
//comment不为空
if
(!
comments
.
isEmpty
())
{
detail
.
put
(
"taskName"
,
hti
.
getName
());
detail
.
put
(
"assignee"
,
hti
.
getAssignee
());
detail
.
put
(
"comment"
,
comments
.
get
(
0
).
getFullMessage
());
detail
.
put
(
"startTime"
,
DateUtil
.
formatDate
(
hti
.
getCreateTime
(),
"yyyy-MM-dd HH:mm:ss"
));
detail
.
put
(
"endTime"
,
DateUtil
.
formatDate
(
hti
.
getEndTime
(),
"yyyy-MM-dd HH:mm:ss"
));
details
.
add
(
detail
);
}
}
return
details
;
}
}
src/main/java/com/keymobile/rest/controller/TaskController.java
View file @
ed1caec6
...
...
@@ -3,8 +3,8 @@ package com.keymobile.rest.controller;
import
com.google.common.collect.ImmutableMap
;
import
com.keymobile.rest.common.bean.ApiResponse
;
import
com.keymobile.rest.common.validator.TwinkleValidator
;
import
com.keymobile.rest.model.Activity
;
import
com.keymobile.rest.model.Template
;
import
com.keymobile.rest.model.Assignment
;
import
com.keymobile.rest.model.ProcessInfo
;
import
com.keymobile.rest.model.User
;
import
com.keymobile.rest.service.TemplateService
;
...
...
@@ -59,7 +59,7 @@ public class TaskController {
@ApiOperation
(
value
=
"获取首页活动列表"
)
@PostMapping
(
value
=
"/list"
)
public
ApiResponse
getTaskList
(
@RequestParam
Integer
pageNo
,
@RequestParam
Integer
pageSize
,
@RequestParam
(
required
=
false
)
@ApiParam
(
name
=
"name"
,
value
=
"活动名称"
)
String
name
)
{
Page
<
A
ssignment
>
taskList
;
Page
<
A
ctivity
>
taskList
;
String
orderBy
=
"descending"
;
//
String
propBy
=
"id"
;
// groupBy
if
(
name
!=
null
)
{
...
...
@@ -73,9 +73,9 @@ public class TaskController {
@ApiOperation
(
value
=
"查看活动"
)
@PostMapping
(
value
=
"/get"
)
public
ApiResponse
get
(
@RequestParam
@ApiParam
(
required
=
true
,
name
=
"taskId"
,
value
=
"活动id"
)
Long
taskId
)
{
A
ssignment
assignment
=
assignmentService
.
get
(
taskId
);
TwinkleValidator
.
notNull
(
a
ssignment
,
"活动不存在"
);
return
ApiResponse
.
ok
(
a
ssignment
);
A
ctivity
activity
=
assignmentService
.
get
(
taskId
);
TwinkleValidator
.
notNull
(
a
ctivity
,
"活动不存在"
);
return
ApiResponse
.
ok
(
a
ctivity
);
}
...
...
@@ -84,7 +84,7 @@ public class TaskController {
public
ApiResponse
getMyTasks
()
{
User
user
=
userService
.
getNormalUser
();
User
audit
=
userService
.
getAudit
();
List
<
A
ssignment
>
assignment
List
=
new
ArrayList
<>();
List
<
A
ctivity
>
activity
List
=
new
ArrayList
<>();
// 获取任务
List
<
Task
>
tasks
=
taskService
.
createNativeTaskQuery
()
.
sql
(
"SELECT * FROM "
+
managementService
.
getTableName
(
Task
.
class
)
+
" T WHERE T.ASSIGNEE_ = #{assignee1} OR T.ASSIGNEE_ = #{assignee2}"
)
...
...
@@ -93,14 +93,14 @@ public class TaskController {
for
(
Task
task
:
tasks
)
{
String
processId
=
task
.
getProcessInstanceId
();
A
ssignment
assignment
=
assignmentService
.
findByProcessId
(
processId
);
A
ctivity
activity
=
assignmentService
.
findByProcessId
(
processId
);
// if (assignment != null && assignment.getStatus() != Assignment.STATUS_COMPLETED) {
if
(
task
.
getTaskDefinitionKey
().
equals
(
"addData"
))
{
if
(
task
.
getTaskDefinitionKey
().
equals
(
"addData"
))
{
// assignment.setKind(Assignment.KIND_RECORD);
}
else
{
}
else
{
// assignment.setKind(Assignment.KIND_AUDIT);
}
assignmentList
.
add
(
assignment
);
}
activityList
.
add
(
activity
);
// }
}
...
...
@@ -117,12 +117,12 @@ public class TaskController {
// 创建人
User
manager
=
userService
.
getManager
();
form
.
setUser
(
manager
);
A
ssignment
assignment
=
assignmentService
.
save
(
form
);
A
ctivity
activity
=
assignmentService
.
save
(
form
);
// 新建excel实例
List
<
ExcelForm
>
excelFormList
=
form
.
getExcels
();
excelFormList
.
forEach
(
excelForm
->
{
TwinkleValidator
.
notEmpty
(
excelForm
.
getUserIds
(),
"补录人不能为空"
);
excelForm
.
setA
ssignment
(
assignment
);
excelForm
.
setA
ctivity
(
activity
);
Template
template
=
templateService
.
save
(
excelForm
);
// 新建补录人员任务关联
String
[]
userIds
=
excelForm
.
getUserIds
().
split
(
","
);
...
...
@@ -133,24 +133,24 @@ public class TaskController {
processInfoService
.
save
(
user
,
template
);
});
});
return
ApiResponse
.
ok
(
a
ssignment
.
getId
());
return
ApiResponse
.
ok
(
a
ctivity
.
getId
());
}
@ApiOperation
(
value
=
"修改活动"
)
@PostMapping
(
value
=
"/update"
)
public
ApiResponse
updateTask
(
@RequestBody
JobForm
form
)
{
TwinkleValidator
.
isFalse
((
form
.
getId
()
==
null
&&
form
.
getId
()
<=
0
),
"活动id不能为空"
);
A
ssignment
assignment
=
assignmentService
.
get
(
form
.
getId
());
TwinkleValidator
.
notNull
(
a
ssignment
,
"活动不存在"
);
A
ctivity
activity
=
assignmentService
.
get
(
form
.
getId
());
TwinkleValidator
.
notNull
(
a
ctivity
,
"活动不存在"
);
// int status = assignment.getStatus();
// TwinkleValidator.isFalse(status != Assignment.STATUS_UNRELEASED, "活动已经发起");
TwinkleValidator
.
notEmpty
(
form
.
getName
(),
"名称不能为空"
);
TwinkleValidator
.
notNull
(
form
.
getType
(),
"类型不能为空"
);
TwinkleValidator
.
isFalse
((
form
.
getExcels
()
==
null
||
form
.
getExcels
().
size
()
==
0
),
"补录模板不能为空"
);
a
ssignment
.
setType
(
form
.
getType
());
a
ssignment
.
setRemark
(
form
.
getRemark
());
a
ssignment
.
setName
(
form
.
getName
());
assignmentService
.
update
(
a
ssignment
);
a
ctivity
.
setType
(
form
.
getType
());
a
ctivity
.
setRemark
(
form
.
getRemark
());
a
ctivity
.
setName
(
form
.
getName
());
assignmentService
.
update
(
a
ctivity
);
// 新建excel实例
List
<
ExcelForm
>
excelFormList
=
form
.
getExcels
();
excelFormList
.
forEach
(
excelForm
->
{
...
...
@@ -162,14 +162,14 @@ public class TaskController {
template
.
setDataAt
(
excelForm
.
getDataAt
());
templateService
.
update
(
template
);
});
return
ApiResponse
.
ok
(
a
ssignment
.
getId
());
return
ApiResponse
.
ok
(
a
ctivity
.
getId
());
}
@ApiOperation
(
value
=
"手动发起活动"
)
@PostMapping
(
value
=
"/start"
)
public
ApiResponse
startTask
(
@RequestParam
Long
taskId
)
{
A
ssignment
assignment
=
assignmentService
.
get
(
taskId
);
TwinkleValidator
.
notNull
(
a
ssignment
,
"活动不存在"
);
A
ctivity
activity
=
assignmentService
.
get
(
taskId
);
TwinkleValidator
.
notNull
(
a
ctivity
,
"活动不存在"
);
// 部署补录流程
Deployment
deploy
=
repositoryService
.
createDeployment
()
...
...
@@ -180,19 +180,19 @@ public class TaskController {
createProcessDefinitionQuery
().
deploymentId
(
deploy
.
getId
()).
singleResult
();
String
inputUser
=
a
ssignment
.
getUser
().
getUsername
();
String
inputUser
=
a
ctivity
.
getUser
().
getUsername
();
Map
<
String
,
Object
>
variables
=
new
HashMap
<>();
variables
.
put
(
"managerId"
,
inputUser
);
//启动流程
ProcessInstance
processInstance
=
runtimeService
.
startProcessInstanceByKey
(
processDefinition
.
getKey
(),
variables
);
// assignment.setProcessId(processInstance.getId());
assignmentService
.
update
(
a
ssignment
);
assignmentService
.
update
(
a
ctivity
);
// 发起人把流程发送到下一个人
Task
resultTask
=
taskService
.
createTaskQuery
().
processInstanceId
(
processInstance
.
getId
()).
taskInvolvedUser
(
inputUser
).
singleResult
();
// 根据活动查找需要填写的人 目前只支持一人
List
<
Template
>
templateList
=
a
ssignment
.
getTemplateList
();
List
<
Template
>
templateList
=
a
ctivity
.
getTemplateList
();
TwinkleValidator
.
notLessThan
(
templateList
.
size
(),
1
,
"补录模板不存在"
);
Template
template
=
templateList
.
get
(
0
);
...
...
@@ -206,7 +206,7 @@ public class TaskController {
@ApiOperation
(
value
=
"审核通过活动"
)
@PostMapping
(
value
=
"/pass"
)
public
ApiResponse
passTask
(
@RequestParam
Long
taskId
)
{
A
ssignment
assignment
=
assignmentService
.
get
(
taskId
);
A
ctivity
activity
=
assignmentService
.
get
(
taskId
);
// 完结活动, 流程跑完
User
judge
=
userService
.
getAudit
();
// List<Task> taskList = taskService.createTaskQuery().processInstanceId(assignment.getProcessId())
...
...
@@ -215,7 +215,7 @@ public class TaskController {
// Task task = taskList.get(0);
// taskService.complete(task.getId(), ImmutableMap.of("pass", "true"));
// assignment.setStatus(Assignment.STATUS_COMPLETED);
assignmentService
.
update
(
a
ssignment
);
assignmentService
.
update
(
a
ctivity
);
return
ApiResponse
.
ok
();
}
...
...
@@ -223,7 +223,7 @@ public class TaskController {
@ApiOperation
(
value
=
"审核驳回活动"
)
@PostMapping
(
value
=
"/reject"
)
public
ApiResponse
rejectTask
(
@RequestParam
Long
taskId
)
{
A
ssignment
assignment
=
assignmentService
.
get
(
taskId
);
A
ctivity
activity
=
assignmentService
.
get
(
taskId
);
// 完结活动, 流程跑完
User
judge
=
userService
.
getAudit
();
// List<Task> taskList = taskService.createTaskQuery().processInstanceId(assignment.getProcessId())
...
...
src/main/java/com/keymobile/rest/controller/UserController.java
View file @
ed1caec6
package
com
.
keymobile
.
rest
.
controller
;
import
com.keymobile.rest.common.bean.ApiResponse
;
import
com.keymobile.rest.common.constant.UserConstant
;
import
com.keymobile.rest.model.*
;
import
com.keymobile.rest.service.*
;
import
io.swagger.annotations.Api
;
...
...
@@ -13,7 +12,7 @@ import java.util.*;
@Api
(
value
=
"用户控制器"
)
@RestController
@RequestMapping
(
path
=
"/api
/user
"
)
@RequestMapping
(
path
=
"/api"
)
public
class
UserController
{
@Autowired
private
UserService
userService
;
...
...
@@ -22,8 +21,8 @@ public class UserController {
@ApiOperation
(
value
=
"获取补录人员列表"
)
@PostMapping
(
value
=
"/user/list"
)
public
ApiResponse
getUserList
()
{
List
<
User
>
userList
=
userService
.
findAllByRole
(
UserConstant
.
ROLE_NORMAL
);
return
ApiResponse
.
ok
(
userList
);
//
List<User> userList = userService.findAllByRole(UserConstant.ROLE_NORMAL);
return
ApiResponse
.
ok
();
}
...
...
src/main/java/com/keymobile/rest/dao/AssignmentDao.java
View file @
ed1caec6
package
com
.
keymobile
.
rest
.
dao
;
import
com.keymobile.rest.model.A
ssignment
;
import
com.keymobile.rest.model.A
ctivity
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.jpa.repository.JpaRepository
;
public
interface
AssignmentDao
extends
JpaRepository
<
A
ssignment
,
Long
>
{
public
interface
AssignmentDao
extends
JpaRepository
<
A
ctivity
,
Long
>
{
Page
<
A
ssignment
>
findAll
(
Pageable
pageable
);
Page
<
A
ctivity
>
findAll
(
Pageable
pageable
);
Page
<
A
ssignment
>
findAllByNameLike
(
String
valueOf
,
Pageable
pageable
);
Page
<
A
ctivity
>
findAllByNameLike
(
String
valueOf
,
Pageable
pageable
);
}
src/main/java/com/keymobile/rest/model/A
ssignment
.java
→
src/main/java/com/keymobile/rest/model/A
ctivity
.java
View file @
ed1caec6
...
...
@@ -19,7 +19,19 @@ import java.util.List;
@NoArgsConstructor
@Data
@Entity
public
class
Assignment
implements
Serializable
{
public
class
Activity
implements
Serializable
{
static
int
TYPE_AUTO
=
2
;
static
int
TYPE_MANUAL
=
1
;
static
int
NEED_AUDIT
=
1
;
static
int
NO_NEED_AUDIT
=
2
;
// 报送频度 按年 按年 按周 按月 按日 自动推送
static
int
FREQ_YEAR
=
1
;
static
int
FREQ_WEEK
=
2
;
static
int
FREQ_MONTH
=
3
;
static
int
FREQ_DAY
=
4
;
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
...
...
src/main/java/com/keymobile/rest/model/Group.java
0 → 100644
View file @
ed1caec6
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 包含一些活动的定义以及绑定一些spreadJs生成的excel模板
*/
@JsonIgnoreProperties
(
value
=
{
"hibernateLazyInitializer"
,
"handler"
,
"fieldHandler"
})
@NoArgsConstructor
@Data
@Entity
public
class
Group
implements
Serializable
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
long
id
;
@Column
private
String
name
;
@Column
private
long
pid
;
}
src/main/java/com/keymobile/rest/model/Process.java
View file @
ed1caec6
...
...
@@ -31,5 +31,5 @@ public class Process implements Serializable {
@ManyToOne
(
fetch
=
FetchType
.
LAZY
)
@JsonIgnore
private
A
ssignment
assignment
;
private
A
ctivity
activity
;
}
src/main/java/com/keymobile/rest/model/Template.java
View file @
ed1caec6
...
...
@@ -41,5 +41,5 @@ public class Template implements Serializable {
@ManyToOne
(
fetch
=
FetchType
.
LAZY
)
@JsonIgnore
private
A
ssignment
assignment
;
private
A
ctivity
activity
;
}
src/main/java/com/keymobile/rest/model/User.java
View file @
ed1caec6
...
...
@@ -13,6 +13,10 @@ import java.io.Serializable;
@Entity
public
class
User
implements
Serializable
{
int
ROLE_NORMAL
=
1
;
int
ROLE_AUDIT
=
2
;
int
ROLE_MANAGER
=
3
;
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
long
id
;
...
...
@@ -26,4 +30,6 @@ public class User implements Serializable {
@Column
private
int
role
;
@
}
src/main/java/com/keymobile/rest/service/AssignmentService.java
View file @
ed1caec6
package
com
.
keymobile
.
rest
.
service
;
import
com.keymobile.rest.common.constant.AssignmentConstant
;
import
com.keymobile.rest.common.utils.DateUtil
;
import
com.keymobile.rest.dao.AssignmentDao
;
import
com.keymobile.rest.model.A
ssignment
;
import
com.keymobile.rest.model.A
ctivity
;
import
com.keymobile.rest.vo.JobForm
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Page
;
...
...
@@ -13,7 +12,6 @@ import org.springframework.data.domain.Sort;
import
org.springframework.stereotype.Service
;
import
java.sql.Timestamp
;
import
java.time.LocalDateTime
;
@Service
public
class
AssignmentService
{
...
...
@@ -21,53 +19,53 @@ public class AssignmentService {
@Autowired
private
AssignmentDao
assignmentDao
;
public
A
ssignment
get
(
long
id
)
{
public
A
ctivity
get
(
long
id
)
{
return
assignmentDao
.
getOne
(
id
);
}
public
A
ssignment
update
(
Assignment
assignment
)
{
return
assignmentDao
.
save
(
a
ssignment
);
public
A
ctivity
update
(
Activity
activity
)
{
return
assignmentDao
.
save
(
a
ctivity
);
}
public
A
ssignment
save
(
Assignment
assignment
)
{
return
assignmentDao
.
save
(
a
ssignment
);
public
A
ctivity
save
(
Activity
activity
)
{
return
assignmentDao
.
save
(
a
ctivity
);
}
public
A
ssignment
save
(
JobForm
form
)
{
A
ssignment
assignment
=
new
Assignment
();
public
A
ctivity
save
(
JobForm
form
)
{
A
ctivity
activity
=
new
Activity
();
Timestamp
now
=
Timestamp
.
valueOf
(
DateUtil
.
getDateTime
());
a
ssignment
.
setCreateAt
(
now
);
a
ssignment
.
setNeedAudit
(
AssignmentConstant
.
NEED_AUDIT
);
a
ssignment
.
setName
(
form
.
getName
());
a
ssignment
.
setType
(
form
.
getType
());
a
ctivity
.
setCreateAt
(
now
);
a
ctivity
.
setNeedAudit
(
AssignmentConstant
.
NEED_AUDIT
);
a
ctivity
.
setName
(
form
.
getName
());
a
ctivity
.
setType
(
form
.
getType
());
if
(
form
.
getType
()
==
AssignmentConstant
.
TYPE_AUTO
)
{
}
a
ssignment
.
setUser
(
form
.
getUser
());
a
ssignment
=
assignmentDao
.
save
(
assignment
);
return
a
ssignment
;
a
ctivity
.
setUser
(
form
.
getUser
());
a
ctivity
=
assignmentDao
.
save
(
activity
);
return
a
ctivity
;
}
public
A
ssignment
findByProcessId
(
String
pid
)
{
public
A
ctivity
findByProcessId
(
String
pid
)
{
return
null
;
}
public
Page
<
A
ssignment
>
findAll
(
int
pageNo
,
int
pageSize
)
{
public
Page
<
A
ctivity
>
findAll
(
int
pageNo
,
int
pageSize
)
{
Pageable
pageable
=
convert
(
pageNo
,
pageSize
);
return
assignmentDao
.
findAll
(
pageable
);
}
public
Page
<
A
ssignment
>
findAllByName
(
String
name
,
int
pageNo
,
int
pageSize
)
{
public
Page
<
A
ctivity
>
findAllByName
(
String
name
,
int
pageNo
,
int
pageSize
)
{
Pageable
pageable
=
convert
(
pageNo
,
pageSize
);
return
assignmentDao
.
findAllByNameLike
((
"%"
+
name
+
"%"
),
pageable
);
}
public
Page
<
A
ssignment
>
findAll
(
int
pageNo
,
int
pageSize
,
String
orderBy
,
String
propBy
)
{
public
Page
<
A
ctivity
>
findAll
(
int
pageNo
,
int
pageSize
,
String
orderBy
,
String
propBy
)
{
Pageable
pageable
=
convert
(
pageNo
,
pageSize
,
orderBy
,
propBy
);
return
assignmentDao
.
findAll
(
pageable
);
}
public
Page
<
A
ssignment
>
findAllByName
(
String
name
,
int
pageNo
,
int
pageSize
,
String
orderBy
,
String
propBy
)
{
public
Page
<
A
ctivity
>
findAllByName
(
String
name
,
int
pageNo
,
int
pageSize
,
String
orderBy
,
String
propBy
)
{
Pageable
pageable
=
convert
(
pageNo
,
pageSize
,
orderBy
,
propBy
);
return
assignmentDao
.
findAllByNameLike
((
"%"
+
name
+
"%"
),
pageable
);
}
...
...
src/main/java/com/keymobile/rest/service/TemplateService.java
View file @
ed1caec6
...
...
@@ -22,7 +22,7 @@ public class TemplateService {
template
.
setDataAt
(
1
);
template
.
setConfig
(
form
.
getConfig
());
template
.
setRemark
(
form
.
getRemark
());
template
.
setA
ssignment
(
form
.
getAssignment
());
template
.
setA
ctivity
(
form
.
getActivity
());
Timestamp
now
=
Timestamp
.
valueOf
(
DateUtil
.
getDateTime
());
template
.
setCreateAt
(
now
);
template
=
templateDao
.
save
(
template
);
...
...
src/main/java/com/keymobile/rest/service/UserService.java
View file @
ed1caec6
package
com
.
keymobile
.
rest
.
service
;
import
com.keymobile.rest.common.constant.UserConstant
;
import
com.keymobile.rest.dao.UserDao
;
import
com.keymobile.rest.model.User
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
src/main/java/com/keymobile/rest/vo/ExcelForm.java
View file @
ed1caec6
package
com
.
keymobile
.
rest
.
vo
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.keymobile.rest.model.A
ssignment
;
import
com.keymobile.rest.model.A
ctivity
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
...
...
@@ -34,5 +34,5 @@ public class ExcelForm {
private
Integer
dataAt
;
@JsonIgnore
private
A
ssignment
assignment
;
private
A
ctivity
activity
;
}
src/main/resources/MoreSubProcessTest.bpmn
0 → 100644
View file @
ed1caec6
This diff is collapsed.
Click to expand it.
src/main/resources/static/editor-app/libs/es5-shim-15.3.4.5/README.md
View file @
ed1caec6
...
...
@@ -61,7 +61,7 @@ So in order to run the tests against the built-in methods, invalidate that file
fine across legacy engines.
/!\ Object.create(null) will work only in browsers that
support prototype a
ssignment
. This creates an object
support prototype a
ctivity
. This creates an object
that does not have any properties inherited from
Object.prototype. It will silently fail otherwise.
...
...
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