我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),欢迎关注我的微信公众号 MSFTDynamics365erLuoYong ,回复395或者20200224可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!
Dynamics 365 Customer Engagement已经强烈推荐使用Power Automate代替Workflow,我这篇文章主要收集常见的问题做解答。
1. Power Automate如何调用Dynamics 365 Customer Engagement中的操作(Action)?
可以登录 https://make.powerapps.com/ 或者 https://flow.microsoft.com ,打开左边的Solutions ,新建或者打开已有Solution。
然后新建Flow。
调用操作时候,注意Connector 要选择 Common Data Service (current Environment ).
然后可以选择 Perfrom a bound action 或者 Perform an unbound action 进行调用即可。如果选不到,确认action已经激活,然后看看 https://***.crm.dynamics.com/api/flow/openapi 这个url访问是否报错。
2. 如何获取选项集字段的显示文本。
我开始以为直接查询的时候获取不到,以为只能获取到存储值,后来经高人指点是可以的。
之前我的方法很笨,就是再查询一次stringmap实体,比如 https://***.crm.dynamics.com/api/data/v9.1/stringmaps?$filter=objecttypecode eq 'ly_demo' and attributename eq 'statuscode' and langid eq 1033 and attributevalue eq 1 。
更好的办法是直接从返回的body中获取值,注意选项集字段若为statuscode,需要写成 _statuscode_label。
需要使用表达式输入,例如: triggerOutputs()?['body/_lvo_addresschangetype_label'] ,当然不要全部手写,可以选一个字段值,然后修改获取的字段值即可。
3.如何判断选项集字段是否有值。
如果用选项集字段值来做check的话,他只有整数类的比较符号,没有是否为空的判断方法。
我的做法就是声明一个文本类型的变量,把这个选项集字段值复制给这个变量,然后如果这个变量值不等于 "" 则是有值(检查是否等于空字符串),否则就是无值。
4.如何获取当前环境的base url。
这个url很重要,我们在邮件或者别的地方插入链接让用户可以点击打开Dynamics 365的记录就需要这个。
参考文章 Quick Tip: CDS Base URL in Flow 可以知道从前面的查询中获取body中的@odata.id元素的值,然后分割下获取第一元素值即可,表达式类似:
first(split(outputs('Get_Creators_primary_emailaddress')?['body']['@odata.id'],'/api/')) 。
我一般用一个变量将这个值保存起来,假设变量名是CurrentEnvBaseUrl ,那么插入url使用的表达式就类似:
concat(variables('CurrentEnvBaseUrl'),'/main.aspx?pagetype=entityrecord&etn=ly_demo&id=',triggerOutputs()?['body/ly_demoid'])
Power Automate中可以用到的函数参考文档:Reference guide to using functions in expressions for Azure Logic Apps and Power Automate
Dynamics 365 Customer Engagement通过URL打开记录,窗体,视图等请参考官方文档: Open forms, views, dialogs, and reports with a URL