MarkLogic DHF执行Flow时如何从命令行传入动态参数?
解决MarkLogic DHF中Flow JSON解析错误与命令行动态传参问题
一、修复JSON解析错误(ALLOW_COMMENTS报错)
- 找到
test_flow对应的JSON配置文件(通常路径为src/main/ml-config/flows/test_flow.json) - 检查文件内是否存在
//单行注释或/* */多行注释,标准JSON规范不支持注释,DHF默认JSON解析器未开启ALLOW_COMMENTS选项,因此必须删除所有这类注释内容 - 示例修正:
原错误配置:
修正后配置:{ "steps": { "4": { "sourceQuery": "SELECT * FROM project_data // 筛选指定项目数据" } } }{ "steps": { "4": { "sourceQuery": "SELECT * FROM project_data" } } } - 保存修改后的JSON文件,重新执行Gradle命令即可解决解析错误
二、实现命令行动态传参(projectId与projectVersionDate)
配置Flow步骤的参数占位符
在test_flow第4步的sourceQuery中,使用DHF支持的${参数名}格式定义占位符,示例:{ "steps": { "4": { "sourceQuery": "SELECT * FROM project_data WHERE project_id = '${projectId}' AND version_date = '${projectVersionDate}'" } } }通过Gradle命令传递参数
执行hubRunFlow任务时,使用-P参数指定动态值,完整命令示例:./gradlew hubRunFlow -PflowName=test_flow -Pstep=4 -PprojectId=PROJ-202405 -PprojectVersionDate=2024-05-20参数生效逻辑
DHF会自动将Flow配置中的${projectId}、${projectVersionDate}占位符,替换为命令行传入的对应参数值,执行最终拼接后的sourceQuery
内容的提问来源于stack exchange,提问作者marklogic_coder
相关产品推荐
相关产品推荐

