本节分享我将以Q&A的形式来整理Task/Event在Salesforce中的概念,应用场景及相关问题的解决方案。
Q1、Task和Event应用价值和呈现形式?
A:Task和Event一般用于通知某些特定用户去跟踪某件事,或者记录业务人员在某个业务上采取过哪些措施。他们最重要的功能是可以设置reminder,设置了的话当登陆到org后,会以弹窗形式通知某些用户去care某个相关业务。
Q2、最常用的业务场景举例?
A:当市场部员工选定某些产品促销时,我们通常想在促销被激活/发布后,就通知合作伙伴/销售代表第一时间了解到促销信息;再比如,在进行线下市场活动后,营业担当需要对收集上来对线索进行跟进(call/Email/Other),这时可以为手下的销售代表分配具体跟进哪条线索就需要用到Task;再比如,可能某类业务比较紧急,需要领导快速审批,这时候也可以使用Task来提醒领导。
总之:Task的分发,促销Event提醒,审批Task的催促。
Q3、为什么我在自定义对象的page layout编辑页面没有找到Open Activities/Activity History?
A:你需要前往该对象,然后点击编辑,勾上下图圈点部分。
Q4、我想为Task/Event增加自定义字段,为什么在其字段里面没有看见自定义字段按钮?
A:在Task/Event Field列表里面你只能查看到标准字段,你可以在Activity Custom Fields中为其增加自定义字段。
Q5、Task/Event本质区别是什么呢?
A:1. 在Date/Time维度上,Task只有Due Date(DateTime),而Event有起始DateTime;2. 在主页显示页面布局中也有差异,Task显示在Home page的My Tasks的相关列表中,Event显示在Calendar中。由于Event有起止时间,假设起止时间为3天,那么在Calendar中会显示3行,如下图:
Q6、在开发上需要特别注意哪些事项?
A:1. 权限,比如Marketing Staff创建了促销信息,这条促销信息需要被Dealer(partner user)看到,这个共享是基于促销信息被Marketing Manager审批通过后,促销激活的条件共享的,因此需要先激活后再去创建Event,否则激活前创建Event,Dealer将没有权限访问Related to项目;2. Date自动填充的处理,如果促销中起始日期是Date类型,需要自动填充Event的起始日期(Date/Time),Trigger中after insert前自动赋值即可,即可以将Date赋值给DateTime,这时具体hh:mm:ss呈现形式,会基于User的local设置项,如Malaysia地区,11/12/2017 - 11/12/2017 8:00AM。
待研究课题:
1、如何限制某记录类型的Event,Related To为指定对象,不可选?
A:经过调研,我们可以充分利用Event的What关系字段(Lookup(Contract,Order,Campaign,Account,Opportunity,Product,Asset,Case,Solution,Quote,Asset Relationship,Channel Program,Channel Program Level,Geographic Region,Return Receipt Product,Return Receipt,Relation Management,Return Order,Forecast,Promotion,Return Order Product))。由于系统不提供可选只展示哪一种类型,我们可以使用Trigger在before insert时判断当前Related to为哪一中类型,soql筛选方法为What.Type = ''。举个例子,如果我们需要限制业务人员只能选择Account类型,则soql如下:
[SELECT Id, WhatId FROM Event WHERE Id IN :Trigger.New AND What.Type = 'Account'];
经调研,What.Name, What.Id, What.Type都可用,但是如果想找某个对象具体字段值,暂时无法通过关系查询取到。
/*******************************更新分割线*******************************/
接下来我们将讨论更新后的task和event功能:
1. task可以选择multiple用户,创建后,多个user可以在home page中看到task并接收到提醒的popup window,如下图:
注意:当选择多个user时,就一次创建了多个task,即user - task = 1:1;
2. event的assignTo只能选择一个user,但是其contact可以选择多个,比如我们安排一个Meeting,那么参与的人也就是contact就可以为多个。
3. 邀请多人到Event,查询Id,Name,Email,Phone...时,只显示第一个人
这一块也蛮有意思的
4. Cannot access Title, Email or Phone fields on Task.Who or Event.Who?
SOQL Polymorphism, or How I Learned to Love the Polymorphic Relationship
这种不行:
这种可以(此时无法查询Who.Type了):