Azure Logic App——结合DevOps做一个任务定时检查提醒工具


今天我们的主题是Azure Logic Apps

 

Azure Logic Apps 是什么?

官方解释https://docs.microsoft.com/zh-cn/azure/logic-apps/logic-apps-overview

Azure Logic Apps一项云服务,用于在需要跨企业或组织集成应用、数据、系统和服务时计划、自动执行和协调任务、业务流程和工作流。逻辑应用可简化可缩放解决方案的设计和生成方式,适用于应用集成、数据集成、系统集成、企业应用程序集成 (EAI) 和企业到企业 (B2B) 通信,不管是在云中还是在本地。

 官方的解释果然...很....官方呢😀

 

我的大白话(片面的)理解:

云平台提供了一个可视化的应用操作界面(逻辑应用设计器),你可以在里面找到你需要的功能模块,然后把这个模块添加到你的逻辑流程图中,就好像拼拼图,最终拼成你想要的图案就好了(实现你的业务逻辑)。我觉得好处在于不用在代码编辑器里进行辛苦的一行一行地敲代码了。(当然一些复杂的逻辑还是需要你写一个Function(也相当于一块拼图),完成你的Function后再把它拼进来就好了)。

  

实际应用:

我们公司每周五都有一次获得免费午饭的机会,但前提是你需要完成以下的任务:

1. 回复老板的邮件(每周五我们的老板会发送一封邮件,会分享一个他觉得有意思的主题,然后让你回复邮件分享你的看法)

2. 在工时系统中填写自己本周的客户工作时间

3. 学习一条员工守则

 

这里的逻辑应用流程图整体如下:

 

最近呢,我们公司的DevOps敏捷跑的不是很好,导致我们在周会的时候燃尽图趋于诡异(像不像你妈打你时用的拖鞋..)

 

这个时候Jerry大佬提出了每人轮流监督大家,每日规范的将自己任务拖入In Progress,下班前In Progress板块中不能有任何待完成任务。

本周轮到我监工了,拯救人类的重担就压在了我肩上。

监督?监督是不可能监督的,这辈子都不可能监督的!

 

 

作为一个刚刚进入IT圈不久的程序猿,当我正在厕所里看着掉落的头发,思考着明天是不是要去买一些枸杞泡咖啡的时候,一个灵感突然闪现撞向我的锃亮的脑门——是时候把玩一下Logic Apps了!

 

需求整理:

1. 每日9:30,13:30检查每个人的任务列表是否有In Progress的任务,如果没有则发送提醒邮件

2. 每日17:50(下班前10分钟)检查每个人的任务列表是否还有In Progress 的任务,若有则发送(祖安人)问候邮件

(注:这里暂时只演示第二点,逻辑上差别不大,做了第二点就知道怎么做第一点了....)

 

实现过程:

首先你需要创建一个新Logic App,以及一个新的资源组(resource group),命名为ssw-reminder。

 

 

点击review+create 完成你的应用创建

 

 

创建完毕后点击进入你的Logic App,选择添加Blank Logic App

 

这时候你已经进入了Logic app designer,搜索recurrence(允许你定期的触发你的服务)

 

按照我们的需求每周一到周五(工作日)17:50都会执行检查任务

Preview里会显示当前任务会被触发的周期

 

点击触发模块下的加号按钮,添加新的action

 

由于我们需要对接的是DevOps,Azure提供了DevOps的连接器

 

选择Azure DevOps的应用之后他会需要你登陆你的DevOps账号,并授权查看与更新的权限,这里不截图了,点击“Accpet” 接受即可

选择Get query results应用

 

填写你们的项目和名称

 

 

这里我们发现我们需要一个Query Id,我们需要去DevOps 创建一个你需要的Query,然后应用到Logic App中

筛选出本周的所有任务,我们可以看到当前列表中存在2条In Progress 的任务,命名这个查询为WeeklyWorkItems

 

当然你可以添加State = In Progress的条件,显示为如下:(这里暂时还是保存上面的查询内容)

 

保存你的查询至My Queries文件夹中(当然你也可以新建一个文件夹保存所需的查询)

这时候返回你的Logic App Designer中,你就会发现你新建的查询出现在列表中了

 

选中你的最新查询WeeklyWorkItems

点击"加号 "新建一个action,进入下一步 (可以点击左上角的Save按钮进行保存,保证你的逻辑应用没有出现错误)

 

这时候,需要添加你的逻辑板块了,For each (需要遍历你在上面拿到的所有结果,发送给每一个用户)

 

选择DevOps 连接器动态内容value

 

在For each板块中添加action,搜索condition(用于条件判断,满足条件则发送邮件)【当然如果你在query中添加了State=In Progress的条件的话,这里就不需要添加这一步了】

 

判断State是否等于In progress

如果当前的状态为In Progress 的话 就发送邮件

在If true 模块中点击Add an action,搜索 outlook

 

点击后 登陆你的邮箱:

 

完成登陆后,搜索 send an email 执行发送邮件模块

 

填写邮件的内容,暂时只先发送到我自己的邮箱(如果你需要发送到对应负责人的邮箱,可以将Assign To参数填写到To中去)

 

点击Save,当任务显示Success的时候你就可以运行你的Logic App 服务啦!

注:如果你当前时间和你设置的任务启动时间差很远,你可以直接点击OverView页面的Run Trigger 按钮直接触发任务

 

接下来你就可以收到邮件啦!!

 

查看运行结果:

当然你可以在OverView页面查看到你的任务运行情况:

 

可以通过点击具体的一条,查看运行详情,我们可以看到每一个步骤运行所消耗的时长,在更加复杂的应用中我们可以直观的看到每一个模块花费的时间,然后对症下药,做一些优化处理.....

 

posted @ 2020-04-02 13:31  sukidagala2018  阅读(585)  评论(0编辑  收藏  举报