使用多种方式导出Salesforce Object Definitions对象定义表

517 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

前言

前段时间被一位刚入行的同学私信问到"如何快速导出ERD和对象定义表"的问题,KT一波后,明显感受到那位同学使用高效工具后的喜悦(至少节省了大半天的时间)。如果说我们把工具带来的高效视为利己,那么如何进一步做到利他呢?正好最近很幸运地被问到一个问题,让我有机会思考项目实施中如何做到利己又利他。

背景

Admin反映客户某个对象A上有1,2,3,4,5个记录类型,每种记录类型对应使用着不同字段,很早前(上上个接手团队T1)为了很好区分哪个字段是用于哪个记录类型的,如在记录类型1,2上有意的在创建字段时加了前缀如1/2_fieldApi。那么对于上个接手团队T2新增的记录类型4,5,就没有这种机制了。所以等我们接手扩展字段时,Admin并不能很好的识别哪个字段用于哪个记录类型,当然客户也不太清楚。所以为了很好的避免新增通用字段F1,2可能会被其他记录类型用到,所以并不推荐沿用以前的加前缀的方案,那为何不遵循创建字段的最佳实践通过备注Description来表明用途呢?当然我们也可以很方便的在线下维护一张表,这样就可以方便到内部团队和当前对接的客户,那一旦面临离职和下个同事接手,这类问题很可能将被重演。

解决方案

  1. 增加Description描述;
  2. 通过Report展示带Description的对象定义表;
  3. 分配字段到Page Layout时,参考对象定义表的描述识别哪些字段是特别用于哪些记录类型。

效果预览

关键步骤

  1. 创建自定义Report Type Primary Object: Entity Definitions
    Label: Metadata Definitions
    Description: Report type to get a list of object and fields metadata

B: Field Definitions

  1. 创建自定义元数据Report New Report
    Select Report Type: Metadata Definitions
    Filter: Created Date = All Time & Label = Contact
    Columns(field definition): Label / Qualified API Name / Data Type / Length / Scale / Precision / Field Usage / Is Field indexed? / Is Field History Tracked / Is ForeignKey Polymorphic? / Description / Last Modified Date
    Group By(object definition): Label
    Save & Run: Contact Metadata Definitions / Description: Contact object and it's field metadata / Private Reports

  2. 预览与导出Report

复选方案

竟然可以用Report导出对象字段定义表,作为Developer是不是也可以按需通过SOQL来查出结果呀?
答案是一定的。如下图:

SELECT Id, Label, DeveloperName, QualifiedApiName, Length, Precision, Scale, Description, FORMAT(LastModifiedDate) FROM FieldDefinition WHERE EntityDefinition.Label = 'Contact'


感悟:通过观察ID,我们发现SF暂时还不支持通过类似Data Loader的方式快速批量更新字段定义表。但为了减轻Ad hoc,我们仍然对这一点抱有期待!

其他工具

Lucidchart - 用于手动创建ERD,画出对象间的关系即可,标注哪些是标准对象,哪些是自定义对象,哪些是工具对象
Salesforce DevTools - 主要用于导出Object Field Definitions和ERDs(除显示对象关系外,还包含关键关系字段)

插件视图:

选定对象导出后的object overview:

对象字段定义信息(不含Description):

工具比较

我们依然借助上边背景信息作为载体来比较DevTools和Report在制作对象字段定义表时的优缺点。

DevToolsReport
PROS1. 导出的Excel有很好的分类且精美,达到了可直接交付客户的标准;2. 适用于数据集成(如Number精度,DB必填性,Picklist可选值)和文档交付时的数据字典参考; 1. Admin和经过Report培训的客户采纳度高;2. 可高度自定义满足一些特殊需求; 
CONS1. 用户无法自定义表头信息,不能满足特别需求(如Description没法显示);2. 有学习成本,客户可能比较排斥使用该工具;1. 需要额外优化导出的报表;

下一步

如何快速创建数据模型并批量修改字段定义信息?