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

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)服务节点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dgrt.cn/a/58369.html

如若内容造成侵权/违法违规/事实不符,请联系我爱学习网进行投诉反馈,一经查实,立即删除!

相关文章:

camunda_11_connector

Camunda 的 service task 推荐使用 external task, 它有很多优点: 流程引擎可以做到轻量级, 流程引擎实例可以支持更多的业务.解耦流程引擎和业务代码, 以后的升级和部署将非常方便.借助external task SDK, 业务代码实现也非常简单external task 采用 pull 模式, 由 external t…...

通达信自动交易接口设置止损程序解析

通达信自动交易接口设置止损程序并不是很难,对于交易者来说,还是需要去学习一些编程知识,像交易中的止损程序,可以这样去编写和输入你的止损策略: (1)# 设置买卖止损值 def set_stop_lose_n…...

MySQL事务的理解

什么是事务 事务是是数据库操作的最小的单元,它包含了一个或者多个操作命令,这些命令作为一个整体来执 行,要么一起成功要么一起失败,事务是不可在分的一个整体的操作集合。 事务具备的四大特性 原子性:事务是一个…...

ubantu服务器崩溃,重装系统如何使用之前的账号

1.进入root账户下: sudo su 2.查看账号拥有者和所属组 ls -la 2.给现在系统,添加原来相同的已存在账号名: adduser newusername 注意:报告已存在用户名称!不用管,这个错误。已经添加到新系统中了。 3.修…...

Python 逻辑回归

逻辑回归分类 训练二元分类器 加载仅有两个分类的数据 from sklearn.linear_model import LogisticRegression from sklearn import datasets from sklearn.preprocessing import StandardScaleriris datasets.load_iris() features iris.data[:100,:] target iris.target…...

web前端面试题附答案016-怎么让顶部轮播图渲染的更快?

一、为什么强调轮播图? 很多时候我们强调用户体验,而这里更多时候我们更强调完美的首屏体验,而现在几乎每个网站顶部第一个大模块就是轮播图。轮播图占得区域最大,图片质量也更高,几乎一张图片的面积,体积就…...

Python脚本,物联网云服务器端口监控

事实上,物联网的思路很简单,客户端设备通过TCP协议上传到某个云服务器的端口,我们需要在这个云服务器上编写一个小小的脚本去创建某个端口,持续监听,可以互相发送数据,这个脚本语言可以是JAVA,也…...

Python之wxPython框架的使用

Python之wxPython框架的使用一、安装wxPython二、创建一个 wx.App 的子类三、直接使用wx.App四、使用wx.Frame 框架五、常用控件1.Static Text 文本类2.TextCtrl 输入文本类3.Button 按钮类一、安装wxPython wxPython是个成熟而且特性丰富的跨平台GUI工具包。由Robin Dunn 和Ha…...

量子密钥分发B92协议——笔记

一、B92介绍 (参照邓富国的博士论文) 1、什么是量子密钥分配(QKD) 通信双方以量子态为信息载体,利用量子力学原理,通过量子信道传送,在彼此之间建立共享密钥的方法。 2、B92协议简介&#x…...

TiFlash 数据校验

本文档介绍 TiFlash 的数据校验机制以及相关的工具。 使用场景 数据损坏通常意味着严重的硬件故障。在这种情形下,即使尝试自主修复,也会使得数据的可靠性下降。TiFlash 默认对数据文件进行基础的校验,使用固定的 City128 算法。一旦发现数…...

C++——优先级队列

目录1.priority_queue的介绍和使用1.1 priority_queue的介绍1.2 priority_queue的使用1.3 在OJ中的使用1.4 priority_queue的模拟实现仿函数/函数对象向上调整向下调整1.priority_queue的介绍和使用 1.1 priority_queue的介绍 优先级队列是一种容器适配器,根据严格…...

文件系统—磁盘、软硬链接、动静态库

文章目录文件系统磁盘的物理结构磁盘的存储结构在一个磁面上寻址在磁盘上寻址磁盘的逻辑结构操作系统进行逻辑抽象的意义磁盘进行IO的文件大小磁盘的分治Super Block(超级块)inodeinode TableData Blocksinode BitmapBlock bitmapGroup Descriptor Table…...

代码随想录算法训练营第六十天|动态规划:647. 回文子串、516.最长回文子序列

【647. 回文子串】这个题目跟以往不一样的地方在于dp数组及下标的含义和遍历的顺序。因为题目是求回文子串的个数,那么dp数组的含义是回文子串的个数无法往后推导。需要根据回文这个特性来定义dp数组。dp[i][j]的含义是区间【i,j】子串是否为回文子串。递…...

C++-继承

文章目录继承切片(赋值兼容规则)继承-作用域隐藏继承-成员函数继承和友元继承和静态成员菱形继承虚继承 virtual public继承-组合要点陈列:继承 继承是使得代码实现最大程度上的复用,是类设计层次的复用 设计一个基础类,将大多数相同属性的放到一个父类…...

Vue:关于插槽的详解

Vue:插槽Slot一、默认插槽1、代码演示2、语法二、具名插槽1、代码演示2、语法3、动态插槽名三、作用域插槽1、渲染作用域2、作用域插槽(实战应用)(1)finalList.vue(2)cardList.vue(3…...

【HDFS】从BlockPoolSlice#createRbwFile到BlockReceiver()

BlockPoolSlice#createRbwFile的过程FsDatasetImpl#createRbw的源码详解需要构造BlockReceiver的几种情况讨论从FsDatasetImpl#createRbw,经过FsVolumeImpl#createRbw,最终会调用BlockPoolSlice#createRbwFile的方法。 看下createRbwFile,主要功能就是在rbw目录下根据block…...

Anaconda搭建TensorFlow2.x

本篇文章介绍如何使用Anaconda快速搭建Python环境下的TensorFlow2.x开发框架 Anaconda搭建TensorFlow2.x过程 关于 Anaconda Anaconda就是可以便捷获取包且对包能够进行管理,同时对环境可以统一管理的发行版本。Anaconda包含了conda、Python在内的超过180个科学包…...

Node.js入门:path 模块学习

前言 上文讲解了 Node.js 的 CommonJS 规范,它主要用来解决模块化的问题。从本文开始将会介绍 Node.js 常用的模块,包括内置模块以及好用,好玩的第三方模块。 本篇简单介绍下 path 模块的用法。 path 模块 path 模块提供了用来处理目录和…...

TCP协议的可靠性

TCP作为传输层协议,提供可靠的传输服务。可靠性:保证消息不重复、不丢失、不乱序。如何保证可靠性:TCP协议依据面向连接、流量控制、拥塞控制特性达到可靠的目的。1 三次握手TCP连接建立使用三次握手,三次握手目的是使双方都得到确认&#xf…...

Java项目——文档搜索引擎

文章目录1. 项目概述2. 准备阶段2.1 项目创建2.2 准备静态页面3. 搜索逻辑4. 分词5. 处理 HTML 文件5.1 枚举文件夹中所有文件5.2 预处理文件5.2.1 获取标题5.2.2 获取 URL5.2.3 获取正文6. 索引6.1 正排索引和倒排索引6.2 往正排索引中添加元素6.3 往倒排索引中添加元素6.3.1 …...