Common Data Service (CDS) 初探
作者:陈希章 发表于 2017年12月16日
前言
Common Data Service(以下简称为CDS),通用数据服务是一个创新性的基础功能,这是微软试图打造一个全新的基于SaaS模式的数据服务平台,一方面整合Office 365和Dynamics 365的数据(虽然现在还没有做到),与此同时,支撑以PowerApps,Microsoft Flow,Power BI为核心的商业应用服务。下面这个图可以清晰地看出它们之间的关系:
CDS最早是作为PowerApps的一部分进行开发的,所以到目前为止,CDS的管理界面都是集成在PowerApps中的,每个PowerApps的环境可以对应一个CDS数据库。
CDS正式GA的时间是2016年10月份。请参考当时的官方文档:https://powerapps.microsoft.com/en-us/blog/powerapps-cds-ga/
除了数据库,CDS还有几个主要概念,分别如下
- 实体(Entity)
- 关系(Relationship)
- 选项值(Picklist)
CDS定义了一套可以在不同的组织通用的实体,以及它们的关系。绝大部分情况下,你应该直接使用这些实体,而不需要创建自定义实体。
创建和管理数据库
要创建一个CDS数据库,你可以尝试登录 https://preview.admin.powerapps.com/environments ,先要创建一个Environment(环境)
成功创建环境后,会提示你是否要创建数据库
如果选择创建,则可以设置权限,然后稍等片刻即可完成数据库的创建
在Excel中编辑实体数据
对于广大的Excel用户来说,还有一个好消息就是,CDS的数据支持在Excel中直接支持。这在需要批量更新数据的时候,可能更加有用。你需要做的是,定位到你要编辑的实体,然后点击“Open in excel”按钮
下载得到一个Excel文件,双击打开后,除了看到一个表格结构外,还会自动加载一个Office Add-in
按照提示,Trust this add-in,然后在下一界面中输入你的Office 365账号和密码登录后,稍等片刻即可刷新读取到所有这个实体的数据
当选择某一列时,这个插件会自动检测到数据类型,如果是有选项值的话,还会自动列出来。这样的话,你可以在Excel中修改某个数据,然后点击“Publish”即可完成更新。
在Outlook中集成Common Data Service
除了Excel的集成,CDS还提供了一个与Outlook集成的工具,要启动该功能,需要在CDS的界面上点击“Productivity Settings”,然后按照提示下载一个清单文件
这将下载一个XML文件,其实是一个Outlook Add-in的清单文件(manifest)。接下来我们可以利用这个文件在Outlook中加载一个Add-in。
在Outlook的主界面上,点击“Store”这个按钮
在Add-ins的界面,选择“Add from File...”
选择Install
这个插件很有意思,你安装完之后,在Outlook主界面上面并看不到任何变化,它是对邮件窗口的一个扩展。目前我发现的功能是这样的:在任意一封邮件中,会多出来一个按钮“Common Data Service”的按钮,点击后,会展开一个面板,它会检测到这个邮件中涉及到联系人,然后去跟CDS中的Contact这个实体对比,如果不存在,则可以添加为Contact,如果存在,则会尝试查找该联系人相关的Case记录。例如下面这个例子
目前该插件是在Preview的阶段,仅开放极少数的实体整合,准确地说,只有Case这个实体可用。
在PowerApps中使用Common Data Service
我在文章开始已经提到了CDS与PowerApps的渊源,应该说PowerApps是跟CDS结合得最好的一个应用。对于PowerApps来说,CDS是一种更加好的数据源,在实体之间定义的关系能被自动识别出来,并且生成对应的下拉框。
Common Data Service是PowerApps中一个默认的连接器
登录成功后,可以在实体列表中选择你希望在当前应用使用的实体
点击“Connect”后,接下来可以在界面上使用这些实体的数据,例如下面这个表单
这里特别提一下CDS的优势,我选中的这个字段叫CurrentContact,它的类型其实是一个复杂类型(Contact),透过CDS,PowerApps其实知道这是要读取另外一个实体的信息,所以它会自动生成一个下拉框,而且可以自由设定要显示这个实体里面的什么属性。
至于更多的细节,这里就不展开了。如果大家对于PowerApps还不太熟悉,欢迎阅读下面两篇文章
在Microsoft Flow 中使用Common Data Service
接下来要谈一下的是在Microsoft Flow中如何跟CDS进行集成和交互。你可以将CDS理解为一种数据源,那么在Microsoft Flow中,一方面可以根据CDS的数据变化触发流程(例如新增了一个Case时进行触发),也可以在其他流程中,往CDS的实体中写入数据。下图可以看到跟Common data service相关的模板就有18个。
Common Data Service的触发器共有两个,可以监听新增记录和更新记录两个行为
Common Data Service的操作共有九个
关于Microsoft Flow的细节,同样不是本文的重点,如果你还不太熟悉,欢迎阅读下面这篇文章
在Power BI中使用Common Data Service
我们几乎可以断定,CDS将在日后的数据服务这个领域发挥重大作用,它整合Office 365和Dynamics 365的数据(虽然现在还没有做到),与此同时,支撑以PowerApps,Microsoft Flow,Power BI为核心的商业应用服务。有了这么多数据,接下来当然就是怎么利用它们,让它们发挥更大作用。这个时候,Power BI就是一个非常不错的选择。
讨论Power BI的细节,很明显超出了本文的范围,不过,我此前也写好了相关的文章,请参考 观未见,行不止 —— Power BI 两周年技术和方案交流圆桌会议纪实 。
根据二月份的官方说明,Common Data Service已经可以直接在Power BI中使用了,但目前只是Preview,而且仅限于美国用户才能使用。
我在自己的Power BI Desktop中其实是能看到这方面的界面,但实际无法操作,可能还是需要等一段时间吧。
在数据源中搜索Common Data Service,然后点击下一步
选择对应的数据库之后,点击Ok,很不幸,目前为止,你可能也会收到下面这个类似的提示
我检查过Admin Center,确实没有发现下图提到的那个“Enable”按钮,这可能是导致我无法使用的原因吧,目前来说,我们能做的估计只有等了。
Common Data Service SDK
作为一个开发人员,我很自然还会想到,Common Data Service是否有开放的接口,可以让我自己开发的应用程序可以与之交互呢?答案是肯定的,这部分功能目前也只是在前期的研发中,但我相信它将成为CDS成功的关健。
下面这篇文章有基本的介绍,目前产品组提供了C# SDK的Sample,最好的情况是,他们正在跟Microsoft Graph团队合作,未来应该有望直接通过统一的接口就能访问到CDS,这真是太酷了!
https://docs.microsoft.com/en-us/common-data-service/entity-reference/cds-sdk-get-started
Common Data Service (CDS) 初探的更多相关文章
- WCF Data Service
WCF Data Service:http://www.cnblogs.com/shanyou/category/240225.html
- 我的WCF Data Service 系列 (一、为什么要有WCF Data Service)
开篇先说两名题外话, 在博问上,经常看到有个问性能问题,比如Entity Framework的性能行不行啊之类的. 其实这个行不行,关键还是看对象,一夜家族的老七可能勉强吃点蓝片片,也就行了,可真要让 ...
- WCF Data Service 使用小结(二) —— 使用WCF Data Service 创建OData服务
在 上一章 中,介绍了如何通过 OData 协议来访问 OData 服务提供的资源.下面来介绍如何创建一个 OData 服务.在这篇文章中,主要说明在.NET的环境下,如何使用 WCF Data Se ...
- WCF Data Service 使用小结 (一)—— 了解OData协议
最近做了一个小项目,其中用到了 WCF Data Service,之前是叫 ADO.NET Data Service 的.关于WCF Data Service,博客园里的介绍并不多,但它确实是个很好的 ...
- WCF Data Service 使用小结 —— 了解OData(一)
最近做了一个小项目,其中用到了 WCF Data Service,之前是叫 ADO.NET Data Service 的.关于WCF Data Service,博客园里的介绍并不多,但它确实是个很好的 ...
- 调用WCF Data Service的几点Tips
使用Linq实现sql in statement的时候,用EF的时候可以通过Contains.Exists的方法实现.但是在使用WCF Data Service的context的时候,会报不支持该方法 ...
- Custom Data Service Providers
Custom Data Service Providers Introduction Data Services sits above a Data Service Provider, which i ...
- 自定义Data Service Providers
自定义Data Service Providers 作者:AlexJ 翻译:谈少民 原文链接:http://blogs.msdn.com/b/alexj/archive/2010/01/07/data ...
- 使用WCF Data Service 创建OData服务
使用WCF Data Service 创建OData服务 在 上一章 中,介绍了如何通过 OData 协议来访问 OData 服务提供的资源.下面来介绍如何创建一个 OData 服务.在这篇文章中,主 ...
随机推荐
- Java8 函数式编程详解
Java8 函数式编程详解 Author:Dorae Date:2017年11月1日23:03:26 转载请注明出处 说起Java8,可能很多人都已经知道其最大的改进,就是引入了Lambda表达式与S ...
- XML之外部DTD和内部DTD
DTD(Document Type Definition):文档类型定义,可以定义合法的XML文档结构,它使用一系列合法元素来定义文档的结构.DTD分为内部DTD和外部DTD,所谓内部DTD是指该DT ...
- c++学习笔记---05--- C++输出输入小结
C++输出输入小结 题目: 这个程序将向用户提出一个"Y/N"问题,然后把用户输入的值赋值给answer变量. 要求: 针对用户输入'Y'或'y'和'N'或'n'进行过滤: 发掘程 ...
- Problem C: 求个最大值
class MaxValue { public: vector<int> vec; void append(int n) { vec.push_back(n); } int getMax( ...
- MySQL数据库中文变问号
原文参考:http://www.linuxidc.com/Linux/2017-05/144068.htm 系统是的Ubuntu 16,修改以下配置 1.sudo vi /etc/mysql/my. ...
- HTTP响应头信息(Response Headers)与请求头信息(Request Headers)
打开了电影天堂网站,我们鼠标右键“检查”->打开“开发者工具”->选择“Network”. 刷新网页,选择某一文件点击(此处我是点击db.css),可以观察到Response Header ...
- 学Java的前景与就业,资深程序员教你怎么开始学Java!
IT行业一直是就业的热门岗位,程序员这个职业稳定性和收入比都有着不错的前景,那么学Java的前景和就业是什么样的呢?随着入行Java的准程序员越来越多,各种学习Java的流派也层出不穷!其实在编程的世 ...
- js 切换全屏
公司有一个需求就是点击某一个按钮实现全屏切换功能,然后呢我就在网上扒了段代码.封装了一下.使用的小伙伴们可以看看哦! 切换全屏代码 <!DOCTYPE html> <html> ...
- C#中静态和非静态的区别
今天下午面试,HR问道:C#中静态类或静态方法和非静态类静态方法有什么区别?我回答是静态的可以直接调用而非静态的需要实例化.HR说这谁都知道,我问的是本质区别.我当时就郁闷了,我只有8个月的编程经验, ...
- java继承系列之添加一个LinkLable类
import java.awt.*; import javax.swing.*; import javax.swing.JFrame; import java.awt.event.WindowList ...