Loading
设置和维护 Salesforce 组织
目录
选择筛选器

          没有结果
          没有结果
          以下是一些搜索提示

          检查关键字的拼写。
          使用更普遍的搜索词。
          选择更少的筛选器,并扩大搜索范围。

          搜索所有 Salesforce 帮助
          Archive Apex — 被遗忘的权利 (RTBF)

          Archive Apex — 被遗忘的权利 (RTBF)

          数据隐私条例授予个人被遗忘的权利 (RTBF),要求组织根据请求安全删除个人数据。Archive Apex 通过从 Archive 应用程序识别和删除特定数据来实现合规性,确保彻底删除,同时保留其他已归档数据的完整性。

          RTBF 筛选条件

          要处理 RTBF 请求,请指定适当的筛选条件。例如:

          标准 示例
          字段名 员工 ID
          对象 联系人
          ID 123456789011121314

          重要注意事项

          • 提交限制为每天 10,000 个请求,根记录搜索限制为 10,000 个。
          • RTBF 删除过程扩展到层次结构中直接和间接相关的子记录。
          • 重叠搜索结果会将一些记录标记为已在审计文件中删除。
          • 如果达到搜索结果限制,Apex 活动状态会显示带有此错误的200状态代码。

            Request processed. Maximum search results reached. Refine your search or submit a new request.

          • 大多数标准 RTBF 请求在 30 分钟内完成。
          • 为了获得最佳结果,请针对根对象。
          • 对象和字段名称筛选器不区分大小写。
          • 归档不支持部分删除。

          已归档层次结构中子记录的 RTBF 行为

          在子记录上执行 RTBF 请求时,该请求会删除与其关联的整个归档层次结构。

          例如,如果您搜索特定个案记录并提交归档 RTBF 请求,该请求会删除个案、关联的任务和相关的客户根记录。因为这些记录是一起归档的,所以 RTBF 会删除整个归档的层次结构。

          但是,如果客户单独归档,在个案记录上运行 RTBF 只会删除个案及其任务,而不会删除客户记录。

          RTBF 的工作原理

          RTBF 进程作为异步进程运行,并遵循这些顺序 API 调用。

          • 数据识别 — Apex 查询归档,以查找匹配指定筛选条件的所有记录。
          • 数据删除 — Apex 向归档发送删除请求,删除所有匹配的记录。

          在流程完成时,RTBF 活动图标会显示在归档控制台的活动选项卡下方。

          备注
          备注 仅清除作为根对象归档的查询对象。RTBF 可以针对根对象和子记录。

          RTBF 请求示例

          前员工 Maria Johnson 提交了 RTBF 请求,要求将所有个人数据从系统中删除。贵公司将员工记录及其电子邮件通信、客户互动和项目分配归档。要遵循 RTBF 请求,使用此筛选条件。

          对象 字段名
          联系人 电子邮件 Maria@own.com
          个案 员工 ID 987654321
          任务 被分配人 瑪麗亞·強森
          电子邮件 发件人 Maria@own.com
          文档 所有者 瑪麗亞·強森

          该请求确保完全删除 Maria 的数据,包括她的联系信息、她参与的个案、分配给她的任务以及与她链接的所有电子邮件和文档记录。此流程有助于保持对数据隐私条例的遵守,同时确保彻底准确地删除敏感信息。

          API 方法和响应处理

          备注
          备注 验证筛选条件是否特定,这样您就不会意外删除记录。

          我们建议在提交 RTBF 请求之前,通过在 Apex 数据查询中运行查询来验证您的条件。

          输入 输出 定义
          ArchiverAccessorResponse
          • ArchiverAccessorResponse.getBody();

            包含跟进requestId的字符串。

          • ArchiverAccessorResponse.getStatusCode();
          • ArchiverAccessorResponse.getErrorMessage();
          来自“忘记 API”调用的响应。返回使用 getRTBFStatus 方法跟踪请求的状态的requestId
          Criteria(字符串sObjectName、字符串fieldName、字符串value    
          forgetArchivedRecords(list<Criteria> inputFilters) ArchiverAccessorResponse 创建“忘记归档请求”和删除条件列表的公共方法。
          getRTBFStatus(string requestId) 包含已删除信息的所有详细信息的 CSV 报表。 公共方法,使您能够跟进 RTBF 请求。

          Archive Apex — 运行 RTBF 请求

          手动测试 Archive Apex,并在 Archive 应用程序中运行 RTBF 请求。

          1. 单击设置图标。
          2. 选择开发人员控制台
          3. 要打开控制台,请在 Windows 上按 F12Ctrl+Shift+I,或在 Mac 上按 Cmd+E
          4. 在控制台中,执行此代码以创建条件列表,发送 RTBF 请求,并从归档获取requestId
            SF_Archive.Criteria criteria1 = new SF_Archive.Criteria('Account', 'Name', 'example name');
            list<SF_Archive.Criteria> lst = new list<SF_Archive.Criteria>();                        
            lst.add(criteria1);                        
            SF_Archive.ArchiverAccessorResponse response =                        
            SF_Archive.ArchiverAccessor.forgetArchivedRecords(lst);                        
            Map<String, String> values = (Map<String,                        
            String>)JSON.deserialize(response.getBody(), Map<String, String>.class);                        
            String requestId = values.get('request_id');                    
            system.debug(requestId);
          5. 单击执行

            请求开始。完成后,requestId会存储在执行日志中。

          查看 RTBF 请求的状态

          发送 RTBF 请求后,您可以查看请求的状态。

          1. 在页面右上角,单击设置图标。
          2. 选择开发人员控制台
          3. Command + E
          4. 使用 RTBF 请求的requestId,运行此代码。
            SF_Archive.ArchiverAccessorResponse reportResponse =
            SF_Archive.ArchiverAccessor.getRTBFStatus(requestId);                            
            system.debug(reportResponse.getBody());                        
          5. 单击执行
            状态请求开始。完成后,这些状态之一会显示在执行日志中。
            • Request failed, please contact support.

              请求不成功,并失败。

            • Request handled, no matching results were found.:

              没有匹配指定条件的记录。

            • Request is open. Scan is still in progress.

              请求仍在处理中。

          当请求成功完成时,您会收到一个 CSV 报表,其中包含已删除信息的所有详细信息。

          CSV 报表包含此信息。

          字段 备注
          条件记录 匹配请求的删除条件的记录字段。
          条件记录类型 请求的条件。
          引发删除的相关 Salesforce ID 表中另一个记录引用的行也匹配该条件。
          Salesforce ID 报表行中包含的记录的 ID。
          状态 表示是否删除记录。

          RTBF 常见错误

          无效条件

          • 字段必须匹配对象。
          • 不允许有多个条件具有相同的对象。
          • 每个请求最多可以发送 10 个条件。

          无结果

          • 值不能是部分。
          • 条件必须是已归档的记录类型。

          例如,如果您有一个具有 ID X的客户,并且您将属于该 ID 的个案归档,则必须排除属于该客户的个案。为此,创建此筛选条件。

          Object type: Case, field: AccountId, value: X
          备注
          备注 常见错误是创建此筛选条件。
          Object type: Account, field: Id, value: X
          此条件不会删除任何内容,因为归档没有相关客户。

          Archive Apex — RTBF 用例场景

          归档应用程序中 RTBF 的用例场景。

          场景 1:包含多个对象的 RTBF

          Jane Doe 是 XYZ Bank 的客户,她在过去的 2 年里一直在该银行开户。最近,她决定根据《通用数据保护条例》(GDPR) 行使她的 RTBF。Jane 认为银行保存了她不必要的个人数据,并希望将其从他们的记录中删除。

          Jane 向 XYZ 银行提交她的 RTBF 请求,并指定她想删除的个人数据,这些数据可以包括账户信息、交易历史和银行持有的任何其他个人数据。银行会继续识别并查找 Jane 的个人数据。

          RTBF 请求
          标准 筛选器 筛选器 筛选器 筛选器
          对象 客户 Transaction_c 个案 电子邮件
          字段名 名称 交易用户 客户名 发件人
          無名氏 無名氏 無名氏 無名氏

          RTBF 请求可以包含最多 10 个单独对象。

          结果:

          归档查找 1 个客户、2000 个交易、15 个个案作为根和 30 封电子邮件。

          场景 2:RTBF 单对象

          一家制药公司发布了一种实验药物,艾迪仙丹,用于治疗关节炎。然而,它导致患者出现严重的不良反应。在召回该药物后,该公司提交了 RTBF 请求,以删除与 Eddy's Elixirs 相关的所有公开记录和数字内容。

          RTBF 请求
          标准 筛选器
          对象 个案
          字段名 药物名称
          愛迪精靈

          结果:

          归档会将 1000 个个案作为根记录,并将 1000 个患者记录作为子记录归档到根记录下。这会将它们全部移除。

          在“归档控制台活动”选项卡中创建一个活动,显示 RTBF 图标。

          场景 3:RTBF 找到超过 10,000 个根记录

          Emily Jones 是热门社交媒体平台 ConnectWorld 的常规用户,她停用账户,并请求根据数据保护条例行使 RTBF。

          RTBF 请求
          对象 筛选器 筛选器 筛选器
          对象 用户帐户 联系人 个案
          字段名 名称 电话 相关 ID
          Emily Jones 的客户 ID Emily 的电话号码 Emily Jones 的客户 ID

          结果:

          归档会查找 20,000 个根个案记录,300,000 个联系人和 10,000 个个案作为根记录,150,000 个联系人作为子记录在根记录下归档。

          在“归档控制台活动”选项卡中创建一个活动,显示 RTBF 图标。

          getRTBFStatus 返回状态代码 200,错误消息为“请求已处理。已达到最大搜索结果数量。优化搜索或提交新请求以查看更多记录”。

          对于每个 RTBF Apex 请求,归档最多只能处理 10,000 个根记录。要解决此错误,请再次运行查询以检索剩余记录。

          Archive Apex — 在归档应用程序中匿名化 PII

          匿名化已归档记录中的个人身份信息 (PII),而无需删除记录本身。匿名化使用不可逆的占位符替换敏感值,以帮助您遵守隐私条例,同时保留归档应用程序的记录结构。

          匿名化,也称为屏蔽,帮助您遵守隐私请求,例如被遗忘的权利 (RTBF)。此流程会对已归档记录执行就地更新。与永久删除数据的清除操作不同,匿名化使用通用文本替换特定的敏感值,例如 redacted@example.com。

          备注
          备注 此功能仅适用于 Archive Apex。它在 UI 中不可用。

          匿名化的工作原理

          系统使用对象元数据检测 PII 字段,例如姓名、电子邮件、电话和地址。在您提交请求时,系统会使用不可恢复的占位符屏蔽原始 PII 值。非 PII 数据(例如记录 ID 和时间戳)保持不变,可以搜索。

          匿名化是全面的。在您匿名化根记录时,匿名化过程会自动层叠到同一归档层次结构中的所有相关子记录。例如,匿名化联系人记录也会匿名化该记录相关任务和事件中的 PII。

          重要注意事项

          • 匿名化过程是永久性的。匿名化后,您无法恢复或查看原始 PII 值。
          • 您只能匿名记录一次。如果您提交匿名记录的重复请求,系统会忽略它。
          • 匿名化共享每个组织每天 10,000 次请求的标准归档 RTBF 速率限制。
          • 您无法手动选择要匿名化的字段。系统会根据恢复算法自动识别 PII 字段。
          • 您不能匿名化合法持有的记录。系统会自动排除当前处于合法保留或保留锁定中的记录。

          提交匿名化请求

          定义您的目标条件,并使用 SF_Archive.ArchiverAccessor Apex 类提交匿名作业。

          请确保满足这些要求。

          • 运行 Apex 代码的用户有权访问SF_Archive命名空间。
          • 访问开发人员控制台或 IDE,以运行匿名执行 Apex。
          1. 打开开发人员控制台或您的首选 Apex 执行工具。
          2. 打开匿名执行窗口。
          3. 要定义条件并提交请求,请运行此代码。此代码块会将联系人记录中的电子邮件地址字段匿名化。
            // 1. Define the criteria for the records to anonymize.
            // Syntax: new Criteria('ObjectAPIName', 'FieldAPIName', 'ValueToMatch');
            List<SF_Archive.Criteria> criteriaList = new List<SF_Archive.Criteria>();
            
            // Example: Anonymize a specific Contact by Email
            criteriaList.add(new SF_Archive.Criteria(
              'Contact',
              'Email',
              'mickey.mouse@example.com'
            ));
            
            // 2. Submit the anonymization request.
            SF_Archive.ArchiverAccessorResponse response = SF_Archive.ArchiverAccessor.maskArchivedRecords(criteriaList);
            
            // 3. Process the response to get the request ID.
            Map<String, String> values = (Map<String, String>)JSON.deserialize(response.getBody(), Map<String, String>.class);
            String requestId = values.get('request_id');
            
            // Output the request ID for tracking.
            System.debug('Anonymization Job Submitted. Request ID: ' + requestId);

          验证匿名化状态

          检查匿名化作业的状态,并使用提交期间生成的请求 ID 生成审计报告。

          匿名化是一个异步过程。提交请求后,使用返回的请求 ID 跟踪进度并验证结果。

          1. 要检查匿名化作业状态,请在“执行匿名”窗口中运行此代码。
            // Paste the Request ID found in the Debug Log from the anonymization request.
            // Example: String requestId = '0Qn5e000000abcD';
            String requestId = 'YOUR_REQUEST_ID_HERE';
            
            // Check the status.
            String statusResponse = SF_Archive.ArchiverAccessor.getMaskingStatus(requestId);
            
            System.debug('Anonymization Job Status: ' + statusResponse);
          2. 要在匿名化作业完成后生成审计报告,请在“匿名执行”窗口中运行此代码。
            String requestId = 'YOUR_REQUEST_ID_HERE';
            String report = SF_Archive.ArchiverAccessor.getMaskingReport(requestId);
            System.debug('Anonymization Audit Report: ' + report);

          匿名化结果

          查看匿名化过程完成后 PII 字段的显示方式。当作业状态为“HANDLED”时,系统会立即更新归档的数据。

          • 使用原始 PII(例如电子邮件地址)的搜索不会返回结果。
          • 使用记录 ID 等非敏感标识符的搜索会返回匿名记录。
          • 当您通过搜索、导出或取消归档查看记录时,PII 字段会显示占位符值。
          字段 原始值 匿名值
          名称 米老鼠 redacted_first_name
          电子邮件 mickey.mouse@example.com redacted@example.com
          电话 +1-415-555-1234 000-000-0000
          ContactId 003XX0000123AbC 003XX0000123AbC
           
          正在加载
          Salesforce Help | Article