我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),欢迎关注我的微信公众号 MSFTDynamics365erLuoYong ,回复343或者20190619可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!

前面的博文 通过重复运行的Microsoft Flow由OAuth认证后获取Access Token并将其更新到实体记录 介绍了定期运行的Microsoft Flow,本博文介绍自动运行(监听消息)的Microsoft Flow,基本操作同前面博文的,本博文不再赘述。本文参考了 Dan Mitchell 的文章 Overview of Microsoft Flow's New Word Online Connectors ,还有 Flow to Email PDF from Dynamics 365 using the Word Online Connector ,在此表示感谢。官方的介绍请参考 Word Online (Business) (Preview) ,截止2019年6月19日该Connector还处于Preview阶段。

我这里的场景用户在Dynamics 365中修改联系人的重要信息后,自动触发Microsoft Flow运行,将联系人的重要信息做成PDF文档,并发送给联系人邮箱和指定的邮箱(比如系统管理员)。

首先我们需要准备一个word文档,做好样式,然后将动态填充部分转换为 Content Control,显示Developer的方法请参考我的博文:Dynamics CRM 2015/2016新特性之七:有了文档模板,打印分析So Easy ,然后选中要动态填充的文本,点击 Aa 这个 Plain Text Content Control 图标。

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

 

然后将其上传至Sharepoint的某个Site中,我这里上传位置如下:

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

 

然后我们就可以开始创建Microsoft Flow了,登录 https://flow.microsoft.com 后,新建 Automated - from blank 类型的flow:

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

 

 然后我们需要选择下触发器,我这里用字段值变更来触发,所以选择的触发器是 Common Data Service这个类别中的 When a record is updated ,如下:

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

 

触发器设置如下,记得点击 Show advanced options 来设置哪些字段的变更触发该Microsoft Flow的运行,这个和Dynamics 365 Customer Engagement中的工作流触发机制差不多.

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

 

我这里设置了下面四个字段值的变化触发该Microsoft Flow的运行:

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

 

然后新增一个步骤, 选择 Word Online (Business) 这个类别下的 Populate a Microsoft Word Template (Preview) 这个action.

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

 

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

 

 这个步骤设置的值如下,可以看到会自动检测到 content control,我这里用当前记录的对应字段值来填充.

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

 

为了每次生成的PDF都有个唯一的名字,我这里获取当前utc时间转换为北京时间用来做文件名的一部分,增加一个Date Time这个类别下的 Convert time zone这个action:

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

 

该步骤的设置如下:

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

 

再增加一个OneDrive for Business下面的Create file步骤:

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

 

该步骤设置如下,值得注意的是 File Content要选择前面步骤的 Microsoft Word document, File Name字段要包括文件名称和文件后缀.docx, 我这里使用表达式来给文件名称赋值为 concat(triggerBody()?['contactid'],'_',body('Convert_time_zone'),'.docx') 

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

 

 然后再增加一个 Word Online类别下的 Convert Word Document to PDF的action.

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

 

设置的值如下,注意File选择前面步骤的 Path 属性.

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

 

如果这个步骤用SharePoint而不是OneDrive,那么设置如下:

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

 

最后我们创建一个Office 365 Outlook下面的 Send email action.

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

 

设置的属性值如下,注意附件 Attachments Content的内容要设置为前面 Convert Word Document to PDF步骤的 PDF document属性. 附件的名称我用的还是表达式, 这里使用的是 concat(triggerBody()?['contactid'],'_',body('Convert_time_zone'),'.pdf') 

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

 

保存工作流后进行测试,测试成功,OneDrive中新增了如下的word文件:

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

 

打开该word文档如下:

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

 

邮件也收到了,PDF附件预览如下,生成的PDF样式还不错.

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