写点什么

在 Logic App 中使用内联脚本获取最新的数组项

  • 2020-03-30
  • 本文字数:1882 字

    阅读完需:约 6 分钟

在Logic App中使用内联脚本获取最新的数组项

在我的上一篇文章中,通过组合使用Select动作Filter动作,我们已经了解了如何使用Logic App工作流来获取一个数组中的最新的项。事实上,虽然这种做法是可行的,但它仅适用于一些特定的使用情况,对大多数情况来说,这个解决方案有点棘手。但是,有一个预览功能:内联 JavaScript 代码动作,可以方便地对数组排序。在这篇文章中,我将讨论如何使用内联 JavaScript 代码动作排序数组项,并获取 Logic App 工作流中的最新的项。

集成账户

为了使用这个内联 JavaScript 代码动作,我们必须提供一个集成账户实例。集成帐户有三种定价层 - 免费、基本和标准。对于我们的例子来说,免费的已经足够了。


一旦提供了集成帐户实例,将其与现有的 Logic App 实例连接起来以使用动作。


JavaScript 支持

目前,该动作仅支持 node.js 8.11.1内置函数。我们无法通过npm导入外部库。因此,我们不能依赖于任何require()语句。所有内容必须被包含在该动作中。

内联 JavaScript 代码

让我们来看看下面的 JavaScript 代码。它不涉及 Logic App,只是纯 JavaScript 代码。如果您在 node.js 的控制台运行这段代码,它将返回20191104.json最新的文件路径值,这也是预期的值。 JavaScript 的数组排序功能需要一个单独的回调函数,其中包含排序逻辑。


"use strict";
var items = [ {"Name": "20191101.json","Path": "/path/20191101.json" }, {"Name": "20191102.json","Path": "/path/20191102.json" }, {"Name": "20191103.json","Path": "/path/20191103.json" }, {"Name": "20191104.json","Path": "/path/20191104.json" }];
var sorted = items.sort(function (a, b) {var dateA = a.Name.replace('.json', '');var dateB = b.Name.replace('.json', '');
// dateA is later than dateB: dateA gets the lower index.if (dateA > dateB) {return -1; }
// dateA is older than dateB: dateB gets the lower index.if (dateA < dateB) {return 1; }
// dateA and dateB is the samereturn 0;});
var result = sorted[0].Path;
console.log(result);
复制代码


回调函数 应该 返回-101


  • 返回 -1 表示,在数组元素 ab 中,a 会被排列到 b 之前。

  • 返回 1 表示 b 会被排列到 a 之前。


因此,回调函数把 abName 属性值去掉 .json,将这两个值进行相互比较,较大的值位于数组项的上部位置(即较低的索引)。换句话说,数组项以降序进行排序。


如果你想知道更多有关排序的信息,请参考此页面


现在,让我们将这个代码应用到 Logic App。

内联 JavaScript 代码动作

让我们添加一个内嵌JavaScript代码动作。



然后进入动作的 JavaScript 代码。这几乎等同于上面的例子,但有两个地方有所不同。


"use strict";

// Assign the array value from the output of the previous action, `List Backups`.var items = workflowContext.actions.List_Backups.outputs.body.value;

var sorted = items.sort(function (a, b) { var dateA = a.Name.replace('.json', ''); var dateB = b.Name.replace('.json', '');

if (dateA > dateB) { return -1; }

if (dateA < dateB) { return 1; }

return 0;});

var result = sorted[0].Path;

// Returns the result as output.return result;
复制代码


  • items 变量获取上一个操作——List Backups的输出值作为数组项。

  • 在最后一行,它使用了 return 语句把动作的结果发送到 outputs 值。


如果我们想引用这个动作的结果,这个工作流中的任何之后的动作都可以使用outputs('ACTION_NAME')?['body']

比较

现在,我们只使用这种内联 Javascript 代码动作来解决排序问题。让我们来比较一下相同的结果,请参考上一篇文章与下面的图片。



右侧是我们在上一篇文章中创建的。至少我们 应该 同时使用从备份中选择文件名动作(Select)和获取最新备份动作(Filter)。如果我们希望有一个更优雅的方式,需要在之前和之后有一些额外的动作。


另一方面,如果我们使用内联 JavaScript 代码动作,如左侧所示,我们只需要一个动作。


但有一点需要注意。我们必须有与使用该内联代码动作相关联的集成账户。集成账户的固定价格相当昂贵——US 986.4 (标准) 每月。如果您的组织已经使用集成帐户,那没问题。然而,如果还没有,您 应该 非常小心您的账单。


到目前为止,我们已经了解如何使用内嵌 JavaScript 代码动作在 Logic App 工作流内排序数组项。它功能强大,但价格昂贵。因此,只有当您的组织能够负担成本时,再使用它。


原文链接https://devkimchi.com/2019/11/14/getting-the-latest-array-item-with-inline-script-in-logic-app/


2020-03-30 19:142446

评论

发布
暂无评论
发现更多内容

Dubbo 中 Zookeeper 注册中心原理分析

小小怪下士

Java zookeeper dubbo

开源机器学习软件对AI的发展意味着什么?

OneFlow

人工智能 深度学习 开源

升哲科技荣获2022年度华夏建设科学技术奖二等奖

SENSORO

关于 NGINX Kubernetes Gateway,你需要知道的 5 件事

NGINX开源社区

nginx NGINX Ingress Controller NGINX Kubernetes Gateway 企业号 2 月 PK 榜

泛娱乐社交出海解决方案技术实践

网易云信

即时通讯IM 音视频技术

云小课|创建DDS只读节点,轻松应对业务高峰

华为云开发者联盟

数据库 后端 华为云 企业号 2 月 PK 榜 华为云开发者联盟

便捷模型迭代优化,算法模型支持更新到已部署服务、已有项目|ModelWhale 版本更新

ModelWhale

人工智能 机器学习 数据分析 团队协同 编程建模

还在用 OpenFeign?来试试 SpringBoot3 中的这个新玩意!

江南一点雨

spring springboot

JavaScript使用URL用来解析处理URL

ModStart

“一键”模型迁移,性能翻倍,多语言AltDiffusion推理速度超快

OneFlow

人工智能 深度学习

系统运维 SysOM profiling 在云上环境的应用观测实践 | 龙蜥技术

OpenAnolis小助手

开源 cpu 系统运维 profiling 龙蜥技术

Kratos微服务工程Bazel构建指南

微服务 CMS Kratos Monorepo bazel

Getaverse 1月总结 | 节点数突破6200+

Geek_Web3

#区块链# 元宇宙 web3

新思科技:数字赋能,安全先行

InfoQ_434670063458

如何又快又好实现Catalog系统搜索能力?火山引擎DataLeap这样做

字节跳动数据平台

大数据 数据治理 数据研发 企业号 2 月 PK 榜

巧用Golang泛型,简化代码编写

百度Geek说

Go golang 企业号 2 月 PK 榜

上新啦|请查收StarRocks 2.5 LTS 版本特性介绍

StarRocks

数据库 大数据

对话 BitSail Contributor | 梁奋杰:保持耐心,享受创造

字节跳动数据平台

GitHub 开源 数据引擎

打通对账的最后一公里——对账管理平台

元年技术洞察

数字化转型 对账 对账系统 方舟平台

下一代编解码技术Ali266在视频超高清领域的应用展望

阿里云CloudImagine

云计算 Ali266 超高清

八股文的天花板,没到35k的Java开发都值得好好读一读

程序知音

java面试 后端技术 八股文 Java面试八股文 Java构架师

如何快速完成API设计,mock数据给到前端?

不想敲代码

APi设计 apipost API调试

测试开发 | AppCrawler 自动遍历测试实践(二):定制化配置

霍格沃兹测试开发学社

一文带你掌握物联网Mqtt网关搭建背后的技术原理

华为云开发者联盟

后端 物联网 华为云 企业号 2 月 PK 榜 华为云开发者联盟

Apache Kafka入门级教程原创

宋小生

kafka Kafka Producer

利器 | AppCrawler 自动遍历测试工具实践(一)

霍格沃兹测试开发学社

测试开发 | AppCrawler 自动遍历测试实践(三):动手实操与常见问题汇总

霍格沃兹测试开发学社

泛娱乐社交出海解决方案技术实践

网易智企

即时通讯IM 音视频通话

云原生场景下实现编译加速

京东科技开发者

Java golang 缓存 编译 企业号 2 月 PK 榜

StarRocks荣获2022年度最具潜力数据库奖

StarRocks

数据库 大数据

在Logic App中使用内联脚本获取最新的数组项_文化 & 方法_Azure 中文精选_InfoQ精选文章