JAVA技术文章

2020-01-06 Ant Migration Tool

2020-01-08  本文已影响0人  古月的小七

Salesforce部署交付有多种形式,比如 upload package, changeset 或者使用 Ant Migration Tool。

Sending a change set between two orgs requires a deployment connection. Change sets can only be sent between orgs that are affiliated with a production org. For example, a production org and a sandbox, or two sandboxes created from the same org can send or receive change sets. (做 Change Set的前提是两个Org之间必须有部署关系,比如你可以从Sandbox部署到Production Org,或者两个Sandbox之间去部署,但是这两个Sandbox之间必须是从同一个Production上refresh出来的)。

但是如果两个Org之间没有关系怎么办呢?那就需要使用我们强大的Ant Migration Tool了,其实在做项目的过程中只要维护好我们的Package.xml文件,其实是很方便我们部署的。那么下面我们就看一下使用这个工具我们需要做些什么和我们在实际的部署中会遇到哪些问题。这个是官方Guide
链接。
1.Prerequisites: Install Java and Ant(准备工作)
Download Apache Ant Latest Version (配置环境变量)
Download the .zip file of the Winter '20 Ant Migration Tool, 解压缩zip文件你可以看到build.xml 和 build.properties文件,把这两个文件copy到和你的package同一目录的路径下,且package名字可以改成codepkg,这样就不用修改Build.xml文件的内容了. 在build.properties文件中把你的sf.username和sf.password改成你target org的用户名和密码。有的时候可以把你的security token或者是把IP设置成0.0.0.0 - 255.255.255.255.
2.Package.xml
当你的准备工作之后,你就需要准备部署的package.xml了,这也是整个过程中最痛苦的工作了,但是在Toolkit for Salesforce中有一个Package Builder的小工具可以生成当前Org的package.xml,之后可以使用Workbench中一个migration tab retrieve 所有的Metadata到本地,解压缩放到我们的codepkg文件夹下,这时打开Command Line,指定到当前目录,输入ant deployCodeCheckOnly这时就可以检测你的package是否可以安装到你的目标环境了。
3.部署过程中会遇到的问题
(1) -- Error: Picklist value: Existing Business in picklist: Type not found. 这是因为你的PickList的value没有被部署过去,这时候你需要在你的package.xml中添加如下的内容,针对Standard Value Set我们有一个对照表
可以参考。

<types>
        <members>OpportunityType</members>
        <name>StandardValueSet</name>
  </types>

(2)workflows/Task.workflow (Task.Email_Alert_on_Hot_Lead)Error: In field: recipient - no User named utta.kumar@pcc..pcs found。 这是因为你在Email Alert中把recipient设置成了固定的人,除非你的项目有特殊需求,不然不要设置成固定的人接收。
(3)Error: Variable does not exist: RecordTypeId in opportunity, 这时我们需要我们可以用下面的方式去判断。

 Boolean bHasField = Opportunity.getSobjectType().getDescribe().fields.getMap()
. keySet().contains('RecordTypeId');
 if(bHasField && opp.get('RecordTypeId') != null){ 
\\ write your own logic
}

(4) -- Error: In field: businessProcess - no BusinessProcess named Opportunity.FinServ__Opportunity Process found。在创建Record Type中需要选择一个Sales Process, 这个时候需要检查你的Sales Process是否含有一些值。
(5)-- Error: invalid report type,再导入report的时候需要导入report type.
(6) reportTypes/Account_Plan_With_Opportunities.reportType -- Error: Could not find field SyncedQuote in table Opportunity,可以在Report Type里面去编辑,把不需要的field在report layout上拖到 Not in Page Layout上。
(7) 可以在build.xml中设置不用run test test。

Ant Migration Tool的好处是只要我们维护好我们的package.xml文件,以后的部署就会很方便了,去除了很多的重复操作,可以在项目上试试水,推荐使用。

上一篇下一篇

猜你喜欢

热点阅读