用途
本技能是一个工作流技能,用于在任何 Mule 流程与集成工作之前执行必要的准备步骤。触发场景包括:创建 Mule 应用/集成/流程、在两个系统之间构建集成、将数据从 X 同步到 Y(如 Salesforce 到 Slack、MySQL 到 Salesforce)、查询 Salesforce、发送 Slack 通知、定时任务、按 N 分钟轮询数据、创建 webhook、构建事件驱动流程。
主要能力
- 连接器发现:始终先在 Anypoint Exchange 中搜索系统专用的连接器,而不是直接依赖训练时知识。
- 数据驱动的 XML 生成:连接器版本仅来自约定流程,不硬编码版本、操作名或连接属性。
- 两阶段工作流,中间设有硬性的用户批准关卡。
- 附带零依赖的 Node 脚本(*.mjs,ESM),通过 Bash 工具以
node scripts/<name>.mjs ...方式调用,脚本输出持久化到磁盘供后续步骤机械式消费。
附带脚本
scripts/validate_prerequisites.mjs:校验工具链(CLI、DX 插件、Java 11+、JAVA_HOME、Mule 运行时),输出 tmp/mule-dev-env.json,仅做校验。scripts/get_latest_connector.mjs <search> [nickname]:搜索 Exchange,按排名打印连接器候选(groupId:assetId:version),仅输出到 stdout。scripts/pick_connector.mjs <nickname> <gav>:将选中的 GAV 记录为草稿到 tmp/connector-choices/<nickname>.json。scripts/commit_connectors.mjs:将草稿提升到 tmp/connector-versions/。scripts/build_gav.mjs <json>:将保存的连接器 JSON 转为 groupId:assetId:version 字符串。scripts/build_deps.mjs [versions-dir]:生成逗号连接的 GAV 字符串,供 dx mule project create --dependencies 使用。scripts/write_mule_artifact_env.mjs <project-dir> [env-json]:将 mule_version 与 java_version 写入项目的 mule-artifact.json,幂等操作。scripts/describe_connector.mjs <nickname> [--type operation|source --name <name>]:运行 dx mule describe-connector,保存完整 JSON 并缓存错误类型。scripts/validate_before_build.mjs <project-dir>:构建前校验(错误类型白名单、命名空间与依赖一致性、规范 XSD URL 形态)。scripts/maybe_add_http_connector.mjs --project <dir> <providers...>:当选择 OAuth 提供方时防御性检查 HTTP 连接器是否存在,并编辑 pom.xml。scripts/search_templates.mjs <search-term>:在 Anypoint Exchange 搜索模板类资产,返回最多 10 条 JSON。
使用方式
前置条件
anypoint-cli-v4 --version
anypoint-cli-v4 dx --help
echo $JAVA_HOME && java -version # Java 11+
anypoint-cli-v4 conf
如缺少工具:
npm install -g @mulesoft/anypoint-cli-v4
npm install -g @salesforce/anypoint-cli-dx-mule-plugin
anypoint-cli-v4 conf username <username>
anypoint-cli-v4 conf password <password>
工作流结构(两阶段)
第一阶段:技术设计(步骤 1–7)。识别系统、搜索 Exchange、描述连接器、选择触发方式与提供方、展示技术设计摘要、等待用户批准。第一阶段不写入用户项目目录,所有产物位于工作区相对路径 tmp/ 下。只有步骤 7 批准后才由 commit_connectors.mjs 填充 tmp/connector-versions/。
第二阶段:构建(步骤 8–18)。创建真实项目、生成配置与流程 XML、运行构建、声明完成。第二阶段是唯一触碰用户项目目录的阶段。第二阶段必须在步骤 7 批准关卡通过后才能开始。
更新模式
若工作区中已存在 pom.xml(及 src/main/mule/*.xml),则处于更新模式而非新建。更新模式下:不运行 dx mule project create,不从零重新生成文件;读取现有文件,用 Edit/replace_in_file 就地修改,保留所有无关的流程、配置和元素。若变更涉及连接器、操作、源或连接提供方,仍须先运行 get_latest_connector.mjs 和 describe_connector.mjs。任何变更后都必须运行 mvn clean package 并观察到 BUILD SUCCESS。
工作流纪律
构建→清理→完成分离(步骤 16→17→18),三个响应按顺序各含一次工具调用:先 mvn clean package,再 rm -r tmp/,最后完成信号。每次响应只调用一次 mvn。只有在 mvn clean package 返回 BUILD SUCCESS 后才能声明完成。连接器版本只能来自步骤 3 的三脚本流程,不得从目录、训练记忆或推断中粘贴。仅当 get_latest_connector.mjs 运行后返回零匹配或所有行明显是不同产品时,才可判定使用 HTTP。
适用场景
- 新建 Mule 应用、集成或流程。
- 系统间集成与数据同步(如 Salesforce 到 Slack、MySQL 到 Salesforce)。
- 定时任务、轮询、webhook、事件驱动流程。
- 在已有 Mule 项目中就地修改配置、操作、依赖或流程元素。
限制
- 工具链为必需:Anypoint CLI v4、DX 插件、Java 11+、JAVA_HOME、Mule 运行时,缺一不可;脚本退出非零时须停止并按 errors 数组处理,不得自造 Mule 版本。
- 第一阶段不得向用户发起提示(步骤 2 为阻塞项),触发决策须在步骤 5 连接器元数据落盘后进行。
- 不得在搜索运行前就宣布使用 HTTP。
- 更新模式下不得运行项目创建或从零重生成文件。
- 任何变更未经构建验证不得声明完成。
- groupId 为 UUID 的候选行代表组织发布到 Exchange 的私有连接器,应视为一等候选。
- 资料未提供具体的收费、价格、平台支持范围或效果数据。