一、背景
针对当前业务可能存在经常进行批量unpublish和archive页面的诉求,在频繁对多个页面以及自己实际去操作的基础上,结合当前情况给出的解决方案建议。
二、分析
1、步骤拆分
1.1 获取页面路径
当前业务的页面路径都是存在Excel中,大致如下样式:

详情参考Excel:
2.2 批量unpublish
2.2.1 通过Manage Publication手动选择多个页面(适合比较少的页面)
现有解决方式,选中上层目录,点击Manage Publication,如下:

选中Unpublish:

点击Add Content:

然后依次选中要unpublish的页面:

点击Unpublish即可(最好是删除掉勾选的目录):

2.3 批量archive
2.3.1 手动批量选择Copy然后Delete(适合比较少的页面)
选中要Archive的页面,点击Copy:

选中要Copy至的目标目录,然后点击Paste:

最后再勾选源页面删除即可:

2、方案对比
2.1 workflow
优点:AEM中现有的功能
缺点:
①需要通过手动勾选页面,然后选择出发workflow,没有办法导入页面路径去执行,也没有办法实现copy的功能;
②工作流的熟悉成本;
2.2 本地脚本执行(python、curl等)
优点:
①操作快捷可靠,便于开发使用,步骤可拆分执行,首先创建好备份的目录,路径粘贴到指定文本,将Cookie导入后直接执行即可;
②由于输出了每一步调用后的执行日志,可以根据日志看出哪些执行失败。
缺点:
①业务没法直接使用;
②如果是频繁有相关的处理逻辑,会占用部分开发的工作时间(通过脚本不会有太大工作量,但是需要开发进行监控和验证)。
2.3 创建单独的功能页面
优点:界面是AEM标准页面,方便业务操作。
缺点:
①具有一定的开发成本,设计的方案得确实方便业务要求;
②没有办法直接去检查到底哪些执行失败;
③如果业务误操作了还存在开发人员的运维成本。
概述:
①创建独立的组件用于该功能
②创建独立的页面将组件拖入
③业务使用的时候进入该页面点击View as Publish进入页面
④使用组件,组件工作流程大致如下:

三、总结
说明:如果当前诉求是频繁且业务想亲自进行操作的,那么目前来看,【2.3】中最后一种方案是目前较为可行且便捷的,如果进行实施,可以按以下步骤依次推进。
1、后端Servlet接口开发
第一步可以先开发一个servlet接口,参数如下:
| 参数名 | 参数值 | 说明 |
|---|---|---|
| path | /content/www/us/en/folder/a,/content/www/us/en/folder/b,/content/www/us/en/folder/c | 数组形式支持多个链接 |
| destPath | /content/www/us/en/folder/archive_20241111/ | 目标路径,即页面挪动到的目标目录 |
这样即便是本地通过脚本也可以调用该接口进行处理。
2、前端组件开发
创建新的组件,对接后端servlet接口进行功能调试,然后进行样式调整,组件样式大致如下:

最后将组件的componentGroup属性进行定义,并分配至对应页面模板,建议使用Base Page,这样可以在任何模板类型的页面下去创建。
3、测试环境使用
将组件在本地调试完毕后,部署到DEV环境进行测试。
创建单独用于该操作的页面进行处理,如/content/www/lenovo/global/us/trigger-archive
页面进入Editor页面,然后拖入组件,创建一个archive的页面用于目标地址,找一个测试的页面路径进行测试即可。
4、业务测试使用
待代码部署到QA、Stage环境,将对应页面创建调试完毕后,可交由业务进行测试使用。
5、上线
待代码部署到Prod环境后,将对应触发页面创建调试完毕后,交由业务使用。
上一篇
组件代理下一篇
集成之Adobe Target