当前位置: 首页 > news >正文

camunda_11_connector

Camunda 的 service task 推荐使用 external task, 它有很多优点:

  • 流程引擎可以做到轻量级, 流程引擎实例可以支持更多的业务.
  • 解耦流程引擎和业务代码, 以后的升级和部署将非常方便.
  • 借助external task SDK, 业务代码实现也非常简单
  • external task 采用 pull 模式, 由 external task worker 采用轮训机制pull服务请求, 会有一定的延时.

Connector 总体优势不如 external task, 但我们可以通过Connector 对接已有的 http 服务, 特点是:

  • 复用已有的 http 业务服务, 业务代码和流程引擎做到了一定程度的解耦.
  • 流程引擎采用 push 机制调用外部 http 接口, 如果这样的task较多, 流程引擎的压力会较大.

启用 connect plugin

  1. 官方发布的 camunda platform预编译包默认已经启用了 connect plugin插件.
  2. 自建流程引擎项目, 需参考 connectors 官网 引入必要的jar, 并启用connect plugin.

使用

  1. Service Task 组件设置:
  • type : connector
  • connector Id, 如果是Rest 接口, 设置为 http-connector , 如果是 SOAP, 设置为 soap-http-connector
  1. connector inputs设置 :
  • 变量1: url, 类型为 string, 取值为 http 地址
  • 变量2: method, 类型为 string, 取值为 GET/POST/PUT/DELETE/PATCH
  • 变量3: headers, 类型为 map, 一般需要增加如下几个header
    (1) key: Content-Type, value: text/plain
    (2) key: Accept, value: application/json
  • 变量4: payload, 类型为 string, 取值为请求体内容
  1. connector outputs 设置 :
    http connector 返回三个data, 分别是 response/headers/statusCode, 注意不能在普通outputs变量区访问者三个数据, 必须要在connector outputs 区使用才行. 我们可以通过java表达式或javascript的方式访问这几个信息, 并把它们作为process variable 暴露出来.
    (1) java 表达式写法示例:
    输出变量v1, 表达式为: ${response.length>4000?response.substring(0,4000)"response"}
    输出变量v2: 表达式为: ${response.getBytes("UTF8")}
    输出变量v3: 表达式为: ${JSON(response)
    输出变量v4: 表达式为: ${XML(response)

(2) javascript 脚本写法示例:
javascript 脚本可以写多行, 所以可以比java表达式实现更复杂的逻辑, javascript 脚本最后一行应该是一个表达式, 而且不能带分号, 该表达式将作为process variable的取值.
输出变量v1, 脚本为:

connector.getVariable("response").substring(0,4000)

输出变量v2, 脚本为:

var response=connector.getVariable("response");
var responseObj=JSON.parse(response);
var attr1=responseObj.attr1;
attr1 //返回json中的attr1属性

输出变量v3, 脚本为:

var response=connector.getVariable("response");
var json=S(response);
var attr1=json.prop("attr1").stringValue();
attr1 //返回json中的attr1属性

参考

  • gitlab camunda 三种调用方式对比
  • HTTP Connector (Camunda Connect Plugin)
  • camunda Connector连接器 发送POST接口
  • camunda如何调用HTTP REST(Service Task)服务节点

相关文章:

  • 基于支持向量机的医疗图像分类研究与实现
  • SpringBoot+Vue项目求职招聘网站
  • 9-6 Oracle 管理索引
  • Spring基本使用及核心技术
  • 2022研究生电子设计竞赛总结(东北赛区一等奖、国家二等奖)
  • 秋招面试- - -Java体系最新面试题(8)
  • Spring5详解
  • 基于PLC四层电梯模型控制系统
  • 编译原理笔记
  • vue中如何监听localStorage值的变化
  • Acwing算法基础课总结
  • Libgdx游戏开发(1)——环境配置及demo运行
  • ESB产品调用场景分析
  • 【微机原理】微处理器与总线
  • 【youcans 的图像处理学习课】11. 形态学图像处理(下)
  • Day19NAT
  • ARMv9新特性:虚拟内存系统架构 (VMSA) 的增强功能
  • 大数据入门之 Hadoop,HDFS,Hbase,Hive
  • 令人头秃的js隐式转换面试题,你能做对吗
  • 信号(软件中断)编程