Skip to main content

调用外部接口

1 应用场景

当我们需要调用外部接口查询数据,将此数据作为领域模型中实体的属性的时候。

接口举例如下:

接口地址http://121.36.246.13/55645/time_estimation
发送消息格式json{ "data":{"temperature":"25","humidity":"100","enthalpy":"100"}}
预期接收消息json{ "success": true, "id": "3b1b1000-01ae-11ed-a900-bbf335b075f3", "data": "{\"prediction\":\"70\"}"}

2 领域模型预览

本案例涉及到的领域模型如下:

3 核心逻辑

本次微流需要调用两次外部接口,分别为:

  1. 通过车间号查出车间的温度、湿度、焓值
  2. 通过温度、湿度、焓值查出来预测的开机时间

4 外部接口使用方法

本次需要使用到 REST 服务,详情请点击 REST 服务

核心逻辑 2 中,发送的 JSON 格式如下:

{
"data":{"temperature":"25","humidity":"100","enthalpy":"100"}
}

通过分析发送消息格式,"data"下面嵌套了一个 json 对象,我们需要在领域模型中新建如下非持久化对象,用 data 表示关联关系,嵌套的对象的 key 值要和字段名对应:

也就是当我们发送 JOSN 格式的 post2 对象时,通过名称为 data 的关联关系将车间状态发送过去,post2 的格式将会如下:

{
"data":{"temperature":"xx","humidity":"xx","enthalpy":"xx"}
}

预计接受的 JOSN 格式如下:

{
"success": true,
"id": "3b1b1000-01ae-11ed-a900-bbf335b075f3",
"data": "{\"prediction\":\"70\"}"
}

我们需要新建一个非持久化的实体来接收,以便取出 data 中的信息,如下:

通过新建一个非持久化对象来接受 data 中的信息,键值对应字段名:

注:核心逻辑 1.通过 id 号查出车间状态 同理可得,不再展开

{"data":{"workshop_id":"001"}}

5 逻辑流编排步骤

5.1 逻辑流预览

5.2 参数元件

5.3 检索元件

通过传入的 id 把对应的实体展示出来

过滤条件详情

5.4 创建对象元件

车间对象只有一个 workshop_id 属性,需要初始设置

5.5 创建对象元件

创建 post 对象,使用 workshop 对象覆盖一下关联关系,方能以 post 发送请求时把 workshop 对象也发送过去。

5.6 REST 服务元件

请求地址以字符串的形式输入需要调用的接口地址,请求体以 josn 对象的形式设置为 post,以实体 item 来接受返回值

5.7 复用对象元件

接受 item 返回值之后,将其中的 data 属性取出来,当作 status 实体来复用

5.8 创建对象元件

拿到车间状态数据后,可以通过车间状态的数据再次调用开机时间的接口,需要创建 post 对象

5.9 REST 服务元件

以 json 的形式发送 post2,以实体对象接受返回值

5.10 复用对象元件

把返回值的 data 属性取出来,才是我们需要的数据,所以用 minutes 实体接收

5.11 修改对象元件

至此已经调用了两次 rest 服务,获得了车间状态、预计开机时间的数据,将获得的结果写入对应实体

5.12 结束节点

6 使用方法

6.1 绑定逻辑流

将此逻辑流绑定在车间信息查询页面的查询按钮上

6.2 效果预览

查询之前(上)与查询之后(下)