Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
datax-cloud
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
黄营
datax-cloud
Commits
c039e7e6
Commit
c039e7e6
authored
Sep 16, 2020
by
yuwei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
项目初始化
parent
a52c139f
Show whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
208 additions
and
78 deletions
+208
-78
DataConstant.java
...core/src/main/java/cn/datax/common/core/DataConstant.java
+10
-27
datax-service-data-market-dev.yml
...c/main/resources/config/datax-service-data-market-dev.yml
+5
-0
RabbitMqListenerConfig.java
...ce/data/market/mapping/config/RabbitMqListenerConfig.java
+8
-0
DataApiServiceImpl.java
.../service/data/market/service/impl/DataApiServiceImpl.java
+30
-2
ProcessInstanceCreateRequest.java
...ervice/workflow/api/dto/ProcessInstanceCreateRequest.java
+2
-2
ActionEnum.java
.../java/cn/datax/service/workflow/api/enums/ActionEnum.java
+1
-1
VariablesEnum.java
...va/cn/datax/service/workflow/api/enums/VariablesEnum.java
+4
-4
FlowInstanceQuery.java
...n/datax/service/workflow/api/query/FlowInstanceQuery.java
+1
-1
FlowTaskQuery.java
...va/cn/datax/service/workflow/api/query/FlowTaskQuery.java
+1
-1
FlowHistTaskVo.java
...java/cn/datax/service/workflow/api/vo/FlowHistTaskVo.java
+2
-2
FlowTaskVo.java
...ain/java/cn/datax/service/workflow/api/vo/FlowTaskVo.java
+6
-2
FlowInstanceController.java
...x/service/workflow/controller/FlowInstanceController.java
+3
-3
FlowTaskController.java
...datax/service/workflow/controller/FlowTaskController.java
+11
-11
EndTaskListener.java
...a/cn/datax/service/workflow/flowable/EndTaskListener.java
+17
-1
FinalAuditCreateTaskListener.java
...rvice/workflow/flowable/FinalAuditCreateTaskListener.java
+2
-1
InitialAuditCompleteTaskListener.java
...e/workflow/flowable/InitialAuditCompleteTaskListener.java
+34
-0
InitialAuditCreateTaskListener.java
...ice/workflow/flowable/InitialAuditCreateTaskListener.java
+2
-1
SubmitCompleteTaskListener.java
...service/workflow/flowable/SubmitCompleteTaskListener.java
+29
-0
FlowInstanceService.java
...n/datax/service/workflow/service/FlowInstanceService.java
+2
-1
FlowInstanceServiceImpl.java
...ervice/workflow/service/impl/FlowInstanceServiceImpl.java
+29
-12
FlowTaskServiceImpl.java
...ax/service/workflow/service/impl/FlowTaskServiceImpl.java
+9
-6
No files found.
datax-common/datax-common-core/src/main/java/cn/datax/common/core/DataConstant.java
View file @
c039e7e6
...
...
@@ -16,6 +16,7 @@ public class DataConstant {
TOKENTYPE
(
"bearer "
),
//security授权角色前缀
ROLEPREFIX
(
"ROLE_"
);
Security
(
String
val
){
this
.
val
=
val
;
}
...
...
@@ -33,6 +34,7 @@ public class DataConstant {
public
enum
TrueOrFalse
{
FALSE
(
"0"
,
false
),
TRUE
(
"1"
,
true
);
TrueOrFalse
(
String
key
,
boolean
val
){
this
.
key
=
key
;
this
.
val
=
val
;
...
...
@@ -62,6 +64,7 @@ public class DataConstant {
DEPT
(
"user_dept"
,
"用户部门"
),
ROLE
(
"user_role"
,
"用户角色"
),
POST
(
"user_post"
,
"用户岗位"
);
UserAdditionalInfo
(
String
key
,
String
val
){
this
.
key
=
key
;
this
.
val
=
val
;
...
...
@@ -85,6 +88,7 @@ public class DataConstant {
public
enum
EnableState
{
DISABLE
(
"0"
,
"禁用"
),
ENABLE
(
"1"
,
"启用"
);
EnableState
(
String
key
,
String
val
){
this
.
key
=
key
;
this
.
val
=
val
;
...
...
@@ -107,34 +111,13 @@ public class DataConstant {
*/
public
enum
AuditState
{
WAIT
(
"1"
,
"待提交"
),
AUDIT
(
"2"
,
"审核中"
),
AGREE
(
"3"
,
"成功"
),
REJECT
(
"4"
,
"失败"
),
CANCEL
(
"5"
,
"已撤销"
);
AuditState
(
String
key
,
String
val
){
this
.
key
=
key
;
this
.
val
=
val
;
}
private
final
String
key
;
private
final
String
val
;
BACK
(
"2"
,
"已退回"
),
AUDIT
(
"3"
,
"审核中"
),
AGREE
(
"4"
,
"通过"
),
REJECT
(
"5"
,
"不通过"
),
CANCEL
(
"6"
,
"已撤销"
);
public
String
getKey
()
{
return
key
;
}
public
String
getVal
()
{
return
val
;
}
}
/**
* 流程审批状态
*/
public
enum
ApproveState
{
REJECT
(
"0"
,
"不通过"
),
AGREE
(
"1"
,
"通过"
);
ApproveState
(
String
key
,
String
val
){
AuditState
(
String
key
,
String
val
){
this
.
key
=
key
;
this
.
val
=
val
;
}
...
...
datax-config/src/main/resources/config/datax-service-data-market-dev.yml
View file @
c039e7e6
...
...
@@ -17,6 +17,11 @@ spring:
port
:
5672
username
:
admin
password
:
1234@abcd
publisher-confrems
:
true
publisher-returns
:
true
listener
:
simple
:
acknowledge-mode
:
manual
datasource
:
dynamic
:
primary
:
mysql
...
...
datax-modules/data-market-service-parent/data-market-service-mapping/src/main/java/cn/datax/service/data/market/mapping/config/RabbitMqListenerConfig.java
View file @
c039e7e6
...
...
@@ -30,8 +30,12 @@ public class RabbitMqListenerConfig {
try
{
log
.
info
(
"fanoutQueueRelease接收到了:{}"
,
id
);
queueHandlerService
.
handlerRelease
(
id
);
// 手动确认
channel
.
basicAck
(
message
.
getMessageProperties
().
getDeliveryTag
(),
true
);
}
catch
(
Exception
e
){
log
.
error
(
"全局异常信息ex={}, StackTrace={}"
,
e
.
getMessage
(),
ThrowableUtil
.
getStackTrace
(
e
));
// 拒绝策略
channel
.
basicReject
(
message
.
getMessageProperties
().
getDeliveryTag
(),
false
);
}
}
...
...
@@ -45,8 +49,12 @@ public class RabbitMqListenerConfig {
try
{
log
.
info
(
"fanoutQueueCancel接收到了:{}"
,
id
);
queueHandlerService
.
handlerCancel
(
id
);
// 手动确认
channel
.
basicAck
(
message
.
getMessageProperties
().
getDeliveryTag
(),
true
);
}
catch
(
Exception
e
){
log
.
error
(
"全局异常信息ex={}, StackTrace={}"
,
e
.
getMessage
(),
ThrowableUtil
.
getStackTrace
(
e
));
// 拒绝策略
channel
.
basicReject
(
message
.
getMessageProperties
().
getDeliveryTag
(),
false
);
}
}
}
datax-modules/data-market-service-parent/data-market-service/src/main/java/cn/datax/service/data/market/service/impl/DataApiServiceImpl.java
View file @
c039e7e6
...
...
@@ -363,20 +363,48 @@ public class DataApiServiceImpl extends BaseServiceImpl<DataApiDao, DataApiEntit
@Override
public
void
releaseDataApi
(
String
id
)
{
rabbitTemplate
.
convertAndSend
(
RabbitMqConstant
.
FANOUT_EXCHANGE_API_RELEASE_NAME
,
""
,
id
);
// 消息是否成功发送到Exchange
rabbitTemplate
.
setConfirmCallback
((
correlationData
,
ack
,
cause
)
->
{
if
(
ack
)
{
log
.
info
(
"消息成功发送到Exchange"
);
DataApiEntity
dataApiEntity
=
new
DataApiEntity
();
dataApiEntity
.
setId
(
id
);
dataApiEntity
.
setStatus
(
DataConstant
.
ApiState
.
RELEASE
.
getKey
());
dataApiDao
.
updateById
(
dataApiEntity
);
}
else
{
log
.
error
(
"消息发送到Exchange失败, {}, cause: {}"
,
correlationData
,
cause
);
}
});
// 触发setReturnCallback回调必须设置mandatory=true, 否则Exchange没有找到Queue就会丢弃掉消息, 而不会触发回调
rabbitTemplate
.
setMandatory
(
true
);
// 消息是否从Exchange路由到Queue, 注意: 这是一个失败回调, 只有消息从Exchange路由到Queue失败才会回调这个方法
rabbitTemplate
.
setReturnCallback
((
message
,
replyCode
,
replyText
,
exchange
,
routingKey
)
->
{
log
.
error
(
"消息从Exchange路由到Queue失败: exchange: {}, route: {}, replyCode: {}, replyText: {}, message: {}"
,
exchange
,
routingKey
,
replyCode
,
replyText
,
message
);
});
rabbitTemplate
.
convertAndSend
(
RabbitMqConstant
.
FANOUT_EXCHANGE_API_RELEASE_NAME
,
""
,
id
);
}
@Override
public
void
cancelDataApi
(
String
id
)
{
rabbitTemplate
.
convertAndSend
(
RabbitMqConstant
.
FANOUT_EXCHANGE_API_CANCEL_NAME
,
""
,
id
);
// 消息是否成功发送到Exchange
rabbitTemplate
.
setConfirmCallback
((
correlationData
,
ack
,
cause
)
->
{
if
(
ack
)
{
log
.
info
(
"消息成功发送到Exchange"
);
DataApiEntity
dataApiEntity
=
new
DataApiEntity
();
dataApiEntity
.
setId
(
id
);
dataApiEntity
.
setStatus
(
DataConstant
.
ApiState
.
CANCEL
.
getKey
());
dataApiDao
.
updateById
(
dataApiEntity
);
}
else
{
log
.
error
(
"消息发送到Exchange失败, {}, cause: {}"
,
correlationData
,
cause
);
}
});
// 触发setReturnCallback回调必须设置mandatory=true, 否则Exchange没有找到Queue就会丢弃掉消息, 而不会触发回调
rabbitTemplate
.
setMandatory
(
true
);
// 消息是否从Exchange路由到Queue, 注意: 这是一个失败回调, 只有消息从Exchange路由到Queue失败才会回调这个方法
rabbitTemplate
.
setReturnCallback
((
message
,
replyCode
,
replyText
,
exchange
,
routingKey
)
->
{
log
.
error
(
"消息从Exchange路由到Queue失败: exchange: {}, route: {}, replyCode: {}, replyText: {}, message: {}"
,
exchange
,
routingKey
,
replyCode
,
replyText
,
message
);
});
rabbitTemplate
.
convertAndSend
(
RabbitMqConstant
.
FANOUT_EXCHANGE_API_CANCEL_NAME
,
""
,
id
);
}
@Override
...
...
datax-modules/workflow-service-parent/workflow-service-api/src/main/java/cn/datax/service/workflow/api/dto/ProcessInstanceCreateRequest.java
View file @
c039e7e6
...
...
@@ -22,7 +22,7 @@ public class ProcessInstanceCreateRequest implements Serializable {
@ApiModelProperty
(
value
=
"业务ID"
)
private
String
businessKey
;
@ApiModelProperty
(
value
=
"业务类型"
)
private
String
business
Typ
e
;
private
String
business
Cod
e
;
@ApiModelProperty
(
value
=
"业务名称"
)
private
String
businessName
;
@ApiModelProperty
(
value
=
"流程参数"
)
...
...
@@ -31,7 +31,7 @@ public class ProcessInstanceCreateRequest implements Serializable {
public
Map
<
String
,
Object
>
getVariables
()
{
variables
.
put
(
VariablesEnum
.
submitter
.
toString
(),
submitter
);
variables
.
put
(
VariablesEnum
.
businessKey
.
toString
(),
businessKey
);
variables
.
put
(
VariablesEnum
.
business
Type
.
toString
(),
businessTyp
e
);
variables
.
put
(
VariablesEnum
.
business
Code
.
toString
(),
businessCod
e
);
variables
.
put
(
VariablesEnum
.
businessName
.
toString
(),
businessName
);
return
variables
;
}
...
...
datax-modules/workflow-service-parent/workflow-service-api/src/main/java/cn/datax/service/workflow/api/enums/ActionEnum.java
View file @
c039e7e6
...
...
@@ -10,7 +10,7 @@ import lombok.Getter;
@AllArgsConstructor
public
enum
ActionEnum
{
COMPLETE
(
"complete"
,
"
完成任务
"
),
COMPLETE
(
"complete"
,
"
任务完成
"
),
CLAIM
(
"claim"
,
"任务签收"
),
UNCLAIM
(
"unclaim"
,
"任务反签收"
),
DELEGATE
(
"delegate"
,
"任务委派"
),
...
...
datax-modules/workflow-service-parent/workflow-service-api/src/main/java/cn/datax/service/workflow/api/enums/VariablesEnum.java
View file @
c039e7e6
...
...
@@ -26,13 +26,13 @@ public enum VariablesEnum {
/** 失败结束节点 */
rejectEnd
,
/**
活动
主题 */
/**
业务
主题 */
businessName
,
/**
活动
类型 */
business
Typ
e
,
/**
业务
类型 */
business
Cod
e
,
/**
主键id
*/
/**
业务主键
*/
businessKey
,
/** 审核结果 */
...
...
datax-modules/workflow-service-parent/workflow-service-api/src/main/java/cn/datax/service/workflow/api/query/FlowInstanceQuery.java
View file @
c039e7e6
...
...
@@ -12,6 +12,6 @@ public class FlowInstanceQuery extends BaseQueryParams {
private
String
name
;
private
String
businessKey
;
private
String
business
Typ
e
;
private
String
business
Cod
e
;
private
String
businessName
;
}
datax-modules/workflow-service-parent/workflow-service-api/src/main/java/cn/datax/service/workflow/api/query/FlowTaskQuery.java
View file @
c039e7e6
...
...
@@ -17,7 +17,7 @@ public class FlowTaskQuery extends BaseQueryParams {
private
List
<
String
>
groupIds
;
private
String
name
;
private
String
businessKey
;
private
String
business
Typ
e
;
private
String
business
Cod
e
;
private
String
businessName
;
private
String
taskDefinitionKey
;
private
String
processInstanceId
;
...
...
datax-modules/workflow-service-parent/workflow-service-api/src/main/java/cn/datax/service/workflow/api/vo/FlowHistTaskVo.java
View file @
c039e7e6
...
...
@@ -52,7 +52,7 @@ public class FlowHistTaskVo implements Serializable {
* 业务相关
*/
private
String
businessKey
;
private
String
business
Typ
e
;
private
String
business
Cod
e
;
private
String
businessName
;
private
Map
<
String
,
Object
>
variables
;
...
...
@@ -61,7 +61,7 @@ public class FlowHistTaskVo implements Serializable {
if
(
null
!=
variables
){
//放入业务常量
this
.
businessKey
=
(
String
)
variables
.
get
(
VariablesEnum
.
businessKey
.
toString
());
this
.
business
Type
=
(
String
)
variables
.
get
(
VariablesEnum
.
businessTyp
e
.
toString
());
this
.
business
Code
=
(
String
)
variables
.
get
(
VariablesEnum
.
businessCod
e
.
toString
());
this
.
businessName
=
(
String
)
variables
.
get
(
VariablesEnum
.
businessName
.
toString
());
}
}
...
...
datax-modules/workflow-service-parent/workflow-service-api/src/main/java/cn/datax/service/workflow/api/vo/FlowTaskVo.java
View file @
c039e7e6
...
...
@@ -53,10 +53,14 @@ public class FlowTaskVo implements Serializable {
private
Boolean
isUpdated
;
private
Boolean
isDeleted
;
/**
* 是否委派任务
*/
private
Boolean
isDelegation
;
/**
* 业务相关
*/
private
String
businessKey
;
private
String
business
Typ
e
;
private
String
business
Cod
e
;
private
String
businessName
;
private
Map
<
String
,
Object
>
variables
;
...
...
@@ -65,7 +69,7 @@ public class FlowTaskVo implements Serializable {
if
(
null
!=
variables
){
//放入业务常量
this
.
businessKey
=
(
String
)
variables
.
get
(
VariablesEnum
.
businessKey
.
toString
());
this
.
business
Type
=
(
String
)
variables
.
get
(
VariablesEnum
.
businessTyp
e
.
toString
());
this
.
business
Code
=
(
String
)
variables
.
get
(
VariablesEnum
.
businessCod
e
.
toString
());
this
.
businessName
=
(
String
)
variables
.
get
(
VariablesEnum
.
businessName
.
toString
());
}
}
...
...
datax-modules/workflow-service-parent/workflow-service/src/main/java/cn/datax/service/workflow/controller/FlowInstanceController.java
View file @
c039e7e6
...
...
@@ -29,9 +29,9 @@ public class FlowInstanceController extends BaseController {
@PostMapping
(
"/startById"
)
@ApiOperation
(
value
=
"启动通过流程定义ID流程实例"
)
@ApiImplicitParam
(
name
=
"request"
,
value
=
"启动流程实例实体request"
,
required
=
true
,
dataType
=
"ProcessInstanceCreateRequest"
)
public
R
startById
(
@RequestBody
ProcessInstanceCreateRequest
request
)
{
flowInstanceService
.
startProcessInstanceById
(
request
);
return
R
.
ok
()
;
public
FlowInstanceVo
startById
(
@RequestBody
ProcessInstanceCreateRequest
request
)
{
FlowInstanceVo
flowInstanceVo
=
flowInstanceService
.
startProcessInstanceById
(
request
);
return
flowInstanceVo
;
}
@ApiOperation
(
value
=
"分页查询"
)
...
...
datax-modules/workflow-service-parent/workflow-service/src/main/java/cn/datax/service/workflow/controller/FlowTaskController.java
View file @
c039e7e6
...
...
@@ -24,6 +24,17 @@ public class FlowTaskController extends BaseController {
@Autowired
private
FlowTaskService
flowTaskService
;
@ApiOperation
(
value
=
"执行任务"
,
notes
=
"执行任务类型:claim签收 unclaim反签收 complete完成 delegate任务委派 resolve任务归还 assignee任务转办"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"taskId"
,
value
=
"任务ID"
,
required
=
true
,
dataType
=
"String"
,
paramType
=
"path"
),
@ApiImplicitParam
(
name
=
"request"
,
value
=
"执行任务实体request"
,
required
=
true
,
dataType
=
"TaskRequest"
)
})
@PostMapping
(
value
=
"/execute/{taskId}"
)
public
R
executeTask
(
@PathVariable
String
taskId
,
@RequestBody
TaskRequest
request
)
{
flowTaskService
.
execute
(
request
);
return
R
.
ok
();
}
@ApiOperation
(
value
=
"分页查询待办任务"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"flowTaskQuery"
,
value
=
"查询实体flowTaskQuery"
,
required
=
true
,
dataTypeClass
=
FlowTaskQuery
.
class
)
...
...
@@ -45,15 +56,4 @@ public class FlowTaskController extends BaseController {
JsonPage
<
FlowHistTaskVo
>
jsonPage
=
new
JsonPage
<>(
page
.
getCurrent
(),
page
.
getSize
(),
page
.
getTotal
(),
page
.
getRecords
());
return
R
.
ok
().
setData
(
jsonPage
);
}
@ApiOperation
(
value
=
"执行任务"
,
notes
=
"执行任务类型:claim签收 unclaim反签收 complete完成 delegate任务委派 resolve任务归还 assignee任务转办"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"taskId"
,
value
=
"任务ID"
,
required
=
true
,
dataType
=
"String"
,
paramType
=
"path"
),
@ApiImplicitParam
(
name
=
"request"
,
value
=
"执行任务实体request"
,
required
=
true
,
dataType
=
"TaskRequest"
)
})
@PostMapping
(
value
=
"/execute/{taskId}"
)
public
R
executeTask
(
@PathVariable
String
taskId
,
@RequestBody
TaskRequest
request
)
{
flowTaskService
.
execute
(
request
);
return
R
.
ok
();
}
}
datax-modules/workflow-service-parent/workflow-service/src/main/java/cn/datax/service/workflow/flowable/EndTaskListener.java
View file @
c039e7e6
package
cn
.
datax
.
service
.
workflow
.
flowable
;
import
cn.datax.common.core.DataConstant
;
import
cn.datax.service.workflow.api.enums.VariablesEnum
;
import
lombok.extern.slf4j.Slf4j
;
import
org.flowable.engine.delegate.DelegateExecution
;
import
org.flowable.engine.delegate.ExecutionListener
;
import
java.util.Map
;
@Slf4j
public
class
EndTaskListener
implements
ExecutionListener
{
@Override
public
void
notify
(
DelegateExecution
delegateExecution
)
{
log
.
info
(
"业务编号{}"
,
delegateExecution
.
getProcessInstanceBusinessKey
());
log
.
info
(
"节点{},{}"
,
delegateExecution
.
getId
(),
delegateExecution
.
getEventName
());
log
.
info
(
"节点{},{},{}"
,
delegateExecution
.
getId
(),
delegateExecution
.
getEventName
(),
delegateExecution
.
getCurrentActivityId
());
log
.
info
(
"Variables:{}"
,
delegateExecution
.
getVariables
());
// 业务状态变更操作
Map
<
String
,
Object
>
variables
=
delegateExecution
.
getVariables
();
// 发送消息队列
String
businessKey
=
(
String
)
variables
.
get
(
VariablesEnum
.
businessKey
.
toString
());
String
businessCode
=
(
String
)
variables
.
get
(
VariablesEnum
.
businessCode
.
toString
());
log
.
info
(
"业务结束:{},{}"
,
businessKey
,
businessCode
);
if
(
delegateExecution
.
getCurrentActivityId
().
equals
(
VariablesEnum
.
approveEnd
.
toString
()))
{
log
.
info
(
"业务结束状态:{}"
,
DataConstant
.
AuditState
.
AGREE
.
getKey
());
}
else
if
(
delegateExecution
.
getCurrentActivityId
().
equals
(
VariablesEnum
.
rejectEnd
.
toString
()))
{
log
.
info
(
"业务结束状态:{}"
,
DataConstant
.
AuditState
.
REJECT
.
getKey
());
}
}
}
datax-modules/workflow-service-parent/workflow-service/src/main/java/cn/datax/service/workflow/flowable/FinalAuditTaskListener.java
→
datax-modules/workflow-service-parent/workflow-service/src/main/java/cn/datax/service/workflow/flowable/FinalAudit
Create
TaskListener.java
View file @
c039e7e6
...
...
@@ -7,7 +7,7 @@ import org.flowable.task.service.delegate.DelegateTask;
import
org.flowable.task.service.delegate.TaskListener
;
@Slf4j
public
class
FinalAuditTaskListener
implements
TaskListener
{
public
class
FinalAudit
Create
TaskListener
implements
TaskListener
{
@Override
public
void
notify
(
DelegateTask
delegateTask
)
{
...
...
@@ -16,6 +16,7 @@ public class FinalAuditTaskListener implements TaskListener {
taskService
.
setAssignee
(
delegateTask
.
getId
(),
"1214835832967581698"
);
// taskService.addCandidateUser(delegateTask.getId(), "");
// taskService.addCandidateGroup(delegateTask.getId(), "");
log
.
info
(
"Variables:{}"
,
delegateTask
.
getVariables
());
log
.
info
(
"任务执行人:{}"
,
delegateTask
.
getAssignee
());
log
.
info
(
"任务配置ID: {}"
,
delegateTask
.
getTaskDefinitionKey
());
log
.
info
(
"退出终审节点用户任务启动监听器"
);
...
...
datax-modules/workflow-service-parent/workflow-service/src/main/java/cn/datax/service/workflow/flowable/InitialAuditCompleteTaskListener.java
0 → 100644
View file @
c039e7e6
package
cn
.
datax
.
service
.
workflow
.
flowable
;
import
cn.datax.common.utils.SpringContextHolder
;
import
cn.datax.service.workflow.api.enums.VariablesEnum
;
import
lombok.extern.slf4j.Slf4j
;
import
org.flowable.engine.TaskService
;
import
org.flowable.task.service.delegate.DelegateTask
;
import
org.flowable.task.service.delegate.TaskListener
;
import
java.util.Map
;
import
java.util.Optional
;
@Slf4j
public
class
InitialAuditCompleteTaskListener
implements
TaskListener
{
@Override
public
void
notify
(
DelegateTask
delegateTask
)
{
log
.
info
(
"进入初审节点用户任务完成监听器"
);
log
.
info
(
"Variables:{}"
,
delegateTask
.
getVariables
());
log
.
info
(
"任务执行人:{}"
,
delegateTask
.
getAssignee
());
log
.
info
(
"任务配置ID: {}"
,
delegateTask
.
getTaskDefinitionKey
());
Map
<
String
,
Object
>
variables
=
delegateTask
.
getVariables
();
Boolean
approved
=
(
Boolean
)
Optional
.
ofNullable
(
variables
).
map
(
s
->
s
.
get
(
VariablesEnum
.
approved
)).
orElse
(
true
);
log
.
info
(
"审核结果: {}"
,
approved
);
// 退回操作
if
(!
approved
)
{
// 发送消息队列
String
businessKey
=
(
String
)
variables
.
get
(
VariablesEnum
.
businessKey
.
toString
());
String
businessCode
=
(
String
)
variables
.
get
(
VariablesEnum
.
businessCode
.
toString
());
log
.
info
(
"业务退回:{},{}"
,
businessKey
,
businessCode
);
}
log
.
info
(
"退出初审节点用户任务完成监听器"
);
}
}
datax-modules/workflow-service-parent/workflow-service/src/main/java/cn/datax/service/workflow/flowable/InitialAuditTaskListener.java
→
datax-modules/workflow-service-parent/workflow-service/src/main/java/cn/datax/service/workflow/flowable/InitialAudit
Create
TaskListener.java
View file @
c039e7e6
...
...
@@ -7,7 +7,7 @@ import org.flowable.task.service.delegate.DelegateTask;
import
org.flowable.task.service.delegate.TaskListener
;
@Slf4j
public
class
InitialAuditTaskListener
implements
TaskListener
{
public
class
InitialAudit
Create
TaskListener
implements
TaskListener
{
@Override
public
void
notify
(
DelegateTask
delegateTask
)
{
...
...
@@ -16,6 +16,7 @@ public class InitialAuditTaskListener implements TaskListener {
taskService
.
setAssignee
(
delegateTask
.
getId
(),
"1214835832967581698"
);
// taskService.addCandidateUser(delegateTask.getId(), "");
// taskService.addCandidateGroup(delegateTask.getId(), "");
log
.
info
(
"Variables:{}"
,
delegateTask
.
getVariables
());
log
.
info
(
"任务执行人:{}"
,
delegateTask
.
getAssignee
());
log
.
info
(
"任务配置ID: {}"
,
delegateTask
.
getTaskDefinitionKey
());
log
.
info
(
"退出初审节点用户任务启动监听器"
);
...
...
datax-modules/workflow-service-parent/workflow-service/src/main/java/cn/datax/service/workflow/flowable/SubmitCompleteTaskListener.java
0 → 100644
View file @
c039e7e6
package
cn
.
datax
.
service
.
workflow
.
flowable
;
import
cn.datax.common.core.DataConstant
;
import
cn.datax.service.workflow.api.enums.VariablesEnum
;
import
lombok.extern.slf4j.Slf4j
;
import
org.flowable.task.service.delegate.DelegateTask
;
import
org.flowable.task.service.delegate.TaskListener
;
import
java.util.Map
;
@Slf4j
public
class
SubmitCompleteTaskListener
implements
TaskListener
{
@Override
public
void
notify
(
DelegateTask
delegateTask
)
{
log
.
info
(
"进入提交节点用户任务完成监听器"
);
log
.
info
(
"Variables:{}"
,
delegateTask
.
getVariables
());
log
.
info
(
"任务执行人:{}"
,
delegateTask
.
getAssignee
());
log
.
info
(
"任务配置ID: {}"
,
delegateTask
.
getTaskDefinitionKey
());
// 业务状态变更操作
Map
<
String
,
Object
>
variables
=
delegateTask
.
getVariables
();
// 发送消息队列
String
businessKey
=
(
String
)
variables
.
get
(
VariablesEnum
.
businessKey
.
toString
());
String
businessCode
=
(
String
)
variables
.
get
(
VariablesEnum
.
businessCode
.
toString
());
log
.
info
(
"业务审核中:{},{}"
,
businessKey
,
businessCode
);
log
.
info
(
"业务审核中状态:{}"
,
DataConstant
.
AuditState
.
AUDIT
.
getKey
());
log
.
info
(
"退出提交节点用户任务完成监听器"
);
}
}
datax-modules/workflow-service-parent/workflow-service/src/main/java/cn/datax/service/workflow/service/FlowInstanceService.java
View file @
c039e7e6
...
...
@@ -38,8 +38,9 @@ public interface FlowInstanceService {
/**
* 启动流程实例
* @param request
* @return
*/
void
startProcessInstanceById
(
ProcessInstanceCreateRequest
request
);
FlowInstanceVo
startProcessInstanceById
(
ProcessInstanceCreateRequest
request
);
/**
* 获取流程图图片
...
...
datax-modules/workflow-service-parent/workflow-service/src/main/java/cn/datax/service/workflow/service/impl/FlowInstanceServiceImpl.java
View file @
c039e7e6
...
...
@@ -7,6 +7,7 @@ import cn.datax.service.workflow.api.query.FlowInstanceQuery;
import
cn.datax.service.workflow.api.vo.FlowInstanceVo
;
import
cn.datax.service.workflow.service.FlowInstanceService
;
import
cn.datax.service.workflow.utils.BeanCopyUtil
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -25,6 +26,7 @@ import org.flowable.engine.runtime.ProcessInstanceBuilder;
import
org.flowable.engine.runtime.ProcessInstanceQuery
;
import
org.flowable.engine.task.Comment
;
import
org.flowable.image.impl.DefaultProcessDiagramGenerator
;
import
org.flowable.task.api.Task
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.Assert
;
...
...
@@ -61,11 +63,11 @@ public class FlowInstanceServiceImpl implements FlowInstanceService {
if
(
StrUtil
.
isNotBlank
(
flowInstanceQuery
.
getBusinessKey
())){
processInstanceQuery
.
processInstanceBusinessKey
(
flowInstanceQuery
.
getBusinessKey
());
}
if
(
StrUtil
.
isNotBlank
(
flowInstanceQuery
.
getBusiness
Typ
e
())){
processInstanceQuery
.
variableValueEquals
(
VariablesEnum
.
business
Type
.
toString
(),
flowInstanceQuery
.
getBusinessTyp
e
());
if
(
StrUtil
.
isNotBlank
(
flowInstanceQuery
.
getBusiness
Cod
e
())){
processInstanceQuery
.
variableValueEquals
(
VariablesEnum
.
business
Code
.
toString
(),
flowInstanceQuery
.
getBusinessCod
e
());
}
if
(
StrUtil
.
isNotBlank
(
flowInstanceQuery
.
getBusinessName
())){
processInstanceQuery
.
variableValue
Equals
(
VariablesEnum
.
businessName
.
toString
(),
flowInstanceQuery
.
getBusinessName
());
processInstanceQuery
.
variableValue
Like
(
VariablesEnum
.
businessName
.
toString
(),
flowInstanceQuery
.
getBusinessName
());
}
List
<
ProcessInstance
>
processInstanceList
=
processInstanceQuery
.
includeProcessVariables
()
.
orderByStartTime
().
desc
()
...
...
@@ -97,10 +99,10 @@ public class FlowInstanceServiceImpl implements FlowInstanceService {
}
@Override
public
void
startProcessInstanceById
(
ProcessInstanceCreateRequest
request
)
{
public
FlowInstanceVo
startProcessInstanceById
(
ProcessInstanceCreateRequest
request
)
{
Assert
.
notNull
(
request
.
getSubmitter
(),
"请输入提交人"
);
Assert
.
notNull
(
request
.
getBusinessKey
(),
"请输入业务id"
);
Assert
.
notNull
(
request
.
getBusiness
Typ
e
(),
"请输入业务类型"
);
Assert
.
notNull
(
request
.
getBusiness
Cod
e
(),
"请输入业务类型"
);
Assert
.
notNull
(
request
.
getProcessDefinitionId
(),
"请输入流程定义ID"
);
ProcessInstanceBuilder
processInstanceBuilder
=
runtimeService
.
createProcessInstanceBuilder
();
if
(
StrUtil
.
isNotBlank
(
request
.
getProcessDefinitionId
())){
...
...
@@ -114,10 +116,25 @@ public class FlowInstanceServiceImpl implements FlowInstanceService {
processInstanceBuilder
.
name
(
request
.
getBusinessName
());
}
processInstanceBuilder
.
variables
(
request
.
getVariables
());
Authentication
.
setAuthenticatedUserId
(
SecurityUtil
.
getUserId
());
Authentication
.
setAuthenticatedUserId
(
request
.
getSubmitter
());
ProcessInstance
processInstance
=
processInstanceBuilder
.
start
();
Authentication
.
setAuthenticatedUserId
(
null
);
log
.
info
(
"发起流程成功,流程ID:{}"
,
processInstance
.
getId
());
this
.
completeFirstTask
(
request
.
getSubmitter
(),
processInstance
.
getProcessInstanceId
());
FlowInstanceVo
flowInstanceVo
=
new
FlowInstanceVo
();
BeanUtil
.
copyProperties
(
processInstance
,
flowInstanceVo
);
return
flowInstanceVo
;
}
private
void
completeFirstTask
(
String
submitter
,
String
processInstanceId
){
Task
task
=
taskService
.
createTaskQuery
().
taskAssignee
(
submitter
).
processInstanceId
(
processInstanceId
).
active
().
singleResult
();
if
(
task
!=
null
)
{
log
.
info
(
"自动完成第一个任务,任务ID:{}"
,
task
.
getId
());
Comment
comment
=
taskService
.
addComment
(
task
.
getId
(),
processInstanceId
,
"任务提交"
);
comment
.
setUserId
(
submitter
);
taskService
.
saveComment
(
comment
);
taskService
.
complete
(
task
.
getId
());
}
}
@Override
...
...
@@ -175,11 +192,11 @@ public class FlowInstanceServiceImpl implements FlowInstanceService {
if
(
StrUtil
.
isNotBlank
(
flowInstanceQuery
.
getBusinessKey
())){
historicProcessInstanceQuery
.
processInstanceBusinessKey
(
flowInstanceQuery
.
getBusinessKey
());
}
if
(
StrUtil
.
isNotBlank
(
flowInstanceQuery
.
getBusiness
Typ
e
())){
historicProcessInstanceQuery
.
variableValueEquals
(
VariablesEnum
.
business
Type
.
toString
(),
flowInstanceQuery
.
getBusinessTyp
e
());
if
(
StrUtil
.
isNotBlank
(
flowInstanceQuery
.
getBusiness
Cod
e
())){
historicProcessInstanceQuery
.
variableValueEquals
(
VariablesEnum
.
business
Code
.
toString
(),
flowInstanceQuery
.
getBusinessCod
e
());
}
if
(
StrUtil
.
isNotBlank
(
flowInstanceQuery
.
getBusinessName
())){
historicProcessInstanceQuery
.
variableValue
Equals
(
VariablesEnum
.
businessName
.
toString
(),
flowInstanceQuery
.
getBusinessName
());
historicProcessInstanceQuery
.
variableValue
Like
(
VariablesEnum
.
businessName
.
toString
(),
flowInstanceQuery
.
getBusinessName
());
}
List
<
HistoricProcessInstance
>
historicProcessInstanceList
=
historicProcessInstanceQuery
.
includeProcessVariables
()
.
orderByProcessInstanceStartTime
().
desc
()
...
...
@@ -197,11 +214,11 @@ public class FlowInstanceServiceImpl implements FlowInstanceService {
if
(
StrUtil
.
isNotBlank
(
flowInstanceQuery
.
getBusinessKey
())){
historicProcessInstanceQuery
.
processInstanceBusinessKey
(
flowInstanceQuery
.
getBusinessKey
());
}
if
(
StrUtil
.
isNotBlank
(
flowInstanceQuery
.
getBusiness
Typ
e
())){
historicProcessInstanceQuery
.
variableValueEquals
(
VariablesEnum
.
business
Type
.
toString
(),
flowInstanceQuery
.
getBusinessTyp
e
());
if
(
StrUtil
.
isNotBlank
(
flowInstanceQuery
.
getBusiness
Cod
e
())){
historicProcessInstanceQuery
.
variableValueEquals
(
VariablesEnum
.
business
Code
.
toString
(),
flowInstanceQuery
.
getBusinessCod
e
());
}
if
(
StrUtil
.
isNotBlank
(
flowInstanceQuery
.
getBusinessName
())){
historicProcessInstanceQuery
.
variableValue
Equals
(
VariablesEnum
.
businessName
.
toString
(),
flowInstanceQuery
.
getBusinessName
());
historicProcessInstanceQuery
.
variableValue
Like
(
VariablesEnum
.
businessName
.
toString
(),
flowInstanceQuery
.
getBusinessName
());
}
List
<
HistoricProcessInstance
>
historicProcessInstanceList
=
historicProcessInstanceQuery
.
includeProcessVariables
()
.
orderByProcessInstanceStartTime
().
desc
()
...
...
datax-modules/workflow-service-parent/workflow-service/src/main/java/cn/datax/service/workflow/service/impl/FlowTaskServiceImpl.java
View file @
c039e7e6
...
...
@@ -15,6 +15,7 @@ import lombok.extern.slf4j.Slf4j;
import
org.flowable.engine.HistoryService
;
import
org.flowable.engine.TaskService
;
import
org.flowable.engine.task.Comment
;
import
org.flowable.task.api.DelegationState
;
import
org.flowable.task.api.Task
;
import
org.flowable.task.api.TaskQuery
;
import
org.flowable.task.api.history.HistoricTaskInstance
;
...
...
@@ -45,8 +46,8 @@ public class FlowTaskServiceImpl implements FlowTaskService {
if
(
StrUtil
.
isNotBlank
(
flowTaskQuery
.
getBusinessKey
())){
taskQuery
.
processInstanceBusinessKey
(
flowTaskQuery
.
getBusinessKey
());
}
if
(
StrUtil
.
isNotBlank
(
flowTaskQuery
.
getBusiness
Typ
e
())){
taskQuery
.
processVariableValueEquals
(
VariablesEnum
.
business
Type
.
toString
(),
flowTaskQuery
.
getBusinessTyp
e
());
if
(
StrUtil
.
isNotBlank
(
flowTaskQuery
.
getBusiness
Cod
e
())){
taskQuery
.
processVariableValueEquals
(
VariablesEnum
.
business
Code
.
toString
(),
flowTaskQuery
.
getBusinessCod
e
());
}
if
(
StrUtil
.
isNotBlank
(
flowTaskQuery
.
getBusinessName
())){
taskQuery
.
processVariableValueLike
(
VariablesEnum
.
businessName
.
toString
(),
flowTaskQuery
.
getBusinessName
());
...
...
@@ -61,6 +62,8 @@ public class FlowTaskServiceImpl implements FlowTaskService {
BeanUtil
.
copyProperties
(
task
,
flowTaskVo
,
"variables"
);
//放入流程参数
flowTaskVo
.
setVariables
(
task
.
getProcessVariables
());
//是否委派任务
flowTaskVo
.
setIsDelegation
(
DelegationState
.
PENDING
.
equals
(
task
.
getDelegationState
()));
list
.
add
(
flowTaskVo
);
});
long
count
=
taskQuery
.
count
();
...
...
@@ -77,11 +80,11 @@ public class FlowTaskServiceImpl implements FlowTaskService {
if
(
StrUtil
.
isNotBlank
(
flowTaskQuery
.
getBusinessKey
()))
{
historicTaskInstanceQuery
.
processInstanceBusinessKey
(
flowTaskQuery
.
getBusinessKey
());
}
if
(
StrUtil
.
isNotBlank
(
flowTaskQuery
.
getBusiness
Nam
e
()))
{
historicTaskInstanceQuery
.
processVariableValueEquals
(
VariablesEnum
.
business
Type
.
toString
(),
flowTaskQuery
.
getBusinessNam
e
());
if
(
StrUtil
.
isNotBlank
(
flowTaskQuery
.
getBusiness
Cod
e
()))
{
historicTaskInstanceQuery
.
processVariableValueEquals
(
VariablesEnum
.
business
Code
.
toString
(),
flowTaskQuery
.
getBusinessCod
e
());
}
if
(
StrUtil
.
isNotBlank
(
flowTaskQuery
.
getBusiness
Typ
e
()))
{
historicTaskInstanceQuery
.
processVariableValueLike
(
VariablesEnum
.
businessName
.
toString
(),
flowTaskQuery
.
getBusiness
Typ
e
());
if
(
StrUtil
.
isNotBlank
(
flowTaskQuery
.
getBusiness
Nam
e
()))
{
historicTaskInstanceQuery
.
processVariableValueLike
(
VariablesEnum
.
businessName
.
toString
(),
flowTaskQuery
.
getBusiness
Nam
e
());
}
List
<
HistoricTaskInstance
>
historicTaskInstanceList
=
historicTaskInstanceQuery
.
finished
()
.
includeProcessVariables
().
orderByHistoricTaskInstanceEndTime
().
desc
()
...
...
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