计算机系统应用  2021, Vol. 30 Issue (12): 139-146   PDF    
卫星星座健康状态管理文档的自动生成方法
米琳1,2, 李子扬1,2, 李晓辉1,2, 朱家佳1,2, 窦帅1,2, 张静1,2, 苑馨方1,2, 李传荣1,2     
1. 中国科学院 空天信息创新研究院, 北京 100094;
2. 中国科学院 定量遥感信息技术重点实验室, 北京 100094
摘要:针对卫星星座健康状态管理文档涉及多项遥测参数的查询和计算、文档格式要求严格、编制工作量巨大、人工耗时较长的问题, 提出了一种卫星星座健康状态管理文档自动生成方法. 通过对文档中所含的基本数据类型进行归类分析, 制定配置文件存储规则, 对文档模板进行自定义设置, 并应用文档自动生成算法, 利用文档模板及相关参数生成数据汇总文档. 该方法能够实现文档编制过程中的知识复用和通用内容生成, 建立规范有效的文档编制流程.
关键词: 健康状态管理文档    自动生成    自定义模板    数学模型    数据填充    
Automatic Generation Method for Health Management Document of Satellite Constellation
MI Lin1,2, LI Zi-Yang1,2, LI Xiao-Hui1,2, ZHU Jia-Jia1,2, DOU Shuai1,2, ZHANG Jing1,2, YUAN Xin-Fang1,2, LI Chuan-Rong1,2     
1. Aerospace Information Research Institute, Chinese Academy of Sciences, Beijing 100094, China;
2. Key Laboratory of Quantitative Remote Sensing Information Technology, Chinese Academy of Sciences, Beijing 100094, China
Foundation item: “Large Swan” Project, Strategic Priority Research Program of Chinese Academy of Sciences (Category A)
Abstract: The satellite constellation which have strict format and involve query and calculation of multiple telemetry parameters. In order to solve the problem of large workload and long time consuming in preparing health management documents of satellite constellation, a method of document automatic generation is proposed. By classifying and analyzing the basic data types of the document, making the configuration file storage rules, customizing the document templates, and applying the automatic document generation algorithm to translate the document template into data-gathering documents, the knowledge reuse and general content generation in the process of document preparation are realized. The standard and effective document preparation process is established.
Key words: health management document     automatic generation     custom templates     mathematic model     data filling    

伴随低轨大型卫星星座蓬勃发展、在轨卫星数量急剧增加, 卫星星座在轨长期管理过程中需要编制大量具有严格格式要求的健康状态管理文档. 此类文档涉及多项遥测参数的查询和计算, 关键参数之间的关联错综复杂, 文档知识难以细粒度复用, 给工程技术人员带来巨大的工作量, 需要花费大量时间编制, 因此迫切需要提出一种面向卫星星座健康状态管理文档的自动生成方法, 对其进行有效管理及智能编制.

近年来, 国内外关于文档自动生成的研究也有很多, 如王兴强等[1]提出了一种电子病历共享文档的自动生成方法, 实现了XML格式的电子病历共享文档; 王兵兵[2]基于Spring Boot开发框架设计与实现了某公文文档自动生成系统; 曲明成等[3]基于工作流引擎对文档生成过程中的必要操作及文档模板进行了定义, 实现了电力制造企业中某些复杂计算文档的自动化生; 姜鹏等[4]提出了一种基于水利云平台的防汛文档智能生成模型.

上述文档自动生成的研究成果大多基于工作人员在运行时手动输入的内容或者是经过简单的计算公式所得数据, 替换模板内预先编辑好的标签, 从而生成所需文档, 其业务逻辑较为简单, 无法实现较为繁琐的逻辑计算以及文档中图表的绘制等复杂操作步骤. 此外, 当前文档自动生成成果与方法往往针对特殊应用, 通用性有限, 在应用中需要提取的数据来源相对单一、有限, 信息量不大, 无法同时解决诸如Word、Excel等多种格式文档的自动生成问题, 难以满足卫星星座在轨长期管理过程中海量数据(以中继卫星星座为例, 每年度的数据量可达数亿条)的信息提取和健康状态管理文档的自动生成需求.

实现卫星星座健康状态管理文档的自动生成, 其问题的关键是如何设计一个能够对文档进行多样式处理、可灵活编辑、结构化查询语言自定义、图表可个性化设置、支持多种文档输出格式、通用性强的文档自动生成系统. 本文提出了一种卫星星座健康状态管理文档的自动生成方法, 通过建立数据汇总文档自动生成模型, 实现了文档编制过程中的知识复用和通用内容生成, 最终建立规范有效的文档编制流程. 目前该系统已成功应用于中继卫星星座在轨运行长期管理, 提升了文档质量并缩短了编制周期.

1 模型构建与算法研究

卫星星座健康状态管理文档一般是基于数据库的基础数据, 按照一定的业务规则经过复杂的计算和统计得到的数据汇总文档. 为了更直观地展示卫星星座在轨运行状态, 部分文档要求把行、列中的数据转变为更有意义的图形, 以便决策者更快地从大量数据中发现新的现象或规律. 对于不同时期同一卫星星座相同在轨运行管控任务的数据汇总文档, 在格式和样式上基本相同, 主要工作是针对特定的日期对遥测参数进行查询、统计、处理, 以及图表绘制等. 卫星星座健康状态管理文档的自动生成方法的处理流程如图1所示.

建立文档模板, 划分常量域与变量域, 根据实际需要对其通用格式进行自定义设置, 文档模板的格式可以为 Word、Excel、PowerPoint、PDF等, 以Word为典型代表的文档模板是本文解决的主要问题. 在此基础上, 根据模板中所包含的元素, 建立一个文档描述模型, 对变量域进行具体数据的填充, 进而导出为目标格式的文档. 为了阐述的准确性, 后文中出现的文档片段均以“某卫星某次位置保持”为例.

图 1 卫星星座健康状态管理文档文档自动生成流程

1.1 文档自定义模板

卫星星座健康状态管理文档中包含内容相同, 格式、样式与版式一致, 并且位置固定的区域为常量域, 常量域以外的区域为变量域. 常量域与变量域中的数据既可以是文字, 也可以是图片. 对文档中的变量域进行编辑, 保留常量域, 即可生成文档模板[5]. 对于格式为Word的文档模板, 本文采用书签功能以解决文档变量域的导航问题[6,7]; 对于格式为Excel的文档模板, 本文采用行列标号作为每个数据所在位置的唯一标识. 对于每个变量的实际数据显示位置, 分别插入相应的书签, 可以轻松快速地定位到所在位置. 不同名称的书签固定被解释为某一业务指标, 可以进行添加、删除或者修改, 但同一篇文档模板中不可出现重复的书签名称.

为了将书签名称及对应的变量信息进行持久化存储, 本文采用了XML文件为文档变量域信息提供存取支持[8,9]. XML是W3C组织定义的计算机文档表示的标准标记元语言, 遵循清晰严格的语法, 将数据的显示样式与数据本身分离, 具有比关系模型更灵活和更强的描述能力, 因此可作为一种“数据库逻辑模型”应用于文档自动生成, 实现文档模板的可定制化.

卫星星座健康状态管理文档的变量域所包括的数据类型可归纳为以下6种: (1)直接获取的数据, 包括通过用户输入或者从外部文件直接读取的数据, 定义为Direct data; (2)通过数据库检索所得数据, 定义为Database data; (3)基于Direct data结合业务公式计算所得数据, 定义为Calculated data; (4)重用Database data/Calculated data, 结合数据库搜索和业务公式进行综合计算所得数据, 定义为Complicated data; (5)增长下降类文字, 例如增加/减少, 上升/下降等, 定义为Trend word; (6)反应一定时间范围内数据变化趋势的图表, 结合业务公式计算得到的数据, 定义为Chart.

不同类型的变量对应于不同类型的书签, 所存储的变量信息也有所不同, XML文件作为与文档模板配套的辅助索引文件, 负责记录填充文档模板生成目标文档所需的关键信息, 包括数据存储索引、数据计算公式以及数据填充索引等信息. 在后续数据汇总的过程中, 根据XML文件记录的索引关系, 针对于不同的数据, 匹配相应的计算公式和函数将最终的数据填充到文档模板中生成目标文档.

XML文件存储规则如下:

(1) Direct data: 业务名称和唯一英文标识;

(2) Database data: 业务名称, 唯一英文标识, 以及需要查询的数据库字段和表单信息;

(3) Calculated data: 业务名称, 唯一英文标识, 以及该数据的计算公式;

(4) Complicated data: 业务名称, 唯一英文标识, 以及该数据的查询信息或者计算公式;

(5) Trend word: 业务名称, 唯一英文标识, 以及所参考的数据英文标识;

(6) Chart: 图表名称, 数据源, 以及坐标轴和标题等自定义信息.

1.2 文档描述模型

文档模板建立后, 要解决的关键问题是如何对文档中变量域(书签所在位置)进行数据的填充. 为了方便数据汇总文档生成过程中数据的计算, 本文建立了一个文档描述模型, 将文档模板、文档变量域、目标文档以及文档生成过程中一些必要操作用数学符号和语言进行了表述和定义[3,4].

(1) 文档模板抽象为一个二元组 $T(C,K)$ , 其中, C为文档模板中的常量域部分, K为文档模板中变量域的标识(书签或者行列标记)部分, K的取值为一个六元组 $K = \{ {K_1},{K_2},{K_3}, \cdots ,{K_{{n}}}\},K = < {\alpha _K},{\beta _K},{\gamma _K},{\delta _K},{\mu _K},$ ${\sigma _K} > $ , 式中, ${\alpha _K},{\beta _K},{\gamma _K},{\delta _K},{\mu _K},{\sigma _K}$ 分别代表目标文档变量域6种元素(Direct data, Database data, Calculated data, Complicated data, Trend word, Chart)在文档模板中对应的变量域标识, 即数据填充索引.

(2) 目标文档为一个二元组 $D(C,V)$ , 其中, C为文档中常量域部分, V为目标文档中变量域在给定输入条件下的最终取值. V的最终取值为一个六元组 $V = $ $ \{ {V_1},{V_2},{V_3}, \cdots ,{V_{{n}}}\} ,V = < {\alpha _V},{\beta _V},{\gamma _V},{\delta _V},{\mu _V},{\sigma _V} >$ , 式中 ${\alpha _V}, $ $ \;{\beta _V},{\gamma _V},{\delta _V},{\mu _V},{\sigma _V}$ 分别代表变量域中所包含的6类元素.

以“中继卫星某次位置保持”业务文档片段为例——“2016年1月12日卫星东西位置保持, 控制卫星运行轨道点火点半长轴1214米, 熄火点半长轴1000米, 半长轴减小214米, 控制期间陀螺组件温度变化如图1所示”. 在该片段中, “2016年1月12日”、“1214”、“1000”、“减小”、“214”、“图1陀螺组件温度变化”是变量域, 对应的类型分别是 ${\alpha _V},{\beta _V},{\gamma _V},{\delta _V},{\mu _V},{\sigma _V}$ . 在文档模板中将其分别转化为书签 ${K_1},{K_2},{K_3},{K_4},{K_{\rm{5}}},{K_6}$ , 对应的书签类型为 ${\alpha _K},{\beta _K},{\gamma _K},{\delta _K},{\mu _K},{\sigma _K}$ . XML文件示例如图2所示.

图 2 配置文件示例

图2中, 业务名称为点火点半长轴对应的数据填充索引为 ${\sigma _{K-1}}$ , 判断该数据的数据类型为Database data, 英文标识为 $FIREAXIS$ , 查询的数据库字段为 $Axis\_Fire$ , 查询的表单信息为 $Sys\_Dictionary$ , 根据这些信息可以准确地从数据库中查询到点火点半长轴的数值.

1.3 文档书签匹配算法

文档描述模型的求解过程就是利用XML文件中的索引信息对所需数据进行提取、计算和填充, 以生成目标文档. 文档书签匹配算法中主要涉及到3种公式, 分别为业务公式、变量公式和算术公式.

业务公式 $[A]$ : 如文档中的“轨道半长轴改变量=熄火点轨道半长轴—点火点轨道半长轴”, 该计算公式即为业务公式.

变量公式 $[B]$ : 将文档中特定的业务名称映射为系统变量, 如熄火点轨道半长轴FI, 点火点轨道半长轴NI, 则上述业务公式对应的变量公式为 $FI - NI$ . 特别需要指出地, 对于只有一个变量的情况, 如 $N,{{(N + 2)} / {100}}$ 也是变量公式. 用户可根据语言习惯定义系统变量, 一个变量只能固定被解释为某一个业务指标.

算术公式 $[X]$ : 变量公式在系统运行时针对特定的输入条件自动生成算术公式, 如已通过查询或者计算得到 $FI = 1000$ , $NI = 1214$ , 则 $FI - NI$ 自动生成“ $1000- $ $ 1214$ ”.

在文档模板自定义阶段, 操作人员需要首先完成业务公式到变量公式的转化, 并根据已制定的XML文件存储规则将变量信息写入配置文件.

下面讨论文档书签匹配算法中最关键也是最复杂的步骤——变量公式到算术公式的转换. 根据上文对卫星星座健康状态管理文档中6种数据类型的描述, 需要针对每类元素采用不同的公式进行求解.

(1) 直接获取的数据(Direct data), 无需进行任何计算;

(2) 数据库搜索所得数据(Database data), 需要利查询条件从数据库中进行检索, 计算函数如下:

${V_\beta } = Q(CN,TN,F)$ (1)

式中, CN代表数据库字段名称, TN代表数据库表单名称, F代表选择标准, 如日期时间(直接获取的数据)等筛选条件.

变量名称数据库字段和数据库表单的部分对应关系如图3所示.

图2所示 $\;{\beta _{K - 1}}$ 为例, 如需计算“2016年1月12日卫星东西位置保持的点火点半长轴”, 需调用公式: Vβ=Q(Axis_Fire, Sys_Dictionary, '2016-01-12')得到执行数据库结构化查询语句(Structured Query Language, SQL): “select Axis_Fire from Sys_Dictionary where Date = to_date('2016-01-12', 'yyyy-MM-dd')”所查询的数据 $FIREAXIS$ (即目标文档中 $\;{\beta _V}$ 类型变量对应的数据).

(3) 基于Direct data结合业务公式计算所得数据(Calculated data), 计算函数如下:

${V_\gamma } = C(VF,{V_\alpha })$ (2)

式中, VF代表求解得到Calculated data所需的变量公式, ${V_\alpha }$ 代表重用的数据Direct data.

图 3 变量名称与数据库字段的对应关系

图2所示的 ${\gamma _{K - 1}}$ 为例, 需要计算“某次位置保持的脉冲周期”, 获取所需的计算公式, 并依据变量唯一标识查找需要重用的数据(脉冲频率), 计算公式如下:

${V_\gamma } = C({1 / {MCPL}},0.4)$ (3)

式中, ${1 / {MCPL}}$ 代表求解脉冲周期 $MCZQ$ 所需的变量公式, 0.4代表已直接获取的脉冲频率 $MCPL$ 的数值(Direct data).

(4) 重用Database data/Calculated data, 结合数据库搜索和业务公式进行综合计算所得数据(Complicated data), 具体计算函数如下:

${V_\delta } = C(VF,{V_\beta }\parallel {V_\gamma })$ (4)

式中, VF代表求解Complicated data所需的变量公式, ${V_\beta }\parallel {V_\gamma }$ 代表需要重用的数据Direct data/Calculated data.

图2所示的 ${\delta _{K - 1}}$ 为例, 需要计算“卫星某位置半长轴的改变量”, 首先获取点火点半长轴FIREAXIS和熄火点半长轴CUTAXIS的值, 并判断两者是否都已被获取, 如果没有, 则通过点火点半长轴和熄火点半长轴对应的唯一的英文标识符在XML文件中查找, 并匹配对应的求解算法, 得到点火点半长轴FIREAXIS和熄火点半长轴CUTAXIS的值, 然后获取计算半长轴AXISCHANGEDATA的变量公式 $FIREAXIS - CUTAXIS$ , 计算出半长轴改变量, 具体计算公式如下:

${V_\delta } = C(FIREAXIS \text{-} CUTAXIS,'1200\parallel 1214')$ (5)

式中, $FIREAXIS \text{-} CUTAXIS$ 代表求解半长轴改变量AXISCHANGEDATA所需的变量公式, 1200代表已获取的点火点半长轴的数值, 1214代表已获取的熄火点半长轴的数值.

(5)增长下降类文字(Trend word), 计算函数如下:

${V_\mu } = C({V_\beta }\parallel {V_\gamma }\parallel {V_\delta })$ (6)

式中, ${V_\beta }\parallel {V_\gamma }\parallel {V_\delta }$ 代表求解Trend word所参考的数据.

图2所示的 ${\mu _{K - 1}}$ 为例, 需要判断“卫星某位置半长轴是增大还是减小”, 首先获取半长轴改变量 $AXISCHANGEDATA$ 并判断 $AXISCHANGEDATA$ 是否已获取, 如果没有, 则通过 $AXISCHANGEDATA$ 变量唯一英文标识在配置文件查找, 并匹配对应的求解算法, 获得参考数据, 然后根据参考数据获得Trend word. 通常情况下, 如果参考数据大于零Trend word为增大, 反之则为减小. 此例中 $AXISCHANGEDATA{\rm{ = - }}14$ , Trend word对应为“减小”.

(6) 反应一定时间范围内数据变化趋势的图表(Chart), 计算函数如下:

${V_\sigma } = D({V_\beta },AI)$ (7)

式中, ${V_\beta }$ 代表图表的数据源, AI代表从配置文件中读取的待绘制图表的属性信息(例如坐标轴、标题和图例等自定义信息).

图2中的 ${\sigma _{K - 1}}$ 为例, “中继卫星某次位置保持”需要绘制“陀螺组件温度变化曲线”. 首先进行数据库查询, 调用如下公式进行数据库检索获取数据源:

$\begin{split}{V_\beta } = & Q\left\{ TE11,TE12,TE13,TE14, \right. \\ & \left.Sys\_Parameter,'2016 \text{-} 01 \text{-} 12' \right\} \end{split} $ (8)

执行数据库SOL语句“select TE11, TE12, TE13, TE14 from Sys_Parameter where Time between to_timestamp ('2016-01-12 00:00:00','yyyy-MM-dd hh24:mi:ss') and to_timestamp ('2016-01-13 00:00:00', 'yyy-MM-dd hh24:mi:ss')”, 返回结果后调用上述公式, 依据图表属性信息进行绘制, 结果如图4所示.

待所有变量处理完毕, 调用替换函数 $ R(K,V) $ , 将模板中所有书签进行替换, 其中K为文档书签, V为在给定输入条件下变量的最后取值.

1.4 文档自动生成流程

文档自动生成的流程如图5所示.

图 4 陀螺组件温度变化曲线

步骤1. 建立空白文档, 划分常量域和变量域, 按照上述归纳的6种类型的数据对卫星星座健康状态管理文档中的数据进行分级分类, 对变量域进行标记, 保留常量域, 生成文档模板;

步骤2. 针对不同类型的数据自定义XML文件, 记录数据存储索引、数据填充索引及数据计算公式等信息;

步骤3. 统计待填充数据, 获取书签类型, 匹配文档书签求解算法, 将变量公式转化为计算公式进行计算, 计算比完毕后, 调用替换函数, 将模板中的书签进行替换;

步骤4. 数据处理完成后, 判断文档模板中待填充的数据是否都已经处理完毕, 若处理完毕, 则直接导出目标文档, 若没有处理完毕, 则重复步骤3直到用户需要统计的数据都处理完成, 再导出目标文档.

2 系统实现与应用效果

依据上文中定义的文档描述模型、相关操作和算法, 构建卫星星座健康状态管理文档自动生成系统. 系统将相关操作、算法及各类函数封装为特定的功能模块, 最终实现了文档的智能化生成.

系统主要分为文档模板定义模块、XML文件建立模块和目标文档生成模块, 实现了程序代码与模板文档的相互独立. 在系统的开发过程中采用了Microsoft专门为Office套件开发的宏语言VBA. VBA提供了访问Office文档的接口, 包含有大量针对该类文档的函数和对象, 可以对文档中各对象的属性和状态进行识别和读取[10,11]. 目前系统可支持卫星星座月份、年鉴、地影总结、位置保持控制总结等5类文档的自动生成. 以卫星某次东西控制总结为例, 首先建立卫星星座东西控制总结模板文档及其对应的XML配置文件, 然后通过界面输入获得卫星代号、控制日期和起止时间, 如图6所示.

图 5 文档自动生成流程图

以卫星控制时间段内参数为基础数据, 采用本文提出的文档自动生成数学模型生成《A星第20次东西控制总结》. 对比图7图8可以发现, 自定义模板中采用书签标识的变量域在生成的文档中均填充了有效数据, 并且生成文档的字体、段落及版面格式与自定义模板保持一致, 提升了文档质量, 节省了用户自行核对文档格式的时间. 与此同时, 基于文档自动生成数学模型同步生成了配套的Excel文档, 如图9所示, 用户可以清晰浏览图表的数据源并手动修改坐标轴、标题和图例等自定义信息.

分别对5类文档手动和自动生成的时间进行了对比分析, 如图10所示, 可以发现该文档自动生成方法大幅缩短了编制周期, 复杂业务文档的生成耗时从3个小时缩短至10分钟.

3 结束语

本文针对复杂卫星星座健康状态管理文档批量生成与文档中海量数据查询计算繁琐复杂的问题, 提出了一种高效简洁且通用的文档自动生成算法. 通过建立文档模板及对应的配置文件, 构建并实现了文档描述模型和自动生成算法, 进而对模板变量域进行实际数据填充, 导出为目标文档. 应用验证表明, 该方法实现了规范有效的文档编制流程, 极大地提高了文档生成工作的时效性和规范性, 大大降低了人力资源的开销, 具有很强的实用性.

图 6 文档自动生成系统运行效果图

图 7 自定义模板

图 8 生成Word文档效果

图 9 生成Excel文档效果

图 10 文档生成时间对比图

参考文献
[1]
王兴强, 孟娜. 一种电子病历共享文档的自动生成方法. 中国数字医学, 2019, 14(8): 103-105. DOI:10.3969/j.issn.1673-7571.2019.08.034
[2]
王兵兵. 公文文档自动生成系统的设计与实现[硕士学位论文]. 大连: 大连理工大学, 2019.
[3]
曲明成, 廖明宏, 吴翔虎, 等. 一种文档自动生成模型的构建及其应用. 计算机集成制造系统, 2008, 14(7): 1297-1305. DOI:10.13196/j.cims.2008.07.51.qumch.008
[4]
姜鹏, 许峰, 戚荣志. 一种基于云平台的防汛文档智能生成模型构建. 水利信息化, 2013(3): 25-32. DOI:10.19364/j.1674-9405.2013.03.008
[5]
张琼妮, 肖刚, 张元鸣, 等. 一种基于Word自定义模板的文档管理模式. 浙江工业大学学报, 2006, 34(1): 101-104. DOI:10.3969/j.issn.1006-4303.2006.01.026
[6]
车晓波, 王知学, 王磊. 在实现Word自动化操作中书签的应用. 信息技术, 2013, 37(8): 148-150. DOI:10.13274/j.cnki.hdzj.2013.08.034
[7]
周千明, 朱欣娟, 胡西民. 基于Aspose技术的自定义模板文档生成方法. 计算机系统应用, 2015, 24(6): 235-238.
[8]
曾庆良, 王伟, 范文慧, 等. 基于XML/Macro的文档自动生成系统的研究与实现. 计算机应用研究, 2006, 23(7): 121-122, 149. DOI:10.3969/j.issn.1001-3695.2006.07.042
[9]
葛芬, 吴宁. 基于多种技术的Word设计文档自动生成平台. 电子科技大学学报, 2007, 36(2): 263-266. DOI:10.3969/j.issn.1001-0548.2007.02.032
[10]
李爱玲, 李湘江. 基于VBA的Word文档自动评阅技术研究. 科学技术与工程, 2008, 8(17): 4859-4863, 4868. DOI:10.3969/j.issn.1671-1815.2008.17.020
[11]
张智丰, 张亚荣. 基于ASP和VBA技术自动生成复杂Word格式试卷. 内蒙古民族大学学报(自然科学版), 2009, 24(6): 620-622.