无故障 SIS 集成的一个组成部分是能够自动执行和监控发布到 Learn 的数据流(如集成所展示)。我们提供了两项可以促进此流程的新功能:

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

    Success: Feed File Uploaded. Use the reference code afc3d6e84df84f51944a06cccee8f59a to track these records in the logs.

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

    https:// ... /webapps/bb-data-integration-flatfile-[YOUR 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>

    详细了解 SaaS 部署中的数据标识符

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

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

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

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


使用案例:自动执行 SIS 平面文件处理

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

摘要

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

参与者

SIS、操作系统调度程序、Learn

先决条件

在指定的目录中,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 将数据发送到 Learn,并确定完成状态
  7. 如果存在错误并配置为执行此类操作,则 sis_snpshtFF_manual 会查询错误消息的集成日志
  8. sis_snpshtFF_manual 脚本构建含有状态信息的电子邮件,并将其发送至配置的电子邮件地址
  9. 对于每个数据文件,重复执行第 5-8 步操作
  10. 将所有数据文件处理完毕后,sis_snpshtFF_auto 脚本将状态电子邮件发送至配置的电子邮件地址

后置条件

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


解决方案

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

  • “何时”:确定何时运行所提供数据的处理,
  • “什么”:有哪些数据对象和数据源提供了数据覆盖,以及
  • “如何”:此类数据的处理和监控

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

以下部分将解决这三个组件涉及的问题。将这三个组件放在适当的位置,会通过快照平面文件集成类型为将 SIS 数据移到 Learn 提供可监控的自动化流程。

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

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

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

  • 检查指定的目录中是否存在文件
  • 根据文件中的标题信息确定对象类型和操作
  • 按照顺序处理,以便以正确的顺序处理文件。例如:依次是用户、课程和成员。
  • 调用 sub-script (sis_snpshtFF_manual.sh) 来进行处理、监控和发送处理状态的管理员电子邮件通知
  • 处理完成时存档数据文件
  • 处理下一个数据文件(如果存在)
  • 最后,通过邮件进行报告,以说明自动化脚本调用的累积结果。

“什么”:sis_snpshtFF_auto.sh

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

所有文件经过分析并分组到其对象类型列表之后,列表按照用户、课程、成员这个逻辑顺序进行处理。每个文件都会传递给 sis_snpshtFF_manual 脚本进行处理,这也可以通过命令行以及针对每个对象类型的适当参数来运行。sis_snpshtFF_manual 脚本接受传入参数并使用适当的 URL 将数据文件发布到 Learn。完成后,该脚本进入监控循环,然后生成报告并通过电子邮件将其发送到配置的收件人列表。将文件返回到 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 - 星期一到星期五

详细了解 CRON

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

添加 crontab

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

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

    $ crontab -e

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

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

    [email protected]$ 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) 文件包含了功能和注释代码来说明本主题中所讨论的概念。


了解详细信息

SIS 框架概述

数据源密钥概述