排程¶
计划项目是用于管理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***计划的工作,这些工作不是按照设定的 但工作运行之间有特定的延迟。延迟计时器 工作结束时启动,当延迟计时器 达到零。只要作业启用,这种情况就会持续。
-
-
如果任务类型可自定义,下面将显示**参数**部分 调度设置。这些附加选项指定了 根据工作类型的不同,预定的工作也会有所不同。
-
按**保存**按钮确认作业创建。作业创建成功后 创建后,您将被重定向到工作概览,在那里新创建的 工作现在将被列出。

新创建的工作默认为启用。
编辑工作{ #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 按钮自动保存新密码。刷新 页面,并检查填充的值是否仍然存在。注意 密码字段在刷新后将为空,因为该值已加密、 所以你可以认为它已被保存。
-
使用 "日程安排项目 "应用项目,使用 "事件项目数据同步 "创建新任务 和/或 "跟踪项目数据同步 "任务类型。确保启用时 完成。(注:如果 "项目数据同步 "任务可在 在以前的版本中,在 "日程安排项目 "应用项目中进行设置时,它会自动 由 "事件项目数据同步 "和 "跟踪项目 "这两项新工作取代。 数据同步 "设置相同。)
数据同步功能的某些方面需要注意:
-
本地 DHIS2 实例会将用户账户的密码存储在 在本地数据库中加密的远程实例。远程账户用于 传输数据时进行身份验证。为安全起见,请确保 中设置 encryption.password 配置参数。 _hibernate.properties_为强密码。
-
强烈建议在 SSL/HTTPS 上部署远程服务器,因为 用户名和密码以明文形式发送,使用基本身份验证和 可能会被攻击者拦截。
-
数据同步使用数据元素的 UID 属性,类别 选项组合和组织单位来匹配元数据。因此 同步取决于这三个元数据对象的协调统一 才能正常工作。
-
DHIS2 首次运行同步作业时,会将任何数据包括在内。 可用。随后的同步工作将只包括添加的数据。 以及自上次成功执行任务以来发生的更改。同步操作被视为 只有当所有数据都已成功保存在远程服务器上时才算成功 (任何成功同步的数据都将保留在接收实例中、 无论作业最终是否失败)。作业是否成功 可以根据中央服务器返回的导入摘要来决定。
-
初始同步工作可能需要大量时间、 可能会降低实例的运行速度,这取决于正在运行的数据量有多大。 同步。最好将作业配置为在出现以下情况时运行 如果在线用户很少,那么以后可以根据自己的喜好进行更改。如果您 如果不希望或不需要同步所有数据,则可以 跳过部分同步数据 。
当 DHIS2 同步跟踪器数据时,它会确定一组数据,以便 根据上次同步的时间进行同步。每个跟踪的 实体实例和事件都有自己的记录,记录它们最后一次 成功同步。
-
系统将根据在 工作的配置。如果同步工作启动时没有 连接到远程服务器之前,最多会重试三次。 中止。任务将在预定时间再次运行。
-
服务器分别处理每套项目,这意味着一套 项目可以成功同步,而另一个则会失败。失败 或成功并不影响另一个,因为上一个成功的 如前所述,每个项目的同步时间都是单独跟踪的。 提到的。
-
TrackedEntityInstances 的属性(TrackedEntityAttribute)和数据 项目阶段(ProgramStageDataElement)的元素,其选项 "跳过 打开的 "同步 "功能将不会同步。此功能允许您 决定不同步某些敏感数据或不相关的数据,并保留 它们只能在本地使用。
-
当局 忽略跟踪器和事件捕获中的必填字段验证 时,应使用 (
F_IIGNORE_TRACKER_REQUIRED_VALUE_VALIDATION)。 是一种要求,即某些强制属性/数据元素必须同时具有 跳过同步 "属性。这种设置会导致 中央服务器对给定属性/数据元素的验证失败 将不会出现在有效载荷中。
拥有此权限的用户不会出现验证失败。权限 应分配给中央服务器上的用户,该用户将用于 同步工作。
- 在特殊情况下,可以**所有数据的初始同步。 不可取**;例如,当本地实例上的数据库是一个新的 中央实例上的数据库副本,或者在首选情况下 不同步旧数据,以减少初始同步所需的时间。 时间
syncSkipSyncForDataChangedBefore_设置键可用于跳过 同步所有数据(数据值、事件和跟踪器项目数据)、 完整的数据集注册)在指定的 date。设置密钥 "一直在同步工作中使用。 因此,如果需要同步旧数据,应更改 设置键
- 跟踪项目和事件项目同步工作都支持分页 以避免超时和应对不稳定的网络。默认页 事件项目数据同步 "任务的页面大小设置为 60。默认页面大小为 "跟踪器项目数据同步 "任务设置为 20。
如果默认值不符合您的要求,可以通过以下方式指定自己的页面大小 参数。
元数据同步调度¶
DHIS2 提供了一种功能,可将元数据从远程实例同步到本地实例。 同步元数据的功能。当您部署了多个 当您部署了多个独立的 DHIS2 实例,并需要在所有本地实例中创建与中央 DHIS2 实例类似的元数据时,这将非常有用。 元数据。
这些是启用元数据同步的步骤:
-
转到 "设置" > "同步",输入远程服务器 URL、用户名和密码。 密码,然后单击保存。
-
使用 "日程安排项目 "应用项目,使用 "元数据同步 "任务类型创建新任务。
元数据同步功能的某些方面需要注意:
-
本地 DHIS2 实例将存储该用户账户的密码。 数据库中的远程实例。远程用户账户用于 在传输/下载数据时进行身份验证。为安全起见,请 中设置 encryption.password 配置参数。 _hibernate.properties_为强密码。
-
强烈建议在 SSL/HTTPS 上部署远程服务器,因为 用户名和密码以明文形式发送,使用基本身份验证和 可能会被攻击者拦截。
-
还要确保远程用户没有 ALL 权限,而只是 创建一个具有 F_METADATA_MANAGE 权限的用户,这样即使这些详细信息 被黑客截获,就不能完全控制远程 系统。
-
元数据同步依赖于底层导入层。每个元数据 数据版本是两个给定时间戳之间元数据的导出。每个同步 元数据版本,就是试图将该元数据快照导入到 本地实例。版本同步是渐进式的。本地实例将 尝试从中央实例下载元数据版本,一个接着一个 其他。如果不同步特定元数据版本,将无法同步 进行下一个版本。如果出现故障,必须进行适当更改。 元数据,以确保错误得到解决。元数据 配置非常重要,用户在推出时应小心谨慎。 更新到生产系统。建议始终将暂存 环境,以确保元数据版本及其 影响。本地实例将同步元数据。 版本,以保持和谐,使本地和中央实例都能工作 适当。
-
系统将在预定时间尝试同步。如果本地 或远程服务器当时没有正常的互联网连接,则 同步将被中止,并在重试次数达到一定程度后重新尝试同步。 文件中提到的那样。
-
您可以在 "时间 "中查看上次与远程服务器成功同步的时间。 最后成功 "标签旁边的调度屏幕。
预测器{ #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.
您可以选择在任务期间运行哪些预测器和预测器组:
-
**预测器**运行单个预测器。它们按照添加的顺序运行。
-
** 预测组** 运行预测组。它们按照添加的顺序运行。预测组 每组中的预测因子按其名称顺序排列(比较 Unicode 字符值)。
如果在同一个任务中同时选择了单个预测因子和预测因子组、 则先运行单个预测因子,然后运行预测因子组。
数据完整性{ #scheduling_data_integrity }¶
数据完整性任务类型负责安排数据完整性检查。DHIS2 可以对数据库中的数据执行多种数据完整性检查。识别和纠正数据完整性问题对于确保用于分析目的的数据是有效的极为重要。本文将介绍系统执行的每种数据完整性检查,以及解决这些问题的一般项目。
数据完整性检查的结果可在数据管理应用项目中查看。从 2.41 版开始,数据完整性检查的结果只能在任务完成后*1 小时*内查看。
某些数据完整性检查被标记为*慢*。用户在生产系统上运行这些检查时应谨慎,因为它们可能导致性能下降。一般不建议同时运行多个检查。
可使用以下参数:
- 报告类型 结果的具体程度。可用选项有
- 摘要 - 将提供问题数量摘要。
- 详情 - 每项完整性检查都将提供一份问题清单,指出个别数据完整性违规行为。
- **运行检查**指定要运行的数据完整性检查。如果选择 "只运行选定的检查",则将显示检查列表,您可以只选择要运行的检查。如果选择*运行所有标准检查*,则将执行所有*标准*检查。请注意,这不会运行标记为*慢*的检查 - 这些检查必须使用*只运行选定检查*手动选择。
有关可用数据完整性检查的更多信息,请参阅 数据管理。
计划队列{ #schedule_queues }¶
创建队列{ #scheduling_create_queue }¶
-
打开**日程安排**应用项目,点击右上角的 "新建队列 "按钮 角落。
-
为新队列选择一个合适的**名称**。
-
为队列选择 cron 计划。队列可以使用 春季安排 语法,就像工作一样。您还可以选择预定义的 Cron 表达式 点击 "从预设时间中选择"。
-
选择应成为队列一部分的作业。可用的作业可以是 通过箭头按钮添加到队列中。队列将在 的顺序。
-
按**保存**按钮确认队列创建。队列创建成功后 创建后,您将被重定向到工作和队列概览,在这里您可以看到 现在将列出新创建的队列。队列将有一个下拉箭头 可以点击它来显示队列中的作业。
创建新的调度队列](resources/images/scheduler/add_new_queue.png)
新创建的队列默认为启用。
编辑队列{ #scheduling_configure_queue }¶
通过适当的权限,您可以修改队列的详细信息。要快速 启用或禁用队列的运行,请使用登陆页面**开/关**列中的开关。 栏中的开关。
进一步编辑队列:
-
单击要编辑的队列的 "操作 "按钮,然后单击 "编辑"。
-
编辑完成后,按下**保存**按钮以保留更改。
-
如果任务已从队列中移除,它们将再次显示在 概述。但由于它们是队列的一部分,因此将被禁用,并且 没有时间表。
删除队列{ #scheduling_delete_queue }¶
-
点击要删除的队列的 "操作 "按钮,然后点击 "删除"。
-
在弹出窗口中再次按** Delete **进行确认。
-
队列中的所有任务将再次显示在 概述。但由于它们是队列的一部分,因此将被禁用,并且 没有时间表。
队列也可以从编辑屏幕中删除。
删除调度程序队列](resources/images/scheduler/delete_queue.png)