1.1.0稳定版zeebe Java客户端如何完成USER_TASK?
Zeebe 1.1.0 版本用户任务处理方案
首先明确:Zeebe 1.1.0稳定版没有推出独立的USER_TASK专属操作API,该版本的用户任务是基于普通Job机制封装实现的,不存在遗漏API的问题,Java客户端操作步骤如下:
1. 注册用户任务Job Worker
BPMN中定义的USER_TASK默认任务类型为io.camunda.zeebe:user-task,你需要先注册对应类型的worker监听用户任务:
// 初始化ZeebeClient之后注册worker zeebeClient.newWorker() .jobType("io.camunda.zeebe:user-task") .handler((client, job) -> { // 读取用户任务元数据:处理人、候选组、表单配置等 String assignee = job.getCustomHeaders().get("io.camunda.zeebe:assignee"); Map<String, Object> processVariables = job.getVariablesAsMap(); // 此处编写业务逻辑:比如将任务写入待办库、推送待办通知给处理人 // ... // 若无需等待用户操作,直接完成任务可在此处调用complete命令 client.newCompleteCommand(job.getKey()) .variables(Map.of("taskResult", "autoCompleted")) .send() .exceptionally(e -> { throw new RuntimeException("用户任务完成失败", e); }); }) .open();
2. 用户主动提交任务完成操作
如果用户需要在前端操作后再完成任务,你需要先将用户任务对应的jobKey、流程实例ID等信息存入自己的业务待办库,用户提交时直接调用完成接口即可:
// jobKey为待办库中存储的对应用户任务的唯一标识 zeebeClient.newCompleteCommand(jobKey) .variables(用户提交的表单参数Map) .send() .join();
注意事项
- 你可以在BPMN的USER_TASK配置中自定义
taskType属性,替换默认的长类型标识,worker对应的jobType同步修改即可 - 1.1.0版本没有内置用户任务查询接口,你需要配置Exporter将任务数据导出到Elasticsearch等外部存储,自行实现待办查询逻辑
- 转派、驳回等高级用户任务操作,该版本没有原生支持,需要结合BPMN边界事件、流程变量等自行实现

内容的提问来源于stack exchange,提问作者周功浩
相关产品推荐
相关产品推荐

