流程引擎 REST 客户端模块,支持通过注解将业务方法与流程实例绑定,自动启动流程和处理流程事件。
<dependency>
<groupId>com.mdframe.forge</groupId>
<artifactId>forge-flow-client</artifactId>
</dependency>
forge:
flow:
client:
url: http://localhost:8080 # 流程服务地址
token: your-auth-token # 服务间认证 Token(可选)
connect-timeout: 3000 # 连接超时(ms)
read-timeout: 10000 # 读取超时(ms)
redis-subscribe: true # 是否启用 Redis Pub/Sub 订阅流程事件
@FlowBind — 绑定流程模型标注在 Service 类上,声明该类与某个流程模型关联:
@Service
@FlowBind(modelKey = "leave", businessType = "leave_request")
public class LeaveService {
// ...
}
@FlowStart — 自动启动流程标注在方法上,方法执行成功后自动启动流程:
@FlowStart(
businessKeySpEl = "#result.id",
titleSpEl = "#request.title",
variablesSpEl = "#request.variables"
)
public LeaveResult submitLeave(LeaveRequest request) {
// 提交请假申请...
return result; // 方法成功后自动启动流程
}
| 属性 | 说明 |
|---|---|
modelKey |
流程模型编码(可选,默认取类级别 @FlowBind 的值) |
businessKeySpEl |
必填,业务主键 SpEL 表达式 |
titleSpEl |
流程标题 SpEL |
userIdSpEl |
申请人 ID SpEL |
userNameSpEl |
申请人姓名 SpEL |
deptIdSpEl |
申请部门 ID SpEL |
deptNameSpEl |
申请部门名称 SpEL |
variablesSpEl |
流程变量 SpEL |
skipOnError |
发生异常时是否跳过(默认 true) |
@FlowCallback — 流程事件回调标注在方法上,接收流程引擎推送的事件:
@FlowCallback(on = {FlowEventContext.ON_COMPLETED, FlowEventContext.ON_REJECTED})
public void onFlowComplete(FlowEventContext context) {
if (context.getEventType().equals(FlowEventContext.ON_COMPLETED)) {
// 流程审批通过
leaveService.approve(context.getBusinessKey());
} else {
// 流程被驳回
leaveService.reject(context.getBusinessKey());
}
}
| 属性 | 说明 |
|---|---|
on |
监听的事件类型列表 |
可用事件类型:
| 事件常量 | 说明 |
|---|---|
ON_COMPLETED |
流程完成(审批通过) |
ON_REJECTED |
流程被驳回 |
ON_CANCELED |
流程被取消 |
ON_TASK_CREATED |
任务创建 |
ON_TASK_COMPLETED |
任务完成 |
ON_TASK_ASSIGNED |
任务被分配 |
FlowEventContext流程事件上下文,传递给 @FlowCallback 方法:
| 字段 | 说明 |
|---|---|
event / eventType |
事件类型 |
businessKey |
业务主键 |
processInstanceId |
流程实例 ID |
processDefKey |
流程定义编码 |
title |
流程标题 |
startUserId / applyUserId |
申请人 ID |
startUserName / applyUserName |
申请人姓名 |
eventTime |
事件时间 |
lastComment |
最新审批意见 |
taskId |
任务 ID |
taskName |
任务名称 |
assigneeId |
处理人 ID |
assigneeName |
处理人姓名 |
comment |
审批意见 |
variables |
流程变量 |
FlowClient 封装了以下流程服务接口调用:
| 方法 | 说明 |
|---|---|
startProcess() |
启动流程 |
getProcessStatus() |
查询流程状态 |
terminateProcess() |
终止流程 |
withdrawProcess() |
撤回流程 |
getProcessVariables() |
获取流程变量 |
updateProcessVariables() |
更新流程变量 |
| 方法 | 说明 |
|---|---|
approve() |
审批通过 |
reject() |
驳回 |
delegate() |
转交任务 |
claimTask() |
签收任务 |
remind() |
催办 |
| 方法 | 说明 |
|---|---|
getTodoTasks() |
待办任务列表 |
getDoneTasks() |
已办任务列表 |
getStartedTasks() |
我发起的流程 |
getProcessComments() |
获取审批意见列表 |
getProcessDiagram() |
获取流程图 |
getModelList() |
获取流程模型列表 |
FlowTokenProvider 接口支持动态获取认证 Token:
@Component
public class MyFlowTokenProvider implements FlowTokenProvider {
@Override
public String getToken() {
// 从配置中心/缓存中获取动态 Token
return configService.getFlowToken();
}
}
| 组件 | 说明 |
|---|---|
FlowClient |
流程服务 HTTP 客户端 |
FlowStartAspect |
@FlowStart AOP 切面 |
FlowEventSubscriber |
Redis Pub/Sub 事件订阅,路由到 @FlowCallback 方法 |
FlowClientHelperAutoConfiguration |
辅助组件自动配置 |
FlowResult<T> |
流程服务统一响应体 |
FlowClientException |
流程客户端自定义异常 |