Files
flow-center-service/src/main/java/com/yunhai/flowcenter/engine/FlowEvent.java
T
chenxing c1103aeb29
build / build-push (push) Successful in 28s
feat: 提交流程中心后端代码
Spring Boot 流程引擎服务:流程定义/实例/任务、审批人解析、
回调分发、oapi 接口及单元测试。
保留远程 .gitea/workflows/build.yml 与 docker/Dockerfile,
新增 .gitignore 排除 target/ 构建产物。
2026-09-15 10:42:56 +08:00

69 lines
2.3 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.yunhai.flowcenter.engine;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import java.util.HashMap;
import java.util.Map;
/**
* 引擎关键状态变迁事件(概览 §5.2 v1.1 增补):事务内发布,AFTER_COMMIT 后由
* CallbackDispatcher(回调给业务方)与 UserMsgNotifier(通知人)消费——引擎本身不知道
* 也不依赖任何业务方的存在。携带 instanceId 而非实体快照:监听方在提交后按需重读(含最新 version)。
*/
@Getter
@RequiredArgsConstructor
public class FlowEvent {
public enum Type {
/** 代发起/重提成功(instance=10) */
SUBMITTED("flow.submitted"),
/** 任一审批任务创建(并行会签每个任务各发一条,data 带 n/m 汇总) */
TASK_CREATED("flow.task.created"),
/** 任一任务被办理(同意/拒绝各发一条,进度同步用) */
TASK_HANDLED("flow.task.handled"),
/** END 激活,instance=20 */
COMPLETED("flow.completed"),
/** END_REJECTED,instance=30 */
REJECTED("flow.rejected"),
/** 提交人撤回,instance=40 */
WITHDRAWN("flow.withdrawn"),
/** 催办(仅 UserMsg 通道,非回调事件枚举) */
URGE("flow.urge");
private final String code;
Type(String code) {
this.code = code;
}
public String getCode() {
return code;
}
public static Type ofCode(String code) {
for (Type t : values()) {
if (t.code.equals(code)) {
return t;
}
}
return null;
}
}
private final Type type;
private final Long instanceId;
/** 任务事件带 taskId(SUBMITTED 等办件级事件为 null) */
private final Long taskId;
/** 事件明细(result/opinion/rejectNode/task.created 的 n/m 等),可为空 */
private final Map<String, Object> data;
public static FlowEvent of(Type type, Long instanceId) {
return new FlowEvent(type, instanceId, null, new HashMap<>());
}
public static FlowEvent of(Type type, Long instanceId, Long taskId, Map<String, Object> data) {
return new FlowEvent(type, instanceId, taskId, data == null ? new HashMap<>() : data);
}
}