Salesforce怎么从生产环境删除Apex

一般来讲,就算是DevOps团队也很难遇到需要删除Apex的情景。
毕竟在一个系统的生命周期里,大部分时间都是不断的增加功能,或者改动现有功能。
仅剩的一点点的遗弃功能的需求,也会因为考虑到风险问题,从而选择将废弃代码放在那里不再调用。
毕竟,维护团队的准则————不动就没事,动了就要担风险。

其实,还有一种需要删除Apex操作的情景,就是回滚。
Salesforce与常规的Java项目不大一样,如果上线出现问题,很难做到完美回滚。
曾经有人很天真地和我说,将生产环境的MetaData全部备份,如果上线出问题就全都deploy回去。
java web系统确实可以这么做,一个新版war包,一个旧war包,出问题就停机覆盖回去,一切就都恢复如初了,完美。
可惜,如果Salesforce这么做就会面临一场巨大的灾难!
首先,你有很大的几率会彻彻底底的失败。因为Salesforce在deploy的时候要计算metadata之间的关系。
你会因为各种狗追尾巴似的关系依赖,导致失败,继而崩溃。
还有一些永远无法被正确Deploy上去的metadata,会将你的生产环境毁成一片废墟。
在Salesforce里,只要是稍微复杂一点的Org,就永远不要幻想将全部的Metadata都一口气deploy上去。

话说回来,Salesforce最安全的回滚方式还是逆操作。就像录像带的倒放。
但是,就算是逆操作,仍然不能保证安全的,原原本本的回到从前,尤其是回滚包含修复数据动作的时候。
所以在上线之前,针对回滚,认认真真地制定一个回滚方案是非常,非常有必要的。
当然,如果你每次上线只是加一个Field,当我没说。
不过,就算是只删一个Field的话,慎重吧。

回到正题,怎么去删除一个Apex。
有的同学说了。直接删就好了啊。
那么。。。只接触过Developer环境和Sandbox的可以出门右转了。生产环境是无法直接删除的。

那么,下面,先讲一个简单的方法。

首先,我们有一个ApexClass,叫DeleteSample。

然后在ForceIDE中,新建一个Project,将其MetaData取下。

之后打开此Apex,之后切换到Metadata标签上。

然后将Status从Active改成Deleted

然后,保存,在Apex上点右键,Force.com -> Deploy to Server。

之后填入用户名密码,下一步,强调一下,被删除的Apex会被标记成Overwrite,且默认不被选中。如果是新建的代码则会被标记成New,绿色,自动勾选。修改的代码被标记成Modify,黄色,自动勾选。这里,一定要记得钩选上。

然后无脑下一步,直到看到Success。

然后回到系统里,就发现DeleteSample已经不见了!

就这样。简单吧。

 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据