SuperAPI AI 工具集

enonic-content-management

办公与效率

查看项目

更新于 10-15 22:10

技能介绍

用途:为 Enonic XP 项目生成内容批量操作脚本,覆盖批量创建(从 JSON、CSV、API 等外部来源导入)、批量更新、批量删除、迁移(路径、站点或环境间移动与转换)、查询与聚合,以及处理约 100 条以上数据的长任务。

主要能力:识别工作区中的 Enonic XP 项目标记(含 com.enonic.xp 依赖的 build.gradle、src/main/resources 目录、含 xpVersion 的 gradle.properties);从 gradle.properties 或 build.gradle 确定 XP 版本以选用正确 API;按 lib-content(CMS 内容、发布/取消发布、内容类型校验)或 lib-node(底层节点、自定义仓库)选择 API 层,并用 lib-context 处理分支(draft 修改、master 读取)与 role:system.admin 提权。

使用方式:可用 Node 运行时执行 node scripts/find-enonic-targets.mjs . 扫描项目标记与已有内容操作文件;无项目时停止并说明仅面向 Enonic XP。查询部分要求用 NoQL 或 DSL 匹配内容,按 contentTypes、instant()/dateTime() 与 range()、fulltext()、_path LIKE 及 exists/hasValue 等组合过滤与聚合。批量处理采用 start/count 分页,count 取 50 到 200,循环至 result.hits.length === 0 或 start >= result.total;批量创建可设 refresh: false 后手动刷新,批量 publish 按 50 至 100 分组。修改在 draft 分支,之后发布到 master;XP < 7.12 需传 sourceBranch: 'draft' 与 targetBranch: 'master',7.12+ 这两个参数被忽略。长任务用 lib-task 包装,以 taskLib.progress 报告进度,用 isRunning() 避免重复,必要时用 sleep() 限流;XP 7.13+ 命名任务 run 函数第二参数为 taskId。结束时汇总处理、成功与失败数量,并对迁移与发布分别验证目标路径与 master 分支状态。

限制:仅适用于 Enonic XP 项目,无项目时不做处理;需 Node 运行时才能运行扫描脚本;模板为 TypeScript/ESM 语法,部署为 .js 需改为 CommonJS;约 100 条以上操作需任务控制器;查询零结果时需检查语法、分支与属性路径(如日期比较缺 instant() 包装);发布或修改出现 AccessDeniedException 时需通过 lib-context 加入 role:system.admin。