You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JBPM 7.31:如何暴露自定义REST服务关闭任务并实现流程等待外部调用

在JBPM 7.31中实现自定义REST服务触发任务关闭的方案

可以,JBPM完全支持扩展自定义REST服务来处理自定义任务,同时能通过流程设计结合外部调用的方式,实现流程暂停等待外部触发后继续执行的需求。以下是具体实现步骤:

一、流程设计:添加等待触发节点

在JBPM Designer中,为流程添加一个Receive Task节点(专门用于等待外部触发的节点):

  • 给节点设置唯一标识名称(比如waitExternalTrigger)
  • 配置触发信号(Signal),设置信号名称(比如completeExternalTask),流程走到该节点时会自动暂停,等待对应信号触发

二、开发自定义REST服务

JBPM基于WildFly运行,可通过JAX-RS扩展自定义REST接口,依赖JBPM核心API实现任务触发逻辑:

1. 编写REST资源类

创建JAX-RS类,暴露接口用于触发流程继续:

import org.kie.api.runtime.KieSession;
import javax.inject.Inject;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Response;

@Path("/custom/task")
public class CustomTaskCompletionResource {

    @Inject
    private KieSession kieSession;

    @POST
    @Path("/complete")
    public Response completeTask(@QueryParam("processInstanceId") Long processInstanceId) {
        // 触发预设的信号,唤醒对应流程实例
        kieSession.signalEvent("completeExternalTask", null, processInstanceId);
        return Response.ok("Process instance " + processInstanceId + " resumed successfully").build();
    }
}

2. 部署服务

  • 将编译后的类打包成JAR文件,放入JBPM服务器的standalone/deployments目录
  • 确保服务器的JAX-RS扫描机制能识别到该资源类(可通过添加@ApplicationPath注解的类来配置扫描范围)

三、触发流程继续

  1. 启动目标流程实例,确认流程停在Receive Task节点
  2. 调用自定义REST接口触发流程:
curl -X POST "http://localhost:8080/jbpm-rest/custom/task/complete?processInstanceId=YOUR_PROCESS_INSTANCE_ID"
  1. 检查JBPM控制台,确认流程已继续执行直至结束

替代方案:使用JBPM原生API

如果不需要完全自定义逻辑,也可以直接用JBPM原生REST API:

  • 触发信号:POST /runtime/{deploymentId}/signal,传入信号名称和流程实例ID
  • 完成用户任务:POST /runtime/{deploymentId}/tasks/{taskId}/complete(适用于User Task类型的等待节点)

内容的提问来源于stack exchange,提问作者Francesco Motta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 23:10:28