前面知识很零碎,学到哪是哪,这次正好看到一个Project 以Recruiting App为例,顺腾摸瓜找到了其他相关Project。于是乎从头到尾跟着练习,正好就把学过的零碎知识点串起来了。
该例从Install Package(App半成品)开始,按照创建数据模型-->UI设置-->提高数据质量(控制输入计算公式等)-->数据安全相关设置-->流程自动化的顺序进行实操,因篇幅太长拆分为两部分,有的知识点之前记录过,所以只做重点笔记和部分截图。
1. Build a Data Model for a Recruiting App
主要是创建对象,创建各种类型的字段,常见的Text Textarea,Number等。这里需要记录的两个概念Juction Object 和Self Relationship。
1.1 Junction Object
A junction object is a custom object with two master-detail relationships, and it is the key to making a many-to-many relationship。
应用场景:发布职位(Job Posting)和职位(Position)及发布网站(Job Posting Site)之间的关系,一个职位可以发布多次,一个招聘网站可以发布多个职位。所以Job Posting 和Position是多对一的关系(Master-Detail),跟Job Posting Site也是多对一的关系,但是在一个招聘网站,一个职位发布表单只能发布一个职位。 所以Job Posting充当了Junction Object的角色,从而建立多对对的关系。好拗口~
1.2 Self Relationship
查找关系除了与其他对象管理之外,还可以自关联。比如Trailhead --> build-a-data-model-for-a-recruiting-app中的Position,在可以新建一个Lookup-Relationship字段Related Position,同时关联时可以增加一个过滤器(本部门的其他职位)。应用场景:当人力创建一个职位时,可以建立跟其他职位的联系。
2.Customize the User Interface for a Recruiting App
设置UI主要有几个方面,Tab选项卡,Page Layout页面布局,Lightning Record Page,Compact Layout紧凑布局,还有利用Record Type记录类型,结合Profile来控制用户看到不同的Page Layout,Picklist字段显示不同的可选项。
2.1 添加Tab - Create a Tab for the review object
Setup -->Tabs -->Custom Object Tabs section-->New
Append tab to users’ existing personal customizations.
问题:这个地方添加Tab和自定义对象是添加Tab的区别?????
调整App中各个tab的显示顺序
setup-->App Manager -->Navigation Items,从available Items中选中并添加到右面,可调整先后顺序。
Users can personalize the navigation to add or move items,but users can't remove or rename the items that you add.
用户可以通过添加或移动项目来自定义导航选项卡,但是不可以删除或重命名管理员添加的项目。
(Q:管理员自定义后,用户打开默认的界面并没有按照管理员定义的顺序显示,why???倒是可以自定义)
In the Add to Custom Apps section:
DeselectInclude Tab.
EnsureAppend tab to users’ existing personal customizationsis selected
创建对象-->创建Tab(用户自定义)-->App Manager,添加Item(Tab)
2.2 Create an Object-Specific Quick Action
在Object Manager-->Candidates-->Buttons, Links, and Actions-->New Action(Create a record named New Job App)
注意!!!:创建一个Create a record类型的Action,还有给Action设置布局,即创建这个Action时,记录界面是怎样显示的,需要输入哪些内容。
Page Layouts -- >Candidate PageLayout -- Override predefined buttons. 把New Job App拖到相应的位置.
(也就是说当创建一个Action后,需要把它添加到相应的页面布局。)
这样当打开一个Candidate记录时,在Quick Action区就能看到New Job App了。
下面就是New Job App的一个页面布局
2.3 customize the review page layout
A page layout determines the fields, sections, related lists, and buttons that appear when users view or edit a record.
这一步是自定义筛选简历的页面,布局页面布局是当你打开一条记录时所能看到的区域,字段,相关列表和按钮,通过拖拽来实现。
2.4 Create a Custom Candidate Record Page
直接New 一个Candidate,在记录的右上角setup中找到Edit Page,可以进入Lightning Record Page的编辑界面,并拖拽组件进来。
···New Compact Layout (Label:Includes Candidate Name,只加了三个字段 First Name,Last Name和Candidate Number)并把它设置为默认的。 没设置之前是system default
三种类型的区别: Page Layout 、Lightning Record Page 和Compact Layout
2.5 Create Record Types on the Position Object
场景:每个招聘经理只能创建自己部门的职位,这里用到的概念是Record Type记录类型,记录类型能控制界面上显示的内容和下拉列表中可选的选项。
Step1:先创建两个Profile:Technical 和NonTechnical
Step2:创建一个Record Type :Technical Position,Profile Assignment -- Technical 和System Administrator
修改Department(Picklist类型的字段),选项保留IT和Engineering
Step3:把Record Type字段添加到Page Layouts页面布局
2.6 Customize the Position Page Layout
页面布局的分配:简档和记录类型的组合。
创建新的Position Page Layout,再按照Page Layout Assignment表进行分配。
下图是Position的Page Layout Assignment界面,一开始看不懂为啥分配的记录类型也要分配Page,搜了一圈找到一个英文说明,搞清楚了。本例中 User 如果分配了HR Recruiter(Profile),该Profile分配了 Technical Position(Record Type),实际应该是行Record Types和列Profiles交叉的Cell 设置才是用户最终创建Position时的界面,没分配的两个Record Type的设置没意义???,不知道我理解的对不,待进一步学习确认。
Since all users can access all record types, every record type must have a page layout assignment, even if the record type isn't specified as an assigned record type in the profile.
Profile -- Layout Setting
通过Profile 去查看Custom Object Layouts设置,可以看到Position 是根据记录类型来变化的。点View Assignment,同样可以进入上图“Edit Page Layout Assignment” 矩阵表。
Profile -- Record Type Setting
设置完成后,再New Position时,界面显示如下,其中Department 只能选择IT 和 Engineering (这个picklist选项值是记录类型 Technical Position决定的)
2.6 Enable Chatter on the Review Object
Setup-->Feed Tracking-->Enable Feed Tracking--Select object and Fields.
启用字段跟踪可以方便地查看到跟踪字段的变化,并在chatter中跟其他用户交流,在本app中HR Team可以方便地沟通候选人的变化。
You’ve created tabs, quick actions, record types, and record pages. You’ve customized page layouts and enabled feed tracking on Chatter. With all this hard work, you’ve made Ling Wu and her recruiting team happy. You’ve also made their Recruiting app much more efficient. Now they have a more user-friendly app and much easier access to the information they need to do their jobs well. It’s all in a good day’s work for an awesome Admin.
3. Improve Data Quality for a Recruiting App
为了保证数据的质量,应该规范用户输入,减少重复数据,保证数据在多个地方显示和保存的一致性。
3.1 Create Cross-Object Formulas
为了避免用户重复输入、保证数据一致性,可以利用公式,组合父对象的字段信息展现到子对象的界面,视图和报表中。所以Cross-Object Formula是在Detail Object上创建的。比如在Review 上创建 字段显示Candidate的 FullName = LastName +' ' +FirstName.
3.2Create Validation Rules
创建校验规则,这里介绍了两种校验方式,一是利用公式,当不满足校验公式时报错;另外一种是创建一个表用来存储基础数据,类似数据字典功能,然后校验规则时用VLOOKUP来查找校验。
VLOOKUP校验的应用场景:本例中要求在Position中输入的Zip Code,能与State匹配。 所以创建一个新的Object,保存Zip Code和State、City的对应关系。 当输入Zip Code时,利用vlookup公式查询出基础表中State,和当前输入的城市做比对。
3.3 Create Formula and Roll-Up Summary Fields
创建公式字段和累计汇总字段,公式字段可以用来简单的组合字符串,比如FullName = LastName &" " &FirstName.
而累计汇总字段只能用于Master-Detail关系的Parent Object,用来计算count,sum ,average ,Max,Min子对象的数据。在本例中,Job Application和Reviews是父子关系,在Job Application对象上增加了字段 Number of Reviews,Total Review Score,Average Review Score分别实现3个功能。
(实际应用中可能lookup关系的对象也需要汇总,可以用Flow触发计算)
累计汇总字段和之前的多对象字段正好相反,是从Master Object汇总Detail Object的值,而公式字段是在Detail Object字段创建,去查找Master的值做组合公式。
4. Keep Data Secure in a Recruiting App
数据安全性设置主要是设置用户的权限,保证用户看到自己应该看到的数据。之前有一篇关于权限的学习,主要从OWD ,Profile,Permission set,Sharing几个方面来设置用户的权限。
4.1 Create Custom Profiles
本例中创建了一个名为HR Recruiter的Profile,对几个自定义对象的CRUD设置如下:
4.2 Restrict Data Access with Field-Level Security, Permission Sets, and Sharing Settings
Permission Set通常作为Profile的一个补充,进行更进一步的权限控制。
New Permission Set,把Recruiting App添加之后,点击 Assigned Apps中的Object Settings,设置对每个对象的访问权限。
下面是对Interviewer这个对象的访问权限设置,包括Tab、Object和Field等。
点击下拉箭头可以对其他对象的访问权限进行设置。
字段的访问权限:可以针对单个字段的访问权限,比如对Salary Range这个存储比较敏感信息的字段,只允许HR Reruiter和System Administrator两个Profile查看;另外也可以对一个Profile设置多个字段的读取权限;同样,也可以在Permission Set设置对字段的访问权限,见上上图,本例中对Permission Set - Hiring Manager设置了Salary Range的权限。
点某一个custom object旁边的view可以打开该Profile对对象字段的访问权限,如下是HR Recruiter对Position各个字段的权限设置。
共享设置-对记录的访问权限。OWD级别的共享设置:From Setup, enter Sharing Settings in the Quick Find box and select Sharing Settings.Click Edit in the Organization-Wide Defaults section. 通常大多数对象的权限都是Private,再逐步通过Profile,Permission Set等放开权限。 比如本例中的Candidate、position等customer object。但是Job Posting Site需要让应聘人员查看,所以是Public Read,还有一个例子是Marketing Service中的Campaign,也应该是Public Read。
至此,一个能够创建记录的Recruiting App完成了,如果用流程使处理过程自动化,是下一次学习的内容。
To be continued…