作者:陈希章 发表于 2017年12月15日

前言

纵观一下我们周围的世界,以及我们每天忙忙碌碌的工作,你会“惊奇地”发现它们都是一个事件接着一个事件发生的。例如,我每天早上起来,一打开亲爱的手机,就会收到一封邮件,告诉我说今天9点要交个材料,然后11点又有个con-call,下午可能还要拜访一个客户之类的。每一天,每一周几乎都是如此,就连每个月也总有那么几次 —— 要交各种费用,还各种卡的额度。我并不是说我有多忙(这不重要),我只是说,我们很多时候以为有能力控制生活变成我们想要的样子,但事实上,我们大部分时候是在响应一个一个的事件 —— 换言之,我们其实在一个一个流程里面。

所以,人、物、事件和流程,构成了精彩纷呈的世界,但我不准备就这个高大上的话题扯太远了。我们今天要谈的是,在IT的世界里面,我们怎么样把各种奇形怪状的应用系统,各种事件和流程无缝地整合起来,并且让它能更好地帮助人们又好又快地完成工作。

这不是一个新话题了。在近二十年以来,有大量的工作流引擎(Workflow Engine),BPM 或 EDI 系统不断涌现,在企业级市场上也曾风起云涌,各领风骚。不过,随着云和移动互联网时代的到来,它们或多或少都受到一些挑战和冲击。在这一波新的浪潮中,ifttt无疑是站在浪尖的那一个,风头一时无两。ifttt = if this, then that,很好地诠释了它的精髓。

微软在企业级领域有Biztalk这样的BPM服务器,也有Workflow Foundation这样的系统层面的工作流能力,在SharePoint Server中内置了Workflow Foundation的支持。与此同时在云平台蓬勃发展的当下,又重新开发和打造了一个全新的流程平台,并且冠名为Microsoft Flow,它既有类似于ifttt的强大和灵活架构,也继承了微软多年的企业级服务的基因,在团队协作、与企业内部应用集成以及安全性等方面有一些自己的特点。

在微软的产品命名传统中,能直接冠以Microsoft作为名称一部分的,其实是不太多的,由此可见,Microsoft Flow 的价值和地位。

如果你有Office 365或者Dynamics 365的账号,你或许已经拥有了Microsoft Flow,你当然也可以自行申请免费版(注意,是真正免费,不是试用版)和收费版本,详情请参考: https://flow.microsoft.com/en-us/pricing/

本文将包括如下内容,我相信会对大家了解Microsoft Flow 会有帮助:

  1. 通过Microsoft Flow实现特定邮件的附件自动保存到SharePoint Online文档库中

  2. 实现周期性执行的流程
  3. 实现用户手工启动的流程
  4. 在 PowerApps 里面操作引发的流程
  5. 通过 Power BI 警报引发的流程

通过Microsoft Flow实现特定邮件的附件自动保存到SharePoint Online文档库中

这种基于事件的流程处理,可能是Microsoft Flow中最为常见的。这是我们部门在用的一个真实案例,我大致介绍一下场景:我们每周会收到内部同事发送过来的一个邮件,通常都带有一个附件(名称是 Office 365 周报.xlsx)。与此同时,我们又希望这些附件,能以固定命名规则保存在团队网站的某个文档库中,这样我们所有人就随时可以集中看到所有的周报。我们希望这个动作能自动实现,无需人为地操作。

从Microsoft Flow的角度来看,这样的流程简直是太合它的胃口了,你甚至都可以直接用它的模板实现。请登陆到 flow.microsoft.com 后,搜索“附件”这个关键字,你可以看到有好多的模板列出来:

我们要的其实就是第一排的第三个模板

设置好你的账号信息,然后点击“继续”按钮,设置一下你需要监控的邮箱文件夹,以及要保存的SharePoint Online团队网站以及文档库位置。

等一等,我们如何去设置条件呢?毕竟我们只是想监控带有附件,而且附件名为“Office 365 周报.xlsx”这样的邮件呢。通过点击下面的加号,选择“添加条件”即可实现这个功能

下面是我编辑好的一个流程,带有两个条件分支,只有两个条件都满足的话,我才会在SharePoint Online 相应的文档库创建文件,而且文件名是自动加上了时间戳的,这样确保不会重复(默认情况下,如果文件名重复的话,Microsoft Flow会自动覆盖掉原文件)

保存这个工作流,然后模拟发送一个邮件,我很快就能看到SharePoint Online的文档库中已经自动创建了一个文件

如果你对这个流程的执行细节有兴趣,可以回到工作流的视图查看运行记录

点击某一个运行记录,可以看到细节


如果某次执行失败,你将收到一封邮件,而且可以在这个界面重新提交流程执行。

到这里为止,我们已经创建了一个简单但实用的流程,它会自动监控我的邮箱的收件箱,如果邮件带有附件,并且附件名是“Office 365周报.xls”的话,就将此文件加上时间戳保存到我指定的SharePoint Online文档库中去。如果你觉得这个想法还不错,你还可以分享给其他同事使用呢。

对于复杂一些的流程,Microsoft Flow支持多人共同编辑


周期性执行的流程

上面这种场景是根据某个事件来触发Microsoft Flow,这当然是最常见的,但还有一种情况也比较普遍,那就是周期性执行某个流程,例如每个月从SharePoint Online的列表中导出一批数据,生成一个Excel文件,然后发送给某个邮箱。这样要怎么实现的呢?流程的细节我这里不准备展开,但我要提示的是最关健的一个操作,就是如何设置周期性执行流程。

其实并不难,你只需要将一个特定的触发器放在流程的第一步就可以了。

选择“计划”这个触发器,进行必要的设置


用户手工启动的流程

Microsoft Flow是如此的简单易用,以至于我们不再满足于将其定义为仅仅在后台执行自动化任务(就像上面提到的两种情况一样),有没有可能定义一个流程,然后由我们自己想什么时候执行就什么时候执行呢?打个比方说,电脑开机其实就是一个流程,但我不想它每次都自动开机,而是由我按下开机按钮后才开机。

我很喜欢上面这个比喻,毕竟这样一来,作为人类我们似乎也多少能找回了一些控制世界的尊严和自豪感。不管怎样,Microsoft Flow确实实现了类似的机制,而且名称就叫“按钮”。

我们先来看第一种,它允许用户在Microsoft Flow的移动App中,通过一个按钮执行某个流程。例如我简单设计一个流程,让用户输入几个参数后,Microsoft Flow给我的邮箱发一个邮件。

在Microsoft Flow的移动App里面,有一个专门的分类:Buttons

点击第一个按钮,会进入一个输入参数的界面

挺有意思的对吧?试想一下,你可以通过一个按钮发邮件,当然也可以通过它来开启你家里的空调。为什么不呢?

截至目前为止,Microsoft Flow的移动App,还只是在测试版,除了微软员工可以使用dog food版本以及部分App Store可以下载外,中国用户还不能下载。详情请关注:下载地址

在PowerApps里面操作引发的流程

在上一个场景中,包括我在 PowerApps 进阶篇 中我都提到了PowerApps可以和Flow结合起来实现强大的功能,到底怎么做的呢?这里我将揭晓谜底。

首先,PowerApps的应用提交的数据,也许是保存在Excel文件中,或者SharePoint Online的列表中。它只管那样做就好了。Flow 这边能监控Excel或者列表的变化,然后自动地在后台执行任务。这种情况下,PowerApps和Flow其实是松耦合的,没有任何直接联系的,这可能是最好的一种方式吧。

但是,我们确实能实现在PowerApps中直接发起Flow的流程。这个要分两步来走:

第一,创建一个可以从PowerApps中调用的流程。这里的关键是触发器是“PowerApps”,其他部分没有什么特别需要注意的。

第二,在PowerApps的应用中启动流程。其实很简单,放一个按钮,然后在Action中选择“Flow”,此时会弹出一个面板,让你选择一个流程。

如果我们需要输入参数怎么办呢?这里有一个非常有意思的设计,是在Flow的设计器中,你可以选择一个你希望接受参数的位置,然后选择“在PowerApps中提问”,这样它就会生成一个上下文变量出来,如下图所示

然后,在PowerApps中,执行Run这个方法的时候,就可以指定邮件主题了。你肯定已经猜到了,这个参数可以定义任意多个,这真是太强大了。

通过Power BI 警报引发的流程

本文的最后我还要介绍一下如何在PowerBI中集成Flow来实现自动化。Power BI是新一代的智能数据分析和可视化的工具,一经发布就受到了广泛的关注和好评,目前稳居Gartner魔力象限的领导者象限。下图是一个典型的Power BI 仪表盘,用来分析零售门店的业绩。

今天不会对于Power BI的细节进行展开,我只提一个很有意思的功能:假设我是一个销售总监,我希望能监控到这个仪表盘上面的一些关健指标,当它们发生变化,尤其是我不希望看到的一些变化(例如销售额下降明显)时,我能自动得到一些通知,我该怎么办呢?我是24小时不吃不睡地守在电脑前面刷这个仪表盘吗?当然不能,Power BI提供了一个警报的功能,可以让用户自己定义需要监控的指标,并且定义发除警报的动作,默认情况下,它可以给用户发一封邮件。创建警报很简单,在某个磁贴的右上角点击,会出现一个菜单。

点击“管理警报”,然后点击“添加警报规则”

细心的你估计已经发现,在这个界面的右下方,其实有一个链接:“使用 Microsoft Flow 触发其他操作”,点击之后会调到Microsoft Flow的界面,并自动选择好了一个模板,你要做的就是设置一些账号即可。

接下来你就可以发挥想象力定制这个流程吧,只要你愿意,你可以做的很复杂。不过,作为一个销售总监,你的成功之道可能是要赶紧去跑到门店现场去了解情况,所以关于这里面的更多的技术细节我就不多跟你展开了吧。

Microsoft Flow 概览的更多相关文章

  1. Dynamics 365触发Microsoft Flow自动生成PDF并作为附件送邮件

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  2. 通过重复运行的Microsoft Flow由OAuth认证后获取Access Token并将其更新到实体记录

    我是微软Dynamcis 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  3. Create and test an approval workflow with Microsoft Flow

    https://docs.microsoft.com/zh-cn/flow/getting-started https://docs.microsoft.com/en-us/flow/modern-a ...

  4. Common Data Service (CDS) 初探

    作者:陈希章 发表于 2017年12月16日 前言 Common Data Service(以下简称为CDS),通用数据服务是一个创新性的基础功能,这是微软试图打造一个全新的基于SaaS模式的数据服务 ...

  5. PowerApps和Flow,Power BI开发

    为PowerApps和Flow,Power BI开发自定义连接器 作者:陈希章 发表于 2017年12月20日 前言 我在之前用了几篇文章来介绍新一代微软商业应用平台三剑客(PowerApps,Mic ...

  6. Introduction to Microsoft Dynamics 365 licensing

    Microsoft Dynamics 365 will be released on November 1. In preparation for that, Scott Guthrie hosted ...

  7. 为PowerApps和Flow,Power BI开发自定义连接器

    作者:陈希章 发表于 2017年12月20日 前言 我在之前用了几篇文章来介绍新一代微软商业应用平台三剑客(PowerApps,Microsoft Flow,Power BI),相信对于大家会有一种跃 ...

  8. Dynamics 365 Online-Microsoft Flow

    自December 2016 update for Dynamics 365 (online)之后的Online版本,Dynamics 365有了个新Feature:Microsoft Flow Co ...

  9. 文末两大福利 | 微软Inspire大会全接触:微软发布Microsoft 365......

    在7月11日举行的“Inspire年度合作伙伴大会”上 ,微软首席执行官萨提亚·纳德拉发布了Microsoft 365. 它包含了:Office 365.Windows 10和企业移动性+安全性(En ...

随机推荐

  1. Android_简易的短信发送器

    这个随笔将介绍如何完成一个简单的第三方的短信发送器(不打开短信界面,调用android的api完成功能) 1.首先,我们来做布局 由于我这里写的是一个简易的,,短信发送,所以只是一个LinearLay ...

  2. Eddy's picture(最小生成树)

    Eddy's picture Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...

  3. jQuery基础应用

    什么是 jQuery ? jQuery是一个JavaScript函数库. jQuery是一个轻量级的"写的少,做的多"的JavaScript库. jQuery库包含以下功能: HT ...

  4. 「设计模式」JavaScript - 设计模式之单例模式与场景实践

    单例介绍 上次总结了设计模式中的module模式,可能没有真真正正的使用在场景中,发现效果并不好,想要使用起来却不那么得心应手, 所以这次我打算换一种方式~~从简单的场景中来看单例模式, 因为Java ...

  5. linq中怎么实现多条件关联的左右连接

    linq左右连接最重要的是DefaultIfEmpty()这个方法和join之后的表中判断是否( temp != null)null,左右连接其实就是表的位置互换. 1.左连接: && ...

  6. Vue.js优雅的实现列表清单

        一.Vue.js简要说明 Vue.js (读音 /vjuː/) 是一套构建用户界面的渐进式框架.与前端框架Angular一样, Vue.js在设计上采用MVVM模式,当View视图层发生变化时 ...

  7. Linux ext2文件系统之初步思考

    数据存放在磁盘中,磁盘最小存取单位sector(512Byte);文件系统中存储的最小单位是 块(Block),大小通常(1KB,2KB,4KB...), 一个block对应多个sector,因而可用 ...

  8. 在moba游戏里面模拟实现绝地求生毒雾圈功能

    ---恢复内容开始--- 已经有很长一段时间没做项目了上半年大多数时间都荒废在王者荣耀,哈哈,S8赛季也上了王者,美滋滋 转回正题,公司需要开个新项目,需要把原有的moba游戏,改成类似绝地求生那玩法 ...

  9. 获取IP-linux(经典-实用)

    Linux系统获取网卡ip 1.正宗的有6种取ip的方法 sed(3) +awk(2)+egrep(1) sed(替换):   ( )\1   [^0-9.]   掐头|去尾 awk(分隔符):   ...

  10. python进阶---Python中的socket编程

    初识socket编程 一.前言 socket基于C\S架构(客户端\服务端)的编程模型,在Python中是以socket模块存在的. Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是 ...