一、了解 Advanced Approvals(Discover Advanced Approvals)
本单元介绍 Advanced Approvals 如何通过审批规则(Approval Rules)与条件(Conditions)触发审批流程,以及如何创建审批人(Approver)和审批人组(Approver Group)。学完本单元,你将能够:了解审批规则如何用条件触发审批流程;跟随 Advanced Approvals 工作流;为审批规则确定最合适的审批人类型;创建审批人记录。
Advanced Approvals 如何帮助你的组织(一):需求(The Need)
标准 Salesforce 审批流程能覆盖大量常见场景,但有些企业希望审批系统支持更复杂的定制工作流。例如,报价可能需要先由销售经理初审,再由财务、法务、销售运营、专业服务、折扣等多个部门依次或并行审批;财务团队批准后,应付账款代表和财务主管仍需继续审批;法务批准后,副总裁还要再次审批。
管理这种同时包含串行(顺序)与并行(同时)的审批流程,对很多系统都是巨大挑战。Advanced Approvals 在标准 Salesforce 审批流程之上进行扩展,让企业既能搭建复杂的审批路径,又能为销售代表提供易用的审批管理系统。
Advanced Approvals 如何帮助你的组织(二):工作流(The Workflow)
Advanced Approvals 的流程基于审批规则(Approval Rule)。一条规则至少包含一个审批条件(例如「产品名称 = Workstation」或「合作伙伴折扣 > 20%」)和一个审批人(或一组审批人)。每条规则都指向一个对象,比如商机或报价。
当销售代表提交记录进行审批时,Advanced Approvals 会查找该对象上的所有活动审批规则,并用记录上的相同字段值逐一测试其条件。一旦某条规则的条件满足,Advanced Approvals 就向该规则的审批人发送审批请求。审批人可以批准(让销售代表继续推进),也可以拒绝(让销售代表修改记录后重新提交)。
Advanced Approvals 的设计目标是尽量减少销售代表审批流程中的开销:他们只需点击记录上的 Submit Approval,然后等待审批人的邮件回复。如果想预览某个对象的审批流程,可以点击 Preview Approval,查看一张简化的 Visualforce 流程图,图中展示每条规则的条件与审批人。
把用户组织成审批人与审批人组(Organize Users into Approvers and Approver Groups)
审批人(Approver)是接收审批请求邮件的用户,并在 Salesforce Advanced Approvals 包中批准或拒绝审批请求。一个审批人记录既可以代表单个用户,也可以代表一个用户组(User Group)。当你希望把审批请求发送给相关团队的每一位成员时,审批人组就非常有用。
例如,你可以创建一个包含会计部门所有经理的审批人组,再把它关联到一条「当报价净额达到或超过 50 万美元时触发」的审批规则。这样,每当有符合条件的报价,每位会计经理都会收到审批请求邮件。
创建审批人(Creating Approvers)
要创建一个基本的审批人记录,先选择 User 字段并按姓名搜索用户记录。如果要创建审批人组,则在 Group ID 字段中输入用户组 ID。如果要求所有组成员都批准后销售代表才能继续,请勾选 Unanimous 字段;否则记录只要求组内任意一名成员批准即可。
例如,Marco Costa 是公司的一名会计。你希望把他设为审批人(审批人名称为 accountant),让他接收任何「合作伙伴折扣超过 10%」的报价的审批请求。
假设你要把公司的 Solutions Management Team 分配为用户组。这时需要找到该组的记录 ID,并把它填入审批人记录的 Group ID 字段。由于勾选了 Unanimous,Lucy Li、Rupinder Gill 和 Sean O'Malley 会各自收到审批请求,且必须全部批准才算通过;否则 Advanced Approvals 会拒绝该请求。
创建好审批人后,把它关联到你的审批规则。当某个审批条件触发了该规则时,审批人就会收到审批请求。例如,你可以设置一条「报价净额大于等于 5 万美元时触发」的条件。
我们将在后续单元中深入了解审批条件,以及自定义审批规则的各种方式。
二、用审批规则、条件与变量管理审批逻辑(Manage Approval Logic)
本单元介绍如何用审批规则、条件与变量管理审批逻辑。学完本单元,你将能够:把业务需求转换为带逻辑条件的审批规则;使用审批变量汇总子对象数据用于父对象的审批规则;使用跟踪字段(Tracked Field)对象审查审批条件测试字段随时间的变化。
什么是审批规则?(What Are Approval Rules?)
审批规则(Approval Rule)是高级审批流程的构建块。每条规则为一个记录定义一个审批人和一个或多个条件。当销售代表提交记录审批时,如果记录满足规则的条件,Salesforce CPQ 就会向审批人发送审批请求邮件。
建议先梳理业务需求,再决定如何用审批规则表达它们。例如,你可能希望会计部门审查所有高额报价,从而对大额采购的服务进行监督,降低因服务不可用而产生昂贵退款的风险。
来看几个基本例子:
- 如果销售代表提交的报价净额超过 10 万美元,审批规则向会计部门发送审批请求邮件;
- 如果报价包含超过 10 台高级服务器,审批规则向信息技术副总裁发送审批请求邮件。
你也可以在一条规则上配置多个条件,并用条件逻辑进行组合评估。例如:规则仅在「净额 ≥ 50 万美元」或「超过 500 个行项目」任一为真时触发;或者规则仅在「报价包含 500KW 发电机」为真且「报价不包含保修」时触发。
配置好审批规则后,在记录上点击 Preview Approval 即可查看审批预览图,其中展示了该对象会触发的所有活动审批规则。
审批条件(Approval Conditions)
当提交的记录使审批规则满足其审批条件(相对于规则的 Conditions Met 字段)时,审批人就会收到审批请求。所有审批规则至少需要一个条件。用审批条件的各个字段为 Advanced Approvals 包构建一条逻辑语句。几个关键条件字段:
- Filter Field:提供对某个字段的查找,条件用它来评估测试字段或测试变量;
- Filter Type:条件要测试的过滤器类型;
- Filter Value:输入一个文本值,条件用它作为静态值来评估;
- Filter Variable:提供对审批变量的查找,条件用它来评估测试字段或测试变量;
- Index:当规则在逻辑语句中评估多个条件时,为每个条件提供引用编号(例如索引值 1,用于语句 1 OR (2 AND 3));
- Operator:用于比较测试字段/测试变量与过滤字段/过滤值的运算符;
- Tested Field:条件评估该字段,与过滤字段/值/变量比较;
- Tested Variable:条件评估该审批变量,与过滤字段/值/变量比较。
例如,这个条件判断报价的 Net Amount 字段是否大于 1,000:Tested Field = SBQQ__NetAmount__c,Operator = Greater Than,Filter Type = Value,Filter Value = 1000。
高级条件(Advanced Conditions)
如果审批规则有多个条件,可以在规则的 Advanced Condition 字段中引用它们,为规则构建条件逻辑。每个条件用其索引值引用。审批规则评估时,只要 Advanced Condition 逻辑求值为 True,Advanced Approvals 就把记录送去审批。
假设你希望「报价包含 Extended Warranty」或「同时包含 Premium Workstation 和 Standard Warranty」时才需要审批,可以这样配置规则:Advanced Condition = 1 OR (2 AND 3),其中:
- 条件 1:Tested Field = SBQQ__ProductName__c,Operator = Equals,Filter Value = Extended Warranty,Index = 1;
- 条件 2:Tested Field = SBQQ__ProductName__c,Operator = Equals,Filter Value = Premium Workstation,Index = 2;
- 条件 3:Tested Field = SBQQ__ProductName__c,Operator = Equals,Filter Value = Standard Warranty,Index = 3。
上图展示了启用了自定义条件与高级条件的保修评估审批规则。
而这张图显示的是该保修评估审批规则相关列表中的审批条件。
审批变量(Approval Variables)
审批变量(Approval Variable)是审批规则的子对象,用于汇总子记录中的数据,供审批条件评估。Advanced Approvals 会在评估审批条件的同时实时计算它们。相比用汇总字段(Roll-up Summary)或 Apex 触发器把数据聚合并写入待审批对象的字段,审批变量提供了一种更简单的聚合方式。例如,你的审批变量可以汇总整个商机中名称包含「Premium」的商机产品数量。
重要的审批变量字段(Important Approval Variable Fields)
审批变量的关键字段:
- Aggregate Field:聚合函数要作用的字段。例如要计算所有报价行的平均合作伙伴折扣,就查找报价行的 Partner Discount 字段;
- Aggregate Function:选择要对聚合字段执行的数学函数(如 Sum、Max、Average);
- Filter Field:若需按某个值过滤目标对象,则选择相应字段(例如只评估 Product Family = Hardware 的报价行);
- Filter Value:过滤目标对象时使用的值;
- Operator:过滤时使用的运算符;
- Target Object:指定该变量要聚合的子对象。子对象必须与被提交审批的对象存在查找或主从关系;
- Type:在摘要(Summary)与折扣(Discount)审批变量之间选择。摘要变量评估多个字段,折扣变量评估一个列表价与一个净价。使用摘要变量时需提供 Filter Field 和 Filter Value;使用折扣变量时需提供 List Variable 和 Net Variable。
例如,下面这个审批变量返回产品代码字段包含「W012671」的商机产品行中最高的数量值:Target Object = Opportunity Product,Aggregate Field = Quantity,Aggregate Function = Max,Filter Field = ProductCode,Filter Value = W012671,Operator = Equals,Type = Summary。
跟踪字段(Tracked Fields)
审批规则上的跟踪字段(Tracked Field)对象用于跟踪销售代表提交审批的记录上某个字段的变化。审批规则运行时,Advanced Approvals 会把变更信息存入跟踪值(Tracked Value)记录。审批人可以查看跟踪值,了解审批流程各阶段发生了哪些变化。
创建跟踪字段:进入审批规则的 Tracked Fields 相关列表,点击 New,然后填写:
- Tracked Object:包含要跟踪字段的对象。默认可选商机;若要跟踪其他对象的字段,需把该对象的值和 API 名称填入此字段;
- Tracked Field:审批规则要监控其变化的字段,必须是跟踪对象上的字段;
- Tracking Type:选择 Any Values,让 Advanced Approvals 在父审批规则每次运行时都创建跟踪值,无论该字段是否真的变化。
审批规则是 Advanced Approvals 流程的骨干。配置好审批条件、变量和跟踪字段,就能精确决定审批人在何种条件下才会收到审批请求。下一单元将设置审批链,让审批人只有在前序用户或用户组已经批准之后才收到请求。
三、用审批链组织审批人审查(Organize Approver Reviews with Approval Chains)
本单元介绍如何配置审批链(Approval Chains),把审批请求按顺序依次传递给一系列审批人。学完本单元,你将能够配置一条审批链,让审批沿顺序流转。
用审批链组织审批请求(一):概念(The Concept)
审批链(Approval Chain)表示一系列必须按特定顺序发生的审批。链中的每一段都是一个审批规则,共享同一个 Approval Chain 字段值,并使用递增的 Approval Step 字段值。
回顾第一单元的那张 Preview Approval 页面。图中自上而下的「Discount Approval」审批系列就是一条审批链。假设我们的报价有 35% 的合作伙伴折扣。
审批链本身是一个对象,包含链名称和目标对象。创建链记录后,可以在多条审批规则上引用它,从而把这些规则串联起来。Target Object 字段是可选的,仅用于快速引用父审批规则所针对的对象。
例如,你可以设置一条沿财务团队各管理层级依次传递审批的链:会计批准后,财务经理收到审批邮件;财务经理批准后,财务副总裁收到审批邮件;直到财务副总裁批准,请求才算完全通过。
小贴士:在链中使用审批人组和审批记录的 Unanimous 字段,可以自定义组内审批流程——当你希望同级别成员全部批准后才流转到管理层时尤其有用。
用审批链组织审批请求(二):多条链(Multiple Chains)
你还可以同时运行多条审批链。记录提交审批时,Advanced Approvals 会启动该记录的所有链,即使它们从不同的步骤开始;启动后,各条链相互独立地推进。这样,即便某个审批人迟迟不响应,也不会卡住审批流程的其他更高层级。当所有链都完成各自的最终审批步骤后,审批流程才算结束,记录才算获批。
来看一个包含多条链的复杂审批流程。假设报价净额超过 100 万美元时,销售代表必须获得公司全部五个托管服务团队的批准。
下图勾勒了这条审批路径:审批一被请求,每条链中的第一个审批人就会收到请求;他们批准后,请求再流转到链中的下一个审批人。图中的每个方框代表一条独立的审批规则,框内文字对应规则的审批人;列代表每条规则的 Approval Chain 字段,行代表每条规则的 Approval Step。由于专业服务团队只有一名审批人,因此它不需要链。
审批链通过自动化「系列中不同审批人何时能收到审批请求」,帮助加快审批流程。下一单元将探讨如何配置审批人和请求人在审批动作后收到的邮件模板。
四、为审批人与审批请求配置邮件提醒(Configure Email Alerts)
本单元介绍如何为不同类型的审批动作配置邮件模板,以及如何让 Advanced Approvals 包识别审批人的审批回复。学完本单元,你将能够:为不同类型的审批动作配置邮件模板;配置 Advanced Approvals 包以识别审批人的审批回复。
邮件模板类型(Email Template Types)
Advanced Approvals 包会响应销售代表和审批人的动作,发送 Visualforce 邮件。为每种邮件类型定义模板,并把它们关联到审批规则。
审批模板(Approval Template)是已为 Advanced Approvals 包配置了自定义逻辑的 Salesforce 邮件模板。审批规则允许为审批请求、召回请求、审批响应和拒绝响应分别配置模板查找,这些都在审批规则的 Email Notifications 区域定义。
为确保审批人能收到审批请求邮件,审批流程要求审批规则关联一个审批请求模板。例如,销售代表提交审批时,Advanced Approvals 会查找规则 Request Template 字段关联的模板,并据此向规则的审批人发送邮件。
下图展示了审批人可能看到的审批请求邮件示例。
Advanced Approvals 还支持审批响应、拒绝响应和审批召回三种邮件模板:
- Approval Response:审批人批准某个审批请求。该动作在审批周期结束时把记录的 Approval Status 字段改为 Approved,然后 Advanced Approvals 向 Approval Recipients 发送批准邮件;
- Rejection Response:审批人拒绝某个审批请求。该动作在审批周期结束时把 Approval Status 改为 Rejected,然后向 Rejection Recipients 发送拒绝邮件;
- Approval Recall:销售代表召回审批,以便在记录获批前修改它。该动作把对象的 Approval Status 改为 Recalled,然后向销售代表和审批链中的其他审批人发送召回邮件。
Approval Recipients 和 Rejection Recipients 字段控制哪些用户会收到批准邮件和拒绝邮件。建议至少包含记录所有者(被送审记录的所有者)和最初提交者(发起审批请求的用户)。
审批规则记录包含对全部四种模板的查找,这样你就能为不同规则关联不同类型的模板。例如,基于折扣的审批规则与基于加价的审批规则,其拒绝邮件可以使用不同的措辞。
设置 Advanced Approvals 邮件模板(Set Up an Advanced Approvals Email Template)
创建审批邮件模板需要两步:先创建一个基础的 Salesforce 邮件请求模板,再把它关联到邮件模板记录。注意:这些步骤只有在你的组织已安装 Advanced Approvals 包时才有效。
第一步,创建 Salesforce 邮件模板:
- 在 Setup 的 Quick Find 框中输入 Classic Email,选择 Classic Email Templates;
- 选择 New Template;
- 选择 Visualforce 作为邮件模板类型,点击 Next;
- 填写邮件模板信息(本例命名为 Request Template);
- 选择存放邮件模板的文件夹;
- 若希望模板公开可访问,请确保文件夹为公开;
- 勾选 Available For Use;
- 填写邮件模板名称和模板唯一名称;
- 选择编码、描述和邮件主题,并把 User 设为收件人类型;
- 把 Related To Type 设为 sbaa__Approval__c,然后保存;
- 在模板中点击 Edit Template,添加审批邮件中要显示的文本和标记。邮件模板必须包含对审批记录 ID 的引用;
- 用户无需看到这段代码,所以添加样式标签隐藏它。建议把代码文本颜色设为白色(大多数邮件背景是白色)。
在步骤 11 中,建议用标记创建一个简洁易读的布局,让销售代表或审批人能查看请求的相关信息。例如,如果审批规则测试报价的净额和合作伙伴折扣,就加入一张表来引用这些字段的值,让审批人和客户无需在 Salesforce 中打开报价也能快速查看。
第二步,创建 Advanced Approvals 邮件模板记录:
- 在邮件模板对象中点击 New;
- 因为要把该审批模板连接到第一步创建的模板,把它命名为「Approval Request Template」;
- 在 Template ID 字段中输入第一步创建的 Salesforce 请求模板的 ID;
- 查找 ID 的方法:打开 Salesforce 审批请求模板,在浏览器 URL 中找到 salesforce.com/ 之后那串字母和数字并复制;
- 点击 Save。
审批回复的评论与关键词(Approval Response Comments and Keywords)
审批人收到审批请求邮件后,其邮件回复决定了 Advanced Approvals 是向请求人发送批准邮件还是拒绝邮件。Advanced Approvals 把预定义区域之上的一切视为评论(Comment),审批人可在其中说明批准或拒绝的原因。Advanced Approvals 包的设置项 Approval Email Comments End Indicator 决定回复邮件的哪一部分算作评论:
- Line Break:第一个与第二个换行之间的内容视为评论;
- Blank Line:第一个换行与第一个空行之间的内容视为评论。
你还可以使用 Approved Keywords 和 Rejected Keywords,让 Advanced Approvals 根据评论中是否包含特定关键词,自动向请求人发送批准或拒绝邮件。推荐配置:
- Approved Keywords:Approved,Approve,Yes;
- Rejected Keywords:Rejected,Reject,Decline,No。
例如,审批人可以在邮件回复中写:「Thank you for your submission. Unfortunately, I have to reject this approval request as our budget doesn't have the room for a 20% partner discount.」发送邮件后,请求人就会收到一封包含该评论的拒绝模板邮件,Advanced Approvals 随后把审批记录状态改为 Rejected,并按需更新相关对象(如跟踪字段)。
审批人提醒邮件(Approver Reminder Emails)
建议配置提醒邮件(Reminder Emails),让在指定时间内仍未响应请求的审批人收到提醒,从而保持审批流程持续运转、避免请求停滞。更多信息可参考 Salesforce Help 的「Schedule Approver Reminder Emails」。
入站审批邮件中继(Inbound Approval Email Relays)
Advanced Approvals 包需要一个邮件中继服务的名称,用于发送自动化的审批邮件。在 Advanced Approvals 包设置的 Inbound Approval Email (Long) 字段中填入该服务名称即可。
邮件模板提供了一种便捷方式,让你无需登录 Salesforce 账户就能展示重要的审批信息或更改审批状态。下一单元将配置 Advanced Approvals 包,让审批人不必再为未变化的条件重新评估审批请求。
五、用智能审批评估变更(Use Smart Approvals to Evaluate Changes)
本单元介绍如何用智能审批(Smart Approvals)评估变更。学完本单元,你将能够:为审批规则添加智能条件,让 Advanced Approvals 标记两次审批提交之间测试值的变化;确保规则上任何测试值的变化都能让记录被标记为需要审批,无论规则的条件逻辑如何。
智能审批工作流(一):概念(The Concept)
智能审批(Smart Approvals)能简化销售代表的重新提交流程。在审批条件上启用智能审批后,Advanced Approvals 会在重新提交时,把该条件的测试字段值与上一次提交的测试值进行比较。如果值相同,重新提交时就不再要求该规则的审批人再次审批。
通过在审批条件上勾选 Enable Smart Approvals 来启用。智能审批生效期间,被拒绝的审批会把审批条件测试字段的原始值存入 Approval Snapshot 对象。审批快照有助于查看销售代表在审批过程中如何修改请求,它们显示在审批记录的相关列表中。
智能审批工作流(二):三种场景(Three Scenarios)
来看一个基础的智能审批示例。销售代表提交了一份属于以下审批规则的报价:审批人为链(Chain),步骤 1 财务团队、步骤 2 销售副总裁、步骤 3 CEO;条件 1 为 Net Total >= $60,000 且 Smart Approvals = True。
假设销售代表提交了 8 万美元的报价,触发了规则。财务团队和销售副总裁各自批准,Advanced Approvals 为这两次批准创建审批快照。随后 CEO 拒绝,销售代表修改并重新提交,有三种可能:
- 场景 A:销售代表把报价降到 5 万美元重新提交。此时规则不再触发,无需审批——这种情况下智能审批并不介入,因为审批已不在流程中。
- 场景 B:销售代表把报价降到 7 万美元重新提交。智能审批发挥作用:财务团队的快照仍保存 8 万美元的值,7 万小于 8 万,于是智能审批代表财务团队自动批准,销售副总裁同理——既然他们已经认可 8 万美元没问题,何必再打扰?此时新的审批请求直接发给 CEO。
- 场景 C:销售代表把报价提高到 20 万美元重新提交。财务团队的快照让智能审批知道 8 万没问题,但 20 万高得多!由于新值大于快照值,智能审批要求财务团队和销售副总裁像第一次一样重新批准;如果通过,它会为 20 万美元创建新快照,并把新审批请求发给 CEO。
管理智能条件(Managing Smart Conditions)
一个求值为 True 的智能条件,如果规则整体的条件逻辑仍求值为 False,可能仍不足以触发重新提交。这个区别很重要:仅仅智能条件测试值的变化,未必足以让审批规则触发。看一个例子。
用例 1:智能条件变化但无需重新审批。审批人为销售经理,规则配置:
- 条件 1:Opportunity Type = New,Smart Approvals = False;
- 条件 2:Service Discount > 15%,Smart Approvals = True;
- 条件 3:Subscription Discount > 15%,Smart Approvals = True;
- 规则条件:1 AND (2 OR 3)。
销售代表提交的报价满足全部三个条件:TRUE AND (TRUE OR TRUE) = True。Advanced Approvals 把报价提交给销售经理,销售经理批准。销售代表随后召回审批并重新提交。
由于条件 2 和 3 是智能审批,Advanced Approvals 会检查测试值的原始状态与新状态是否有差异。因为没有差异,条件 2 和 3 现在返回 False:TRUE AND (FALSE OR FALSE) = False。此时即使某个智能条件在重新提交时发生了变化,Advanced Approvals 也不会向销售经理重新提交审批请求。
单独重新评估智能审批(Reevaluate Smart Approvals Individually)
如果你希望审批规则在任意一个条件变化时都发送审批进行评估,而不受整体条件逻辑影响,请勾选规则的 Reevaluate Smart Approvals Individually 字段。该字段生效期间,Advanced Approvals 会在重新提交时比较每个智能条件之前与新的测试值;如果某次比较求值为 False,它会忽略条件逻辑,立即把记录发给审批人。
当你希望确保智能条件的变更始终被送审时,这个功能很有用。看一个例子。
用例 2:使用「单独重新评估智能审批」。审批人为销售经理,规则配置:
- 条件 1:Quantity > 0,Smart Approvals = True;
- 条件 2:Additional Discount > 0%,Smart Approvals = True;
- 条件 3:Partner Discount > 0%,Smart Approvals = True;
- 规则条件:(1 OR 2) AND 3。
销售代表创建了一个报价,其中某行数量为 10、附加折扣 0%、合作伙伴折扣 20%:(TRUE OR FALSE) AND TRUE = True。条件求值为真,Advanced Approvals 把报价发给销售经理,销售经理批准。销售代表随后召回报价并更新测试字段:数量改为 20、附加折扣 0%、合作伙伴折扣 20%。
重新提交时,条件 3 因为合作伙伴折扣的值没变而变为 False:(TRUE OR FALSE) AND FALSE = False。条件求值为假,Advanced Approvals 不会把报价发给销售经理。
然而,如果规则启用了 Reevaluate Smart Approvals Individually 字段,那么条件 1 的变化就足以要求重新审批,无论条件逻辑或其他条件取值如何。
审批报价、商机及其他财务记录是任何 Salesforce CPQ 实施的重要环节。用 Advanced Approvals 自动化审批请求与响应,让审批流程更高效。
文章来源:Trailhead - Salesforce CPQ Advanced Approvals for Admins

























