LWC属性变化时的一种处理方法

发布时间 2023-04-29 08:12:34作者: 平静寄居者

LWC(Lightning Web Component)的属性name, role发生变化,或者要删除某个属性时,Salesforce会自动检查是否有Flow引用这个lwc,如果有,则会提示,不能删除。手工操作,需要在Flow中先去掉这个lwc,然后发布修改后的lwc,再在Flow中加回去。问题是Flow往往有好几个版本(version),一个个地手工调整,非常麻烦,几乎不可能。所以以前碰到这种情况,只好弃用原来的属性,另外添加一个。

今天忽然想到可以利用sfdx,实现一定程度的简化操作。具体办法是:

1.用sfdx force:source:retieve -m “Flow:foo-1” -r c:\bar将冲突的Flow版本下载到本地目录。这里的-1是Flow的版本号。也可以用最新的sf命令,格式差不多,sf force source retrieve -m “Flow:foo-1” -r c:\bar。文档上说推荐用sf project retrieve start,但是下载的是zip文件,并不方便。注意最新版本即使指定了版本号,下载后也会自动去掉版本号,需要手工补上。

2.手工删除冲突的Flow版本。这个本来也能用命令实现,但是如果Flow已经激活或者有interview在运行则不可以,所以还是手工删除比较方便,编程自动操作需要考虑很多情况,比较麻烦。如果Flow的所有版本都有冲突,可以直接删除Flow本身。

3.上传修改后的lwc。

4.用sf project deploy start -d c:\bar一次性上传所有的Flow版本,如果整个Flow已被删除,会自动重建,并保留原来的版本号。注意最新的版本一定要手工补上版本号。

当然,在此基础上,可以进一步用VBScript, PowerShell等编程,提高自动化程度。