• 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属性
    

    参考

  • 相关阅读:
    如果用 索引的话,这个太不方便了,草,
    nslocal notification
    夜半三更,
    别人写的 代码,
    账目
    view 关于 controller的代理
    浅谈GFC
    浅谈IFC
    浅谈BFC
    JS ES6中的箭头函数(Arrow Functions)使用
  • 原文地址:https://www.cnblogs.com/harrychinese/p/camunda_11_connector.html
Copyright © 2020-2023  润新知