Camunda 8 流程自动化平台

项目标题与描述

Camunda 8 是一个开源的流程自动化平台,提供以下核心组件:

  • Zeebe:云原生流程引擎
  • Tasklist:人工任务管理系统
  • Operate:流程运维监控工具
  • Identity:统一认证授权服务
  • Optimize:流程分析与优化工具

平台支持BPMN 2.0标准,提供REST和gRPC API接口,可用于构建分布式工作流系统。

功能特性

  • 流程引擎:高性能、分布式的Zeebe流程引擎
  • 决策引擎:支持DMN标准的决策自动化
  • 任务管理:人工任务分配与跟踪
  • 流程监控:实时监控和故障排查
  • 多租户支持:完善的租户隔离机制
  • 安全认证:OAuth2/OIDC集成
  • 弹性扩展:云原生架构支持水平扩展
  • 连接器生态:丰富的系统连接器

安装指南

快速启动(使用C8 Run)

# 下载最新版本
curl -LO https://github.com/camunda/camunda/releases/download/8.5.7/zbctl

# 启动所有服务
./c8run start

系统要求

  • Java 11+
  • Elasticsearch/OpenSearch (可选)
  • 至少4GB内存

Docker Compose部署

version: '3'
services:
  zeebe:
    image: camunda/zeebe:8.5.7
    ports:
      - "26500:26500"
  operate:
    image: camunda/operate:8.5.7
    ports:
      - "8080:8080"

使用说明

创建流程实例

ZeebeClient client = ZeebeClient.newClientBuilder()
    .gatewayAddress("localhost:26500")
    .build();

client.newCreateInstanceCommand()
    .bpmnProcessId("order-process")
    .latestVersion()
    .variables("{\"orderId\": \"123\"}")
    .send()
    .join();

处理人工任务

client.newActivateJobsCommand()
    .jobType("payment")
    .maxJobsToActivate(3)
    .workerName("payment-worker")
    .timeout(Duration.ofMinutes(5))
    .send()
    .join();

REST API示例

# 获取流程定义
GET http://localhost:8080/v1/process-definitions

# 创建实例
POST http://localhost:8080/v1/process-instances
{
  "bpmnProcessId": "order-process",
  "variables": {"orderId": "123"}
}

核心代码

认证服务实现

@Service
@ConditionalOnAuthenticationMethod(AuthenticationMethod.OIDC)
public class CamundaJwtAuthenticationConverter 
    implements Converter<Jwt, AbstractAuthenticationToken> {
    
    private final CamundaOAuthPrincipalService principalService;

    public AbstractAuthenticationToken convert(Jwt jwt) {
        return new CamundaJwtAuthenticationToken(
            jwt,
            new CamundaJwtUser(
                jwt, 
                principalService.loadOAuthContext(jwt.getClaims())
            ),
            jwt.getTokenValue(),
            authorities
        );
    }
}

流程引擎客户端

public interface ZeebeClient {
    CreateInstanceCommandStep1 newCreateInstanceCommand();
    
    ActivateJobsCommandStep1 newActivateJobsCommand();
    
    @ExperimentalApi
    PublishMessageCommandStep1 newPublishMessageCommand();
}

任务处理过滤器

public class AdminUserCheckFilter extends OncePerRequestFilter {
    protected void doFilterInternal(HttpServletRequest request, 
                                  HttpServletResponse response,
                                  FilterChain chain) {
        if (!hasConfiguredAdminUser()) {
            response.sendRedirect("/identity/setup");
            return;
        }
        chain.doFilter(request, response);
    }
}

更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码

posted @ 2025-06-30 08:01  qife  阅读(34)  评论(0)    收藏  举报