Skip to content

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");
    }
}

注解参数说明

注解参数类型说明
@FlowBindprocessKeyString流程定义 Key
@FlowBindnodeKeyStringBPMN 节点 ID
@FlowStartprocessKeyString流程定义 Key
@FlowCallbackprocessKeyString流程定义 Key

FlowContext 常用方法

方法返回值说明
getBusinessKey()Long业务单据 ID
getAssignee()String当前任务处理人
setAssignee(String)void设置任务处理人
getVariable(String)Object获取流程变量
setVariable(String, Object)void设置流程变量

服务增强接口规范

  1. 增强方法所在的类必须注册为 Spring Bean(@Component
  2. 方法访问修饰符为 public
  3. 方法参数为 FlowContext,返回值为 void
  4. 一个流程的同一节点只能绑定一个方法
  5. @FlowStart@FlowCallback 每个流程各最多一个

下一步

Forge Admin — 基于 Vue3 + Spring Boot 的企业级后台管理框架