我有一个要求,即停用 salesforce 组织上的用户(即用户离开了组织),我必须检索与用户相关的所有作业,例如安排 1. 报告和仪表板 2. Apex 类 3. 数据导出/导入等。而且我还需要停用工作流程以及所有依赖于该用户的工作流程。我必须使用一些脚本来自动化所有这些任务。
如何处理这项任务?
我有一个要求,即停用 salesforce 组织上的用户(即用户离开了组织),我必须检索与用户相关的所有作业,例如安排 1. 报告和仪表板 2. Apex 类 3. 数据导出/导入等。而且我还需要停用工作流程以及所有依赖于该用户的工作流程。我必须使用一些脚本来自动化所有这些任务。
如何处理这项任务?
你为什么把它标记为javascript?
计划的作业(包括报告导出)将在“设置”页面上可见,因此这是一个屏幕抓取解决方案。该数据也应在 CronTrigger
表中提供。据我所知,tis 表不支持更新,因此您只能使用 SELECT 检测它们,杀死它们并为不同用户安排新作业将是手动操作。
数据导出 - 我认为只有 1 周导出服务可能?恐怕手动检查/屏幕截图。或者,您的系统管理员团队会收到通知,指出作业因用户不活动而失败。
工作流(实际上是电子邮件更新)和代码中的硬编码引用:我会在 Eclipse 中运行搜索(或使用任何其他元数据 API 工具下载文件)。
审批流程:这曾经很痛苦,现在它们也是元数据的一部分。
编辑
你曾经使用过Force.com IDE吗?它是一个主要针对开发人员(程序员)的工具,但也可供系统管理员使用。它能够检索您的整个 Salesforce 项目(对象定义、字段、类、页面布局、工作流规则、共享规则......),以及对它们进行更改并将它们从一个环境移动到另一个环境。如果您要部署更大的更改集,则使用 IDE 可能比单击创建更改集更快。它本质上是 Eclipse 的一个插件——用 Java 编写的程序员的工具。
还有其他可用的元数据 API 工具。根据您需要在多大程度上编写脚本,您可能会放弃 Eclipse 转而使用迁移工具,这将使从命令行运行项目检索成为可能,然后您可能会使用一些 XML 解析器搜索您的用户。 .. 但是现在我推荐 Eclipse,因为它更容易、更直观。(旁注:Data Loader 可用于类似的事情 - 搜索所述用户拥有的所有记录并将它们转移给新所有者。元数据是关于您的配置、数据库中的表等,而不是关于存储在这些表中的实际记录)。
无论如何:下载 IDE 并单击创建新项目(这可能会有所帮助,至少检查图像)。例如,您将要下载workflows
目录的全部内容。这个带有复选框的页面最终会为您生成一个名为的主文件package.xml
(该文件在迁移工具中的工作方式完全相同)。它可能有几个节点,但其中应该包含“工作流”。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<!-- Some other stuff, depending what you clicked -->
<types>
<members>*</members>
<name>Workflow</name>
</types>
<!-- Some other stuff (in alphabetical order) -->
<version>26.0</version>
</Package>
完成下载(稍后您可以右键单击“src”文件夹以转到“Force.com -> 从服务器刷新”)。您将看到所有工作流程定义,并且必须对它们运行搜索。我不会帮助您使用 XML 解析器;)但在 Eclipse 中,Ctrl+H 应该带来全局搜索(Ctrl+F 将仅在打开的文件中搜索)。
示例工作流定义文件(在创建某些自定义对象的新记录时,它会从帐户中复制查找中提供的值):
<?xml version="1.0" encoding="UTF-8"?>
<Workflow xmlns="http://soap.sforce.com/2006/04/metadata">
<fieldUpdates>
<fullName>Copy_XXX_From_Account</fullName>
<field>XXX__c</field>
<formula>TEXT(Account__r.XXX__c)</formula>
<name>Copy XXX From Account</name>
<notifyAssignee>false</notifyAssignee>
<operation>Formula</operation>
<protected>false</protected>
</fieldUpdates>
<rules>
<fullName>copy</fullName>
<actions>
<name>copy</name>
<type>FieldUpdate</type>
</actions>
<active>true</active>
<formula>ISNEW() || ISCHANGED(Account__c) || ISCHANGED(XXX__c)</formula>
<triggerType>onAllChanges</triggerType>
</rules>
</Workflow>
您最感兴趣的工作流程看起来会有所不同。<rules>
标签仍将存在(触发条件),但您可能会寻找<emailalerts>
名称为名称或其他名称的节点,我不记得了。
有关更多好东西,请参阅元数据 API 指南。例如,我还没有在我的沙盒中看到它,因为我还没有升级到 Summer '13 版本,但我知道很快就可以下载审批流程定义。支持的类型列表在这里: http: //www.salesforce.com/us/developer/docs/api_meta/Content/meta_types_list.htm
审批流程页面包含您可以准备搜索的示例 XML 。