企业在业务安全与数据合规过程中有哪些实践与挑战?戳此了解 了解详情
写点什么

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

  • 2020 年 3 月 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 年 3 月 30 日 19:14219

评论

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

如何在数智化时代少走弯路? 这里有100个案例可以借鉴

京东科技开发者

DevOps 云原生

搭建网站/APP最全准备攻略

前嗅大数据

小程序 建站 APP发布

附PPT丨AI和云原生时代的数据库进化之路

dbaplus社群

数据库 云原生

静态代码分析工具评估指标及方法

maijun

自建本地电话告警系统

周楠

运维 物联网 监控告警

传统巨头抢占区块链场景高地 医疗、汽车、金融成为热门赛道

CECBC

区块链 金融

Apache顶级项目ShardingSphere — SQL Parser的设计与实现

京东数科风险算法与技术

数据库 开源 中间件

大咖直播 | Elasticsearch 应用监控管理平台搭建实战

腾讯云大数据

大数据 elasticsearch Elastic Stack 监控管理平台

几种常见的研发管理体系,哪种更适合你?

菜根老谭

敏捷开发 研发管理 CMMI IPD

信任的传递——为什么我们需要第三方授权?

Thoughtworks洞见

证书 身份认证

第13周作业

饭桶

面向全场景模块化设计 京东智联云的服务器部署有多灵活?

京东科技开发者

服务器 云主机

云原生架构-可观测性之 Prometheus 服务自动发现

云原生实验室

一文为你详解Unique SQL原理和应用

华为云开发者社区

数据库 sql unique

即构实时音视频多中心调度设计

ZEGO即构

Java中多线程安全问题实例分析

叫练

Java 多线程 什么是多线程 多线程与高并发

EMAS远程日志 - 移动端问题排查利器

移动研发平台EMAS

阿里云 运维 日志 监控告警 应用

Shell脚本命令常用技巧

MySQL从删库到跑路

shell脚本编写

图文回顾丨北京「解构云原生:企业数字化转型新支点」沙龙

Rancher

k8s rancher

云图说 | 云上资源管控有神器!关于IAM,你想知道的都在这里!

华为云开发者社区

服务 权限管理 iam

浅谈JDK并发包下面的分治思想及分治思想在高并发场景的运用

AI乔治

Java 架构 jdk 分布式 多线程与高并发

Elasticsearch 新机型发布,性能提升30%

腾讯云大数据

大数据 elasticsearch Elastic Stack

太赞了!滴滴开源了一套分布式ID的生成系统...

Java架构师迁哥

云南区块链电子发票全面推广啦!

CECBC

区块链 纳税人

建信金科大咖访谈:金融衍生品定价与建行实践

金科优源汇

金融科技 金融创新

AWS 助力贝壳VR看房走出国门,升级全球居住服务新体验

亚马逊云科技 (Amazon Web Services)

AWS

记一次MapReduce的内存溢出

AI乔治

Java mapreduce 架构 内存溢出

第十三周学习总结

饭桶

一口气说出四种幂等性解决方案,面试官露出了姨母笑~

不才陈某

Java 分布式 接口

住建部等六部门:广泛运用区块链等技术,建设智慧物业管理服务平台

CECBC

物业生活

VACUUM无法从表中删除死元组的三个原因

PostgreSQLChina

数据库 postgresql

WAVE SUMMIT 2022 深度学习开发者峰会

WAVE SUMMIT 2022 深度学习开发者峰会

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