【问题标题】:Transferring Users on a Salesforce Org转移 Salesforce 组织上的用户
【发布时间】:2013-06-03 07:10:26
【问题描述】:

我有一个要求,即 salesforce 组织上的用户被停用(即用户离开了组织),我必须检索所有 与用户相关的工作,例如调度 1. 报告和仪表板 2. Apex 类 3.数据导出/导入等。 而且我还需要停用工作流程以及所有依赖于该用户的工作流程。我必须使用一些脚本来自动化所有这些任务。

如何完成这项任务?

【问题讨论】:

    标签: javascript api salesforce metadata


    【解决方案1】:

    你为什么把它标记为

    计划的作业(包括报告导出)将显示在“设置”页面上,因此这是一个屏幕抓取解决方案。这些数据也应该在CronTrigger 表中可用。据我所知,tis 表不支持更新,因此您只能使用 SELECT 检测它们,这将是手动操作来杀死它们并为不同的用户安排新作业。

    数据导出 - 我认为只有 1 周导出服务可能?恐怕手动检查/屏幕截图。或者您的系统管理员团队会收到通知,指出作业因用户不活动而失败。

    工作流(实际上是电子邮件更新)和代码中的硬编码引用:我会在 Eclipse 中运行搜索(或使用任何其他元数据 API 工具下载文件)。

    审批流程:这曾经很痛苦,现在它们也是元数据的一部分。


    编辑

    你用过Force.com IDE吗?它是一个主要针对开发人员(程序员)的工具,但也可供系统管理员使用。它能够检索您的整个 Salesforce 项目(对象定义、字段、类、页面布局、工作流规则、共享规则......),以及对它们进行更改并将它们从一个环境移动到另一个环境。如果您要部署更大的更改集,则使用 IDE 可能比单击创建更改集更快。它本质上是 Eclipse 的一个插件 - 用 Ja​​va 编写的程序员工具。

    还有其他可用的元数据 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>
    

    您最感兴趣的工作流程看起来会有所不同。 &lt;rules&gt; 标签仍然存在(触发条件),但您可能会寻找带有 &lt;emailalerts&gt; 或其他名称的节点,我不记得了。

    更多好东西请咨询Metadata API guide。例如,我还没有在我的沙盒中看到它,因为我还没有升级到 Summer '13 版本,但我知道很快就可以下载审批流程定义。支持的类型列表在这里:http://www.salesforce.com/us/developer/docs/api_meta/Content/meta_types_list.htm

    page for approval process 包含一个示例 XML,您可以准备搜索。

    【讨论】:

    • 我认为 javascript 也会发挥一些作用,所以也添加了这一点。您能否使用元数据 API 工具简要介绍工作流程、审批流程、字段更新、电子邮件警报等。
    • 如何检索工作流程、审批流程、字段更新、电子邮件警报等,并更改为其他用户或使用元数据 API 工具停用?如果您能详细说明它会非常有帮助。
    • 是的,但我担心从非活跃用户变为一些活跃用户。他们将是 XML 中的任何标签来更改其他用户。如何更改并将其部署回同一实例?我希望通过一些脚本来完成。
    • 在审批流程的 xml 样本中找到 awheeler@example.com&lt;approver&gt; 节点。您只需要运行搜索和替换?至于保存:Eclipse 可以像这样使用 Mig 将更改保存到服务器。工具指南 - 阅读 deploy() 命令。
    • 我已经使用元数据 api 的部署命令更改标签 等,但它们在实例上没有变化,尽管 DeployResult 对象说部署成功。会有什么问题?
    猜你喜欢
    • 1970-01-01
    • 2022-01-28
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多