【发布时间】:2013-06-03 07:10:26
【问题描述】:
我有一个要求,即 salesforce 组织上的用户被停用(即用户离开了组织),我必须检索所有 与用户相关的工作,例如调度 1. 报告和仪表板 2. Apex 类 3.数据导出/导入等。 而且我还需要停用工作流程以及所有依赖于该用户的工作流程。我必须使用一些脚本来自动化所有这些任务。
如何完成这项任务?
【问题讨论】:
标签: javascript api salesforce metadata
我有一个要求,即 salesforce 组织上的用户被停用(即用户离开了组织),我必须检索所有 与用户相关的工作,例如调度 1. 报告和仪表板 2. Apex 类 3.数据导出/导入等。 而且我还需要停用工作流程以及所有依赖于该用户的工作流程。我必须使用一些脚本来自动化所有这些任务。
如何完成这项任务?
【问题讨论】:
标签: javascript api salesforce metadata
你为什么把它标记为javascript?
计划的作业(包括报告导出)将显示在“设置”页面上,因此这是一个屏幕抓取解决方案。这些数据也应该在CronTrigger 表中可用。据我所知,tis 表不支持更新,因此您只能使用 SELECT 检测它们,这将是手动操作来杀死它们并为不同的用户安排新作业。
数据导出 - 我认为只有 1 周导出服务可能?恐怕手动检查/屏幕截图。或者您的系统管理员团队会收到通知,指出作业因用户不活动而失败。
工作流(实际上是电子邮件更新)和代码中的硬编码引用:我会在 Eclipse 中运行搜索(或使用任何其他元数据 API 工具下载文件)。
审批流程:这曾经很痛苦,现在它们也是元数据的一部分。
编辑
你用过Force.com IDE吗?它是一个主要针对开发人员(程序员)的工具,但也可供系统管理员使用。它能够检索您的整个 Salesforce 项目(对象定义、字段、类、页面布局、工作流规则、共享规则......),以及对它们进行更改并将它们从一个环境移动到另一个环境。如果您要部署更大的更改集,则使用 IDE 可能比单击创建更改集更快。它本质上是 Eclipse 的一个插件 - 用 Java 编写的程序员工具。
还有其他可用的元数据 API 工具。根据您在某些时候需要编写脚本的程度,您可能会放弃 Eclipse 转而使用 Migration Tool,这将使从命令行运行项目检索成为可能,然后您可能会使用一些 XML 解析器搜索您的用户...但是现在我推荐 Eclipse,因为它更容易,更直观。 (旁注:Data Loader 可用于类似的事情 - 搜索所述用户拥有的所有记录并将它们转移给新所有者。元数据是关于您的配置、数据库中的表等,而不是关于存储在这些表中的实际记录)。
无论如何:下载 IDE 并单击创建新项目 (this might help, check out at least the images)。例如,您将需要下载 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> 或其他名称的节点,我不记得了。
更多好东西请咨询Metadata API guide。例如,我还没有在我的沙盒中看到它,因为我还没有升级到 Summer '13 版本,但我知道很快就可以下载审批流程定义。支持的类型列表在这里:http://www.salesforce.com/us/developer/docs/api_meta/Content/meta_types_list.htm
page for approval process 包含一个示例 XML,您可以准备搜索。
【讨论】:
awheeler@example.com 在 <approver> 节点。您只需要运行搜索和替换?至于保存:Eclipse 可以像这样使用 Mig 将更改保存到服务器。工具指南 - 阅读 deploy() 命令。