优先级
当前的 参数赋值规则
url 参数>平台挂载参数>参数面板控件>模板参数>全局参数>表单 body 控件>预览界面的控件
数据集参数不参与计算。
根据目前的梳理。
实际为
预览界面的控件变更>PARAMETERS=URL 参数> 平台挂载参数 >参数面板控件>模板参数>全局参数>表单 body 控件
数据集在通过 com.fr.main.impl.WorkBookHelper#getParameters
调用时会通过参数进行传递。
先忽略表单 body 控件的逻辑。看其他的逻辑。(因为表单之类的是 frm,相对独立的参数逻辑)
- 创建 weblet,生成 Session 时
com.fr.stable.web.Weblet#createSessionIDInfor
- URL 参数
- 平台挂载参数
com.fr.decision.extension.report.preview.template.CptPreview#dealWithCpt
- 预览界面控件值变更
- 参数面板控件
post 请求 和 get 请求的 url 参数的优先级?
相同的等级取决于先后顺序。
数据集参数
- com.fr.base.ParameterHolder#getParameters
- dealWithParameters:353, FormSessionIDInfor (com.fr.web.core)
- getParameterMap:313, FormSessionIDInfor (com.fr.web.core)
- getReportParameterMap:376, RepositoryDeal (com.fr.web)
- getReportParameterMap:23, ReportRepositoryDeal (com.fr.web.core)
- getReportParameterMap:376, RepositoryDeal (com.fr.web)
- getParameterMap:313, FormSessionIDInfor (com.fr.web.core)
- dealWithParameters:353, FormSessionIDInfor (com.fr.web.core)
混合 数据集函数 + 模板参数。从而出现数据集参数参与到后续的计算,然后冲突导致异常的情况。
但是这个方法有存在的价值,比如上面的逻辑,获取所有的参数。后面就可以对数据集参数进行配置。
应该怎么处理呢?
- 挨个对所有获取参数的部分进行定位。确认是否需要数据集参数的逻辑
- 所有的地方都获取不了数据集参数
- 在
ParameterSourceCollector
里面添加参数的值。从而在获取的地方可以回溯参数- 参考
ParameterSourceCollector
,做一个线程层级的 Param, 这样获取的时候,相关的 Parameter 都知道是什么东西。
- 参考
多级上报/定时任务/超链接/导出
优先级是什么,定规则
多级上报
com.fr.decision.workflow.util.WorkflowBridge#addReportProcessParas
预览界面的控件变更>PARAMETERS=多级上报参数=URL 参数> 平台挂载参数 >参数面板控件>模板参数>全局参数>表单 body 控件
导出
com.fr.js.ExportJavaScript#actionJS
预览页面下的控件变更 > 继承参数 == 自定义参数 > URL 参数 > …
超链接
com.fr.js.Hyperlink#putExtendParameters(com.fr.stable.web.Repository, com.fr.json.JSONObject)
com.fr.js.ReportletParameterGetter
预览页面下的控件变更(点击查询) > 继承参数 == 自定义参数 > URL 参数 > …
定时调度
com.fr.schedule.extension.report.job.execute.ReportCalculationJob#calculationCpt
自定义参数 == URL 参数