排程¶
计划程序是用于管理DHIS2中的后台作业的应用程序。 后台作业可以执行许多任务,例如运行分析, 同步数据和元数据,或发送推送分析报告。的 应用程序提供了创建,修改和删除此类作业的功能。
可使用作业队列安排作业按特定顺序运行。作业队列 由两个或多个作业组成,可根据 cron 计划表进行调度。 在指定的时间,队列将启动第一个作业,并等待其完成后再启动第二个作业。 完成后再启动第二个作业。它将继续按 顺序运行作业,直到所有作业都执行完毕。
调度程序与DHIS2捆绑在一起,可以通过应用程序进行访问 菜单。
日程安排程序的起始页](resources/images/scheduler/overview.png)
调度程序应用程序的起始页显示现有作业和队列的概览。 队列。默认情况下,预定义的系统作业是隐藏的。要查看这些作业,请单击右上角的 在列表中包含系统作业_。
创建或修改作业或队列时,将根据所选的计划表进行调度。 所选计划安排。要按需运行作业或队列,请转到概览,单击要运行的作业或队列的 "操作 "按钮,然后单击 "运行"。 操作 "按钮,然后单击 "手动运行"。 手动运行"。此操作仅适用于已启用的作业和队列。
创造工作¶
-
打开**日程安排**应用程序,点击右上角的 "新工作 "按钮 角落。
-
Choose a suitable Name for the new job.
-
Select the Job type you want to schedule using the drop-down menu.
-
选择作业的时间表。每个作业类型都有自己的调度类型, Cron 调度或 Delay 调度。
-
对于 Cron 计划作业类型,您可以使用 春季安排 句法。您还可以通过单击选择预定义的 Cron 表达式 “从预设时间中选择”。该计划只会启动新的作业运行 如果上一个任务运行已结束,则系统将不会 催生了太多的就业机会。
-
对于**延迟**计划作业,您可以设置以秒为单位的延迟。不像 **Cron***计划的工作,这些工作不是按照设定的 计划,但在作业运行之间有特定的延迟。延迟计时器 工作结束时启动,当延迟计时器 达到零。只要作业启用,这种情况就会持续。
-
-
如果作业类型是可自定义的,**参数**部分将出现在下面 日程安排设置。这些附加选项指定了详细信息 预定的作业,并且会根据作业类型而有所不同。
-
按 保存 按钮确认作业创建。在成功的工作上 创建后,您将被重定向到工作概览,在那里新创建的 工作现在将被列出。

默认情况下启用新创建的作业。
编辑工作{ #scheduling_configure_job }¶
有了适当的权限,您就可以修改用户创建任务的详细信息。要 要快速启用或禁用用户创建的作业,请使用 "调度程序 "应用程序登陆页面上**开/关**列中的开关。 开关。请注意,系统 作业始终处于启用状态,无法禁用。
进一步编辑用户作业:
-
单击要编辑的工作的 "操作 "按钮,然后单击 "编辑"。 (只能编辑用户任务)。
-
完成编辑后,按 保存 按钮保存更改。
删除工作¶
-
单击要删除的作业的“操作”按钮,然后单击“删除” (只能删除用户作业)。
-
在弹出窗口中再次按** Delete **进行确认。
也可以从编辑屏幕删除用户作业。

工作类型¶
以下部分描述了各种作业类型。
禁用非活动用户{ #scheduling_disable_inactive_users }¶
几个月未活动--未登录--的用户会被自动禁用。 自动禁用。选择不活动月数作为工作 参数。所有在该月或更长时间内未登录的用户 将被禁用。被禁用的用户将无法再登录系统。 系统。
可以设置 Reminder days before 参数,以便在用户账户到期前的指定天数向其发送提醒电子邮件。 提醒邮件。 如果用户没有登录,系统将发送更多的提醒邮件,每封邮件的天数减半。 天数减半。例如,如果天数设置为 7 天,则第一封电子邮件将提前 7 天发送。 邮件提前 7 天发送,第二封提前 3 天发送,第三封也就是最后一封提前 1 天发送。 天。如果未设置该值(空白),则不会发送提醒邮件。
资源表¶
资源表任务负责生成和更新资源 数据库表。这些表由 DHIS 2 中的各种组件使用,旨在简化对数据库的查询。 旨在简化对数据库的查询。
请注意,在指定任何分析表任务时,资源表都可以是流程的一部分。 可以是流程的一部分,不必同时指定资源表作业。 作业。
分析表¶
分析表任务负责生成和更新分析表。 分析表。分析表是 DHIS2 中数据分析查询的基础。 查询的基础。仪表盘、可视化器和地图等应用程序通过 DHIS2 这些表必须更新,分析数据才能可用。 分析数据才能可用。您可以通过分析表作业 定期运行。
默认情况下,分析表任务将填充所有年份和数据元素的数据。 元素。可使用以下参数:
- 最后年份: 要填充分析表的最后年份数。如 例如,如果您指定 2 年,程序将更新最近两年的数据。 但不更新旧数据。该参数有助于减少 处理过程所需的时间,如果较早的数据已经 在没有更改的情况下,以及需要更新最新数据时。
- 跳过资源表: 在分析表期间跳过资源表 更新流程。这减少了完成流程所需的时间,但会导致 元数据的变化无法反映在分析数据中。
- 跳过表格类型: 跳过一个或多个分析表格类型。这样可以减少 的时间,但会导致这些数据类型无法 更新分析数据。
连续分析表¶
分析表任务负责生成和更新分析表。 分析表。分析表是 DHIS2 中数据分析查询的基础。 查询的基础。仪表盘、可视化器和地图等应用程序通过 DHIS2 这些表必须更新,分析数据才能可用。 分析数据才能可用。您可以通过分析表作业 定期运行。
连续分析表作业基于两个阶段:
- _最新更新:_最新数据的更新,其中最新指的是数据 自上次最新数据发布以来增加、更新或删除的内容 或更新了全部数据。这个过程会经常发生。
- 全面更新:_ 更新所有年份的所有数据。此过程将发生 每天一次。
连续分析表任务会经常更新最新数据。最新数据 最新数据流程使用一个特殊的数据库分区,该分区仅用于保存最新数据。 最新数据。由于数据量相对较小,该分区可以快速刷新。 数据量相对较小。该分区的大小会不断增大,直到 更新。每天更新一次所有年份的所有数据。这 将清除最新的分区。
默认情况下,分析表任务将填充所有年份和数据元素的数据。 元素。可使用以下参数:
- 一天中全面更新的时间: 一天中全面更新的时间。 进行更新。举例来说,如果指定 1,则全部更新将在 1 AM.
- 最后年份: 要填充分析表的最后年份数。如 例如,如果您指定 2 年,程序将更新最近两年的数据。 但不更新旧数据。该参数有助于减少 处理过程所需的时间,如果较早的数据已经 在没有更改的情况下,以及需要更新最新数据时。
- 跳过资源表: 在分析表期间跳过资源表 更新流程。这减少了完成流程所需的时间,但会导致 元数据的变化无法反映在分析数据中。
跟踪器三叉戟索引维护{ #scheduling_tracker_index_maintenance }¶
跟踪者三叉索引维护任务负责创建和更新 trackedentityattributevalue "表中相关被跟踪实体属性的部分三角索引。这些部分三角索引 可大大提高对跟踪实体的搜索性能。
如果同时满足以下两个条件,就会为 "trackedentityattributevalue "表中的跟踪实体属性创建部分三叉树索引 满足以下条件: - 被跟踪实体属性的标志 trigramindexable 设置为 true。 - 跟踪实体属性允许使用以下至少一种属性 运算符:LIKE "或 "EW"。
该任务还会删除过时的部分三叉树索引。 由于不再满足上述一个或两个条件,因此不再需要这些索引。 满足。
只有当搜索的文本至少有 3 个字符长时,三叉索引才会生效。 因此,建议将用于三 叉簇索引的跟踪实体属性配置为 为三叉索引配置最小搜索长度为 3 个字符。 这可以通过属性 minCharactersToSearch 进行设置。
该任务接受一个参数:runAnalyze。 这是一个布尔标志。设置为 true 时,作业将对trackedentityattributevalue表执行ANALYZE命令。 trackedentityattributevalue表执行ANALYZE命令。 运行ANALYZE` 会更新 PostgreSQL 列的统计数据,使查询规划器能够 准确地决定何时使用三角索引以获得最佳查询性能。
数据同步¶
DHIS2 提供远程分布式实例与中央实例之间的数据同步。 和 DHIS2 中央实例之间的数据同步。例如,当您部署了 例如,当您部署了多个独立的 DHIS2 实例,需要向中心 DHIS2 实例提交数据值时。 向中央 DHIS2 实例提交数据值。跟踪数据和汇总数据 都支持同步。
这些是启用数据同步的步骤:
-
转到同步设置,输入远程服务器 URL、用户名和密码。 密码。按 TAB 按钮自动保存新密码。刷新 页面,并检查填充的值是否仍然存在。注意 密码字段在刷新后将为空,因为该值已加密、 所以你可以认为它已被保存。
-
使用“计划程序”应用,通过“单次事件数据”创建一个新任务 “同步”和/或“受监控实体数据同步”任务类型。请 完成后请确保该功能已启用。
Note
These two job types replace the "Event Programs Data Sync" and "Tracker Programs Data Sync" jobs available in versions prior to 2.42. There is no automatic migration: when upgrading from 2.41 or earlier, any existing tracker or event program synchronization jobs are not carried over, and you must create a new job configuration for each of them using the new job types.
数据同步功能的某些方面需要注意:
-
本地 DHIS2 实例将把用户账户的密码存储在 在本地数据库中加密的远程实例。该远程账户用于 用于数据传输时的身份验证。出于安全考虑,请确保您 在以下位置设置 encryption.password 配置参数: 将 hibernate.properties 中的密码设置为强密码。
-
强烈建议在 SSL/HTTPS 上部署远程服务器,因为 用户名和密码通过基本身份验证以明文形式发送,并且 可能会被攻击者截获。
-
数据同步使用数据元素的 UID 属性,类别 与元数据相匹配的选项组合和组织单元。因此, 同步取决于这三个元数据对象是否已实现协调一致 在本地和远程实例上,以便正常运行。
-
DHIS2 首次运行同步任务时,将包含所有数据 可用。后续的同步任务将仅包含新增的数据 并且自上次任务成功执行以来发生了变化。同步任务被视为 只有当所有数据都已成功保存到远程服务器上时,才算成功 (任何成功同步的数据都将保留在接收实例上, (无论该作业最终是否失败)。该作业是否成功 可从中央服务器返回的导入摘要中确定。
-
初始同步任务可能需要相当长的时间, 这可能会导致您的实例运行变慢,具体取决于数据量有多大 已同步。将该任务配置为在以下情况下运行或许是个好主意: 如果在线用户较少,稍后可根据个人喜好进行调整。如果你这样做 如果不想或不需要同步所有数据,可以 跳过部分正在同步的数据 。
当 DHIS2 同步追踪器数据时,它会确定要 根据上次同步的时间进行同步。每个被跟踪的 实体实例和事件都有各自的记录,记录了它们上次出现的时间和地点 已成功同步。
-
系统将根据在 该任务的配置。如果同步任务在没有 连接远程服务器时,系统会重试最多三次,然后 任务中止。该任务将在预定时间再次运行。
-
服务器分别处理每套项目,这意味着一套 项目可以成功同步,而另一个则会失败。失败 或者,其中一项的成功不会影响另一项,正如上次成功的那样 与之前一样,每个项目的同步时间都会单独记录 提到了。
-
TrackedEntityInstances 的属性(TrackedEntityAttribute)及其数据 项目阶段(ProgramStageDataElement)的元素,其选项 "跳过 如果“同步”功能已启用,则不会进行同步。此功能允许您 决定不同步某些敏感或无关的数据,并保留 仅在本地使用它们。
-
该机构
忽略 Tracker 和 Event Capture 中必填字段的验证当存在以下情况时,应使用 (F_IGNORE_TRACKER_REQUIRED_VALUE_VALIDATION) 是指某些必填属性/数据元素必须同时具备 当“跳过同步”属性被启用时。此设置将导致 中央服务器上发生验证失败,原因是给定的属性/数据元素 不会出现在有效载荷中。
对于拥有此权限的用户,验证不会失败。该权限 应在中央服务器上分配给该用户,该用户将用于 同步任务。
- 在特定情况下,所有数据的初始同步可以 不理想;例如,当本地实例上的数据库是新创建的 中央实例上的数据库副本,或者在需要时 为了使初始同步耗时更短,不同步旧数据 时间。
可使用设置键 syncSkipSyncForDataChangedBefore 来跳过 同步所有数据(数据值、事件和跟踪器项目数据)、 (完整数据集注册)且_最后一次修改时间在指定时间之前 date_。SettingKey 在同步任务中始终被使用。 因此,如果您需要同步旧数据,应修改 SettingKey。
- “单个事件数据同步”和“被追踪实体数据” “同步”任务支持分页,以避免超时并处理 网络不稳定。这两个作业的默认页面大小均为 60。
如果默认值不符合您的需求,您可以自行设置页面大小 通过“调度程序”应用中特定同步任务的参数进行指定。 允许的页面大小范围为最小 5 到最大 200。
元数据同步调度¶
DHIS2 提供了一项功能,用于将远程实例的元数据同步到 DHIS2 的本地实例。当您部署了多个 独立的 DHIS2 实例,且需要在所有本地 实例中创建与中央 DHIS2 实例类似的元数据时,此功能会非常有用。
这些是启用元数据同步的步骤:
-
进入“设置” > “同步”,输入远程服务器的 URL、用户名和 输入密码,然后点击“保存”。
-
使用 "日程安排项目 "应用项目,使用 "元数据同步 "任务类型创建新任务。
元数据同步功能的某些方面需要注意:
-
本地 DHIS2 实例将存储该用户账户的密码,该账户的 其数据库中的远程实例。该远程用户帐户用于 传输/下载数据时的身份验证。出于安全考虑,请 请确保已在 将 hibernate.properties 中的密码设置为强密码。
-
强烈建议在 SSL/HTTPS 上部署远程服务器,因为 用户名和密码通过基本身份验证以明文形式发送,并且 可能会被攻击者截获。
-
此外,请确保远程用户不具备“全部”权限,而仅拥有 创建一个具有 F_METADATA_MANAGE 权限的用户,这样即使这些详细信息 一旦被黑客截获,就无法完全控制远程设备 系统。
-
元数据同步依赖于底层的导入层。每个元数据 数据版本是指在两个指定时间戳之间导出的元数据。每次同步 元数据版本旨在将该元数据快照导入到 本地实例。版本同步采用增量方式。本地实例将 尝试从中央实例依次下载各版本的元数据, 其他。如果无法同步某个特定的元数据版本,则无法进行同步 继续进行后续版本的开发。如果出现故障,必须进行相应的修改。 已在中央对元数据进行了修改,以确保该错误得到解决。元数据 配置至关重要,用户在部署时应格外谨慎。 生产环境的更新。通常建议设置一个预发布环境 已建立相关环境,以确保元数据版本及其 此后产生的影响。本地实例将从第一个同步元数据 版本,以确保兼容性,并使本地和中央实例能够正常运行 恰当地。
-
系统将在预定时间尝试进行同步。如果本地 或者远程服务器当时无法连接到互联网,那么 同步操作将被中止,并将在重试次数达到后重新尝试 如 dhis.conf 文件中所述。
-
您可以在以下位置查看与远程服务器上次成功同步的时间: “最后一次成功”标签旁边的排程界面。
预测变量{ #scheduling_predictor }¶
此操作将运行选定的预测变量和/或预测变量组。
相对起始和结束参数决定了数据将 被预测的时段,这些时段与预测任务的运行日期相对应:
-
**“相对开始日期”**是指从任务日期开始,计算至 预测周期可能由此开始。该值可以是正数,也可以是负数。对于 例如,数值为 3 表示预测的时段起始时间至少为 3 天后 预测运行结束后。值为 -3 表示将预测结果划分为起始于 在运行预测模型前至少3天。
-
**相对结束日期**是指从任务日期开始,计算到以下日期中较晚的那一天: 预测的周期可能会结束。它可能是正值,也可能是负值。例如,一个 数值为 9 表示预测的时段结束时间至少在……之后 9 天 预测器运行。值为 -9 表示预测至至少结束于第 9 个时段的时段 预测运行前的几天。
设置这些值可以让你非常灵活地控制何时进行预测, 特别是当你的预测任务设置为每天或更 频繁地运行时。 在设置这些值之前,您应仔细考虑希望 某个时段的预测何时开始生成,以及何时 停止生成。然后,您需要计算相应的相对开始和结束 日期。
For example, you can filter the "MCH Infant Weight (g)" data element, of the program "Child Program" and program stage "Baby Postnatal" looking for values greater than 2000 and lower than 4000. The filter is defined like this:
-
要求:预测变量应使用与被预测变量属于同一周的数据 值。(不使用任何过去的抽样数据。)周日当周结束后,你 预计数据将在接下来的两天内(周一和 (星期二)。在周三之后,你才应该开始预测数据,因为 周末结束,因为你不想显示部分结果。不过,数据 周三可能还会进行调整,所以你需要更新预测 同样是在周四。此后,数据将被冻结,你肯定不希望 不再对该期间进行预测了。
**Solution:** For a job running daily or more frequently, define the relative start as -10 and the relative end as -2 (for periods within 10 to 2 days before the job runs). - Before Wednesday of the following week, the period end is greater than 2 days before, so no predictions are made. - On Wednesday of the following week, the period started 9 days before and ended 2 days before. Predictions are made because -9 to -2 are within the range -10 to -2. - On Thursday of the following week, the period started 10 days before and ended 3 days before. Predictions are made because -10 to -3 are within the range -10 to -2. - After Thursday, the previous week started more than 10 days before, so no predictions are made. - Predictions are made only on Wednesday and Thursday. On Friday through Tuesday, no predictions are made (and the job finishes very quickly). -
要求:使用一个预测变量来预测一个限值(平均值加上两倍 (标准差)用于预期非季节性疾病病例 基于过去五周的数据。一周指周一至周日。 预测应从前一个星期二开始进行,使用 当时可获得的数据,并将持续更新至该周的周二 所做预测所针对的那一周(届时据推测 (即上周的数据为最终数据)。)
**Solution:** For a job running daily or more frequently, define the relative start as -1 and the relative end as 12. - Before Tuesday, predictions will not be made for the following week because it ends more than 12 days later. - On Tuesday, predictions will be made for the following week which starts in 6 days and ends in 12 days. - On Wednesday through the following Tuesday, predictions will be made for the week whose start-to-end dates are Wed: 5 to 11, Thu: 4 to 10, Fri: 3 to 9, Sat: 2 to 8, Sun: 1 to 7, Mon: 0 to 6, and Tue: -1 to 5. - Note that on Tuesday, predictions are made for the current week with start-to-end dates -1 to 5, and also for the following week with start-to-end dates 6 to 12. On all other days of the week predictions are made for one week.
您可以选择在作业执行期间运行哪些预测变量和预测变量组:
-
Predictors 运行各个预测变量。它们按照添加的顺序依次运行。
-
预测器组 负责运行预测器组。它们按照添加的顺序运行。该 每个组内的预测变量按其名称的顺序运行(比较 Unicode 字符值)。
如果在同一个作业中同时选择了单个预测变量和预测变量组, 则先运行单个预测变量,然后运行预测变量组。
数据完整性{ #scheduling_data_integrity }¶
数据完整性任务类型负责安排数据完整性检查。DHIS2 可以对数据库中的数据执行多种数据完整性检查。识别和纠正数据完整性问题对于确保用于分析目的的数据是有效的极为重要。本文将介绍系统执行的每种数据完整性检查,以及解决这些问题的一般项目。
数据完整性检查的结果可在数据管理应用项目中查看。从 2.41 版开始,数据完整性检查的结果只能在任务完成后*1 小时*内查看。
某些数据完整性检查被标记为“慢”。用户在生产系统上运行这些检查时应谨慎,因为这可能会导致性能下降。通常不建议同时运行多个此类检查。
提供以下参数:
- 报告类型 指结果的具体程度。可选选项包括:
- 摘要——将提供问题数量的汇总。
- 详细信息——每次完整性检查后,都会提供一份列出具体数据完整性违规问题的清单。
- **要运行的检查**用于指定要执行的数据完整性检查。如果选择了*仅运行选定的检查*,系统将显示一个检查列表,您可以在其中仅选择要运行的检查。 如果选择了“运行所有标准检查”,则将执行所有*标准*检查。请注意,此操作不会运行标记为*慢*的检查——这些检查必须通过“仅运行所选检查”手动选择。
有关可用数据完整性检查的更多信息,请参阅 数据管理。
计划队列{ #schedule_queues }¶
创建队列{ #scheduling_create_queue }¶
-
打开**日程安排**应用项目,点击右上角的 "新建队列 "按钮 角落。
-
为新队列选择一个合适的**名称**。
-
为该队列选择一个 cron 计划。可以通过以下方式为队列设置计划: 春季排课 语法,就像作业一样。您还可以选择一个预定义的 Cron 表达式 点击“从预设时间中选择”。
-
选择应纳入该队列的作业。可用的作业包括 使用箭头按钮将其添加到队列中。队列将按以下顺序执行这些任务: 此处指定的顺序。
-
点击**“保存”**按钮以确认创建队列。队列创建成功后 创建后,您将被重定向至“作业和队列概览”页面,其中 新创建的队列现在将显示在列表中。该队列旁将有一个下拉箭头 点击该按钮即可显示队列中的任务。

新创建的队列默认处于启用状态。
编辑队列{ #scheduling_configure_queue }¶
只要拥有相应的权限,您就可以修改队列的详细信息。若要快速 启用或禁用某个队列的运行,请使用“调度程序”应用首页中**“启用/禁用”** 列中的开关。
队列的进一步编辑:
-
点击要编辑的队列的“操作”按钮,然后点击“编辑”。
-
编辑完成后,请点击**“保存”**按钮以保存更改。
-
如果任务已从队列中移除,它们将再次显示在 概述。但由于它们属于一个队列,因此将被禁用,并且 没有时间表。
删除队列{ #scheduling_delete_queue }¶
-
点击要删除的队列的“操作”按钮,然后点击 “删除”。
-
在弹出窗口中再次按** Delete **进行确认。
-
队列中曾包含的所有作业都将再次显示在 概述。但由于它们属于一个队列,因此将被禁用,并且 没有时间表。
也可以在编辑界面中删除队列。
