- Job程序逻辑
- 流程图
-
- 逻辑描述
- 根据项目类型,获取项目列表List_Project。例如:新昌林泉下面挂载着慈溪固德、新昌林泉、新昌超海、临安东方等项目。
- 根据项目类型,获取打印类型List_PrintType(同一套代码,打印类型是一样的)
- 遍历项目列表List_Project,获得各个项目的数据库连接串。
- 遍历打印列表List_PrintType,获得打印类型名。
- 根据数据库连接串、打印类型,获取各个项目的打印模板列表List_PrintMode。
- 遍历打印模板列表List_PrintMode,下载打印模板文件。
- 解析打印模板文件*.rpt,其中<TableDataSource>标签内信息为数据集,<Colum>标签内信息为数据集字段。
采用“正则表达式(?<=\[)([^\[\]]*)(?=\])”,匹配文本中【】里的内容,判断数据集字段是否配置使用。
- 数据保存数据,删除模板文件。
- 主程序逻辑
- 流程图
请求型定时器:
周期型定时器:
-
- 逻辑描述
请求型定时器:
- 初始化请求任务列表(T_task_request),取未执行的请求。
- 每分钟执行一次,遍历请求任务列表m_TaskRequest,得到执行时间。
- 判断当前时间,是否等于执行时间,误差一分钟。
- 到执行时间,根据job名,加载任务组件*.dll到内存,开启新线程,调用任务组件。
- 更新任务请求表(T_task_request)执行标识、执行结果等信息。
周期型定时器:
- 初始化任务周期表(T_task_period),取得所有记录。
- 每分钟执行一次,遍历任务周期表l_taskPeriodList,得到下次执行时间和开始时间。
- 先判断当前时间,是否等于开始时间(误差一分钟)。
- 未到开始时间,再判断当前时间,是否等于下一次执行时间(误差一分钟);到开始时间,立即执行流程5。
- 任务请求表(T_task_request)插入一条记录。
- 根据job名,加载任务组件*.dll到内存,开启新线程,调用任务组件。
- 更新周期表(T_task_period)下次执行时间、最近执行时间等信息。
-
- 参数的传递
主程序->任务组件(参数固定):文件路径,任务单号,组件数据库连接串,参数1,参数2,参数3。
任务组件配置参数:参数用户自定义,插入在参数表T_task_param中。
- 解析结果
- 打印模板里有的字段,但是打印类型里(ERP配置)没有。
做条假数据用于测试:
例如:新昌林泉,打印类型【sale_order_change】,打印模板【合同变更新增】,模板文件【sale_order_change.frx】。
打印模板中有 业务员字段
但是打印类型里,对应ERP数据集设置中已经没有。
打印类型里,对应ERP数据集设置数据还原,打印模板对比结果就为空。
-
- 打印模板里有的字段,但是打印数据集里(代码解析)没有
例如:新昌林泉,打印类型【supply_order】,打印模板【采购合同-钢管】,模板文件【supply_order.rpt】。
打印模板中有 技术条件10~技术条件19字段
代码打印数据集里并没有。