Java 服务增强公开契约
Forge 低代码平台提供 Java 层的服务增强能力,通过注解将业务逻辑与低代码流程绑定。
概述
低代码平台生成的运行时页面默认提供标准 CRUD 能力。当标准能力不满足需求时,你可以通过 Java 服务增强注解扩展业务逻辑,无需修改生成的代码。
核心注解
@FlowBind
将业务方法绑定到流程节点,流程到达该节点时自动调用。
java
@FlowBind(processKey = "leave_approval", nodeKey = "manager_audit")
public void onManagerAudit(FlowContext context) {
Long businessKey = context.getBusinessKey();
// 获取业务数据
LeaveLeave leave = leaveService.getById(businessKey);
// 设置审批人
context.setAssignee(leave.getManagerId());
}@FlowStart
在流程启动时执行初始化逻辑。
java
@FlowStart(processKey = "leave_approval")
public void onFlowStart(FlowContext context) {
Long businessKey = context.getBusinessKey();
// 初始化流程变量
Leave leave = leaveService.getById(businessKey);
context.setVariable("days", leave.getDays());
context.setVariable("type", leave.getType());
}@FlowCallback
流程结束时执行回调逻辑,处理审批结果。
java
@FlowCallback(processKey = "leave_approval")
public void onFlowCallback(FlowContext context) {
Long businessKey = context.getBusinessKey();
String result = context.getVariable("result");
// 根据审批结果更新业务状态
if ("approved".equals(result)) {
leaveService.updateStatus(businessKey, "approved");
} else {
leaveService.updateStatus(businessKey, "rejected");
}
}注解参数说明
| 注解 | 参数 | 类型 | 说明 |
|---|---|---|---|
| @FlowBind | processKey | String | 流程定义 Key |
| @FlowBind | nodeKey | String | BPMN 节点 ID |
| @FlowStart | processKey | String | 流程定义 Key |
| @FlowCallback | processKey | String | 流程定义 Key |
FlowContext 常用方法
| 方法 | 返回值 | 说明 |
|---|---|---|
getBusinessKey() | Long | 业务单据 ID |
getAssignee() | String | 当前任务处理人 |
setAssignee(String) | void | 设置任务处理人 |
getVariable(String) | Object | 获取流程变量 |
setVariable(String, Object) | void | 设置流程变量 |
服务增强接口规范
- 增强方法所在的类必须注册为 Spring Bean(
@Component) - 方法访问修饰符为
public - 方法参数为
FlowContext,返回值为void - 一个流程的同一节点只能绑定一个方法
@FlowStart和@FlowCallback每个流程各最多一个
