优先级

当前的 参数赋值规则
url 参数>平台挂载参数>参数面板控件>模板参数>全局参数>表单 body 控件>预览界面的控件
数据集参数不参与计算。

根据目前的梳理。
实际为
预览界面的控件变更>PARAMETERS=URL 参数> 平台挂载参数 >参数面板控件>模板参数>全局参数>表单 body 控件
数据集在通过 com.fr.main.impl.WorkBookHelper#getParameters 调用时会通过参数进行传递。

先忽略表单 body 控件的逻辑。看其他的逻辑。(因为表单之类的是 frm,相对独立的参数逻辑)

  1. 创建 weblet,生成 Session 时
    1. com.fr.stable.web.Weblet#createSessionIDInfor
    2. URL 参数
    3. 平台挂载参数
      1. com.fr.decision.extension.report.preview.template.CptPreview#dealWithCpt
  2. 预览界面控件值变更
  3. 参数面板控件

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)
 
FormHelper.getParameters(this.parameters, this.tableDataList)
com.fr.main.impl.WorkBookHelper#getParameters

混合 数据集函数 + 模板参数。从而出现数据集参数参与到后续的计算,然后冲突导致异常的情况。

520

但是这个方法有存在的价值,比如上面的逻辑,获取所有的参数。后面就可以对数据集参数进行配置。

应该怎么处理呢?

  1. 挨个对所有获取参数的部分进行定位。确认是否需要数据集参数的逻辑
  2. 所有的地方都获取不了数据集参数
  3. ParameterSourceCollector 里面添加参数的值。从而在获取的地方可以回溯参数
    1. 参考 ParameterSourceCollector ,做一个线程层级的 Param, 这样获取的时候,相关的 Parameter 都知道是什么东西。

多级上报/定时任务/超链接/导出

优先级是什么,定规则

多级上报

com.fr.decision.workflow.util.WorkflowBridge#addReportProcessParas

String id = WebUtils.getHTTPRequestParameter(req, ParameterConstants.__PROCESSTASKID__);  
processParas.put(ParameterConstants.FR_TASK_ID, getFrTaskId(id));  
processParas.put(ParameterConstants.FR_TASK_NAME, getTaskName(id));  
processParas.put(ParameterConstants.FR_TASK_STATE, getTaskState(id));  
processParas.put(ParameterConstants.FR_TASK_SENDER, getTaskSender(id));  
//数据上报任务里的参数也拿出来.  
Parameter[] paras = getTaskParameters(id, repo);  
for (Parameter temp : paras) {  
    processParas.put(temp.getName(), temp.getValue());  
}

预览界面的控件变更>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 参数