Skip to main content

快照平面文件自动化

无故障学生信息系统集成的一个组成部分是能够自动执行和监控集成所呈现的流向 Blackboard 的数据流。我们提供了两项可以促进此流程的新功能:

  1. 集成发布 URL 的结果包含数据集流程 uid。例如:

    成功:Feed 文件已上传。使用参考代码 afc3d6e84df84f51944a06cccee8f59a 在日志中跟踪这些记录。

  2. 已添加新的数据集状态 URL。与数据集流程 ID 联系时,该 URL 会返回含有关于数据集状态的细节的 XML 块。请注意,这可能会在原始数据文件的“发布”操作完成后得到充分调用。

    https:// ... /webapps/bb-data-integration-flatfile-[您的 ID]/endpoint/dataSetStatus/afc3d6e84df84f51944a06cccee8f59a

    其会返回:

    <dataSetStatus>
    
    	    <completedCount>5</completedCount>
    
    	    <dataIntegrationId type="blackboard.platform.dataintegration.DataIntegration">_123_1</dataIntegrationId>
    
    	    <dataSetUid>afc3d6e84df84f51944a06cccee8f59a</dataSetUid>
    
    	    <errorCount>0</errorCount>
    
    	    <lastEntryDate>2013-03-20T10:45:48-05:00</lastEntryDate>
    
    	    <queuedCount>0</queuedCount>
    
    	    <startDate>2013-03-20T10:45:48-05:00</startDate>
    
    	    <warningCount>0</warningCount>
    
    	</dataSetStatus>

这些新增功能可促进自动快照平面文件集成的脚本监控。

本主题将大致介绍如何自动执行和监控快照平面文件集成。提供的示例是为使用 CRON 实现自动化和 UNIX shell 脚本语言 BASH 的 UNIX 或 Linux 平台而编写的,但概念可能适用于能够执行发布/获取操作、解析字符串和日期、执行数据库查询及发送电子邮件的任何语言。因此,PERL、JAVA、PHP 和 Ruby 都适合开发,就像其他 shell 或批处理语言一样。

我们的目标是,为开发受监控的自动化 SIS 集成(采用快照平面文件)提供功能引用实施。这将包含两个组件,即自动化和监控。引用实施可通过本页面底部的链接访问。

注意

目前,通过显示的引用实施包括记录的错误消息仅与自托管系统兼容。该功能将在脚本中加以介绍,需要从代码中删除注释才能在自托管环境中使用。日后改进本文档时,将会提供一种“脚本内”访问这些日志消息的方法。

用例:自动化 学生信息系统 平面文件处理

以下使用案例是引用实施的基础,也是您自己开发的指南。

总结

自动处理 SIS 生成的快照平面文件数据并通过电子邮件报告给指定的管理员。解决方案应定期确定是否存在新数据文件、对象和数据源,并将数据呈现给 Blackboard。经过处理的文件应该放在单独的目录中以用于存档。解决方案还应提供手动处理数据文件的功能。在所有情况下,关于失败或成功的状态电子邮件应该发送给管理员。电子邮件应该包含关于流程和任何错误消息的可用数据。

演员

学生信息系统、作系统调度程序、黑板

前提 条件

在指定的目录中,SIS 为 Learn 对象(如用户、课程、注册和职员指定)生成并存储快照平面文件格式的文本文件。

描述
  1. SIS 在脚本指定的数据目录中提供快照平面文件

  2. 操作系统调度程序 (CRON) 启动 sis_snpshtFF_auto 脚本

  3. sis_snpshtFF_auto 脚本检查数据目录中是否存在任何文件

  4. sis_snpshtFF_auto 脚本确定每个文件的 Learn 对象类型

  5. sis_snpshtFF_auto脚本相应地调用sis_snpshtFF_manual脚本,并在对象层次结构中调用:用户、课程、成员资格

  6. sis_snpshtFF_manual 脚本使用 POST 将数据发送到 Blackboard,确定完成状态

  7. 如果存在错误并配置为执行此类操作,则 sis_snpshtFF_manual 会查询错误消息的集成日志

  8. sis_snpshtFF_manual 脚本构建含有状态信息的电子邮件,并将其发送至配置的电子邮件地址

  9. 对于每个数据文件,重复执行第 5-8 步操作

  10. 将所有数据文件处理完毕后,sis_snpshtFF_auto 脚本将状态电子邮件发送至配置的电子邮件地址

后置条件

SIS 生成的平面文件提供的数据按顺序添加到 Blackboard 的数据对象,原始文件将存档,并将处理时间戳添加到原始文件名中。脚本配置的管理员接收每个经过处理的文件的状态电子邮件,及一封含有完整处理任务的总体状态电子邮件。

解决方案

将 SIS 生成的数据文件放在一边(因为其超出了本文档的讨论范围),自动化问题有以下三个组件:

  • “何时”:确定何时对所提供的数据进行处理,

  • “内容”:提供数据的数据对象和数据源涵盖哪些数据对象和数据源,以及

  • “如何”:处理和监控该数据

通过上述使用案例,我们可以构建一组可配置的脚本,以确定数据文件是否存在(该任务是否能执行操作)、数据适用于哪种对象类型、调用含适当参数的处理脚本以满足集成目标、处理数据以及完成时存档数据文件。

以下部分将解决这三个组件涉及的问题。将这三个功能都安装到位将提供一个可监控的自动化流程,用于通过快照平面文件集成类型将 学生信息系统 数据移动到 Blackboard。

注意

BASH 脚本的介绍已经太多了,将不在这里加以说明。我们会重点介绍整个流程和处理详情。

“如何”:使用sis_snpshtFF_auto.sh和sis_snpshtFF_manual脚本

根据上述使用案例,下方的 BASH 脚本 (sis_snpshtFF_auto.sh) 将执行以下操作:

  • 检查指定的目录中是否存在文件

  • 根据文件中的标题信息确定对象类型和操作

  • 按照顺序处理,以便以正确的顺序处理文件。例如:用户,然后是课程,然后是成员资格。

  • 调用 sub-script (sis_snpshtFF_manual.sh) 来进行处理、监控和发送处理状态的管理员电子邮件通知

  • 处理完成时存档数据文件

  • 处理下一个数据文件(如果存在)

  • 最后,通过邮件进行报告,以说明自动化脚本调用的累积结果。

这提供了如下所示的一般流程。左侧是自动化快照平面文件处理的一般流程,如提供的参考解决方案中所示。在右侧,是ETL 流程的脚本部分的进一步细分。我们有两个脚本,左边的是 sis_nspshtFF_auto.sh,右边的是 sis_nspshtFF_manual.sh。图 2 所示的操作也作为注释包含在每个脚本的自动化参考实施中。

快照自动化的常规工作流程图,包括流程的脚本部分。我们有两个脚本,左边的是 sis_nspshtFF_auto.sh,右边的是 sis_nspshtFF_manual.sh。
“什么”:学生信息系统_snpshtFF_auto.sh

在较高级别,sis_snpsht_auto 脚本加载配置的数据目录中存在的文件,分析文件数据标题以确定引用的对象类型,及将文件添加到相应列表供日后处理。标题分析用于确定文件引用的对象类型,以及其在快照处理队列中的顺序。这种排序允许 SIS 生成的平面文件的单个落点。

所有文件经过分析并分组到其对象类型列表之后,列表按照用户、课程、成员这个逻辑顺序进行处理。每个文件都会传递给 sis_snpshtFF_manual 脚本进行处理,这也可以通过命令行以及针对每个对象类型的适当参数来运行。sis_snpshtFF_manual 脚本采用传入参数,并使用相应的 URL 将数据文件 POST 到 Blackboard。完成后,该脚本进入监控循环,然后生成报告并通过电子邮件将其发送到配置的收件人列表。将文件返回到 sis_snpsht_auto 脚本,其将发送下一个文件以进行处理。此过程不断重复,直到所有文件都经过处理。处理完所有文件之后,sis_snpshtFF_auto 通过电子邮件将最终报告发送到配置的收件人列表。

“何时”:使用 CRON 调度快照

自动化的目的是能够运行脚本集,而无需人工干预。UNIX 通过 CRON(一款内置的调度应用程序)提供该功能。CRON 系统进程定期检查系统 crontab,即一种系统文件,包含其应运行的时间的命令和设置列表。然后,系统评估条目,看看其应该现在运行还是稍后运行(如 crontab 条目所表示)。

重要

在设置 crontab 条目时,应该考虑 cron 任务的频率和操作的处理时间,因为刷新操作可能要比存储操作花费更长的时间。如果使用下方提供的脚本,可以通过单独的 crontab 条目和脚本参数中单独的数据源目录来处理数据刷新与存储。

crontab 条目的 CRON 表达式

格式:CRON 使用非常特定的格式来调度数据。它依赖用空格分隔的五个必须数据字段列表:

字段

描述

允许的值

MIN

分钟字段

0 至 59

HOUR

小时字段

0 至 23

DOM

某一天

1-31

MON

月份字段

1-12

DOW

星期几

0-6

CMD

命令

要执行的任何命令。

在实践中,这种格式可以简单地应用,也可以如您所选的一样复杂地应用。

示例:

简单 crontab 条目的一个示例就是在每小时的开始运行一项任务:

0 * * * * /usr/local/blackboard/apps/snapshot/scripts/sis_snpshtFF_auto.sh

  • 0 - 第 0 分钟

  • * - 每小时

  • * - 每天

  • *- 每个月

  • * - 一周的每一天

或每天午夜一次:

0 0 * * * /usr/local/blackboard/apps/snapshot/scripts/sis_snpshtFF_auto.sh

  • 0 - 第 0 分钟

  • 0 - 每小时

  • * - 每天

  • * - 每个月

  • * - 一周的每一天

在工作周的每一天将一项任务运行两次:

0 11,16 * * 1-5 /usr/local/blackboard/apps/snapshot/scripts/sis_snpshtFF_auto.sh

  • 0 - 第 0 分钟(小时开始前)

  • 11,16 - 上午 11 点和下午 4 点

  • * - 每天

  • * - 每个月

  • 1-5 - 星期一到星期五

或星期一到星期五的每两个小时:

0 */2 * * Mon-Fri /usr/local/blackboard/apps/snapshot/scripts/sis_snpshtFF_auto.sh

  • 0 - 第 0 分钟(小时开始前)

  • */2 - 每个偶数小时,如 12、2、4、6、8、10、12、14 等或每隔一个小时。

  • * - 每天

  • * - 每个月

  • Mon-Fri - 星期一到星期五

您还可以使用命令 $ man 5 crontab 通过命令行查看系统的手册页

添加 crontab

通过上文 cron 设置,我们可以在将运行快照任务时添加 crontab 条目以进行调度。

  1. 要编辑根 crontab 文件,请在 UNIX/Linux shell 提示时以根用户身份键入以下命令:

    $ crontab -e

    请注意,-e 会将您转入 vi 编辑器。

  2. 要在每天午夜运行平面文件自动处理脚本,请在任务列表中添加以下内容:

    root@dev$ crontab -e

  3. 键入 i 进入编辑模式,然后键入:

    0 0 * * * /usr/local/blackboard/apps/snapshot/scripts/sis_snpshtFF_auto.sh

  4. 按 escape 退出编辑模式。

  5. 键入 :wq 保存您的编辑并退出编辑器。

引用

下方是用户贡献的有关 BASH 引用实施的观点、内容和建议:

Kelt Dockins 贡献了对快照平面文件内容分析的基于 BASH 的实施(不再在线提供)。

Ross Brown 和 Jerald Todd 发现了第一个引用实施版本中存在的一些早期问题。

文件

这个可下载的 SIS_SnpshtFF_Bash_Scripts 存档 (zip) 文件包含了功能和注释代码来说明本主题中所讨论的概念。

学生信息系统 快照平面文件 Bash 脚本存档

了解更多信息

学生信息系统框架概述

数据源密钥概述