重置和删除重新附加事件
自动从重新附加队列检索原子事件(但不是组合事件)将导致事件的触发状态重置为 NOTFIRED。 您可以遵循活动可用于处理重新附加事件的这个顺序。
关于此任务
从重新连接队列中检索组合事件 不会 将事件的触发状态重置为 NOTFIRE ,因为组合事件只有在其谓词变为 false 时才会重置。 因此,如果活动程序检索组合事件,那么它应该重置已触发的子事件或子事件的触发状态。 (执行此操作的一种方法是发出一个或多个 RETRIEVE SUBEVENT 命令。) 这反过来会导致重新评估组合事件的触发状态。
如果由于某个子活动的完成而重新连接了该活动,那么应该发出 CHECK ACTIVITY 命令以检查该子活动是否正常完成。 从 CHECK ACTIVITY 命令返回时, CICS® 会从父级的事件池中删除活动完成事件。
如果由于计时器到期而重新连接了活动,那么它可以发出 CHECK TIMER 命令来检查计时器是否正常到期。 从 CHECK TIMER 命令返回时, CICS 会从活动的事件池中删除计时器事件。
如果活动想要从其事件池中删除输入和组合事件,那么可以发出 DELETE EVENT 命令。 或者,它可以依赖于在其最终激活时发出的 RETURN ENDACTIVITY 命令来删除这些命令。
图 1 显示了活动可用于处理重新连接事件的典型序列。 处理原子事件
框在 图 2中展开。
处理原子事件框在 图 2 中展开。 该图显示在单个激活中处理的多个重新连接事件-您可能希望每次激活都处理一个事件。


注:
- 图 1 显示了在一次激活中处理多个重新连接事件的情况。 这可能并不总是适当的。 您可能始终希望每次激活时只检索一个重新连接事件,即使在重新连接队列上存在多个事件也是如此。 例如,如果您希望在每个处理步骤之间采用同步点,那么可能会发生这种情况。 (请特别注意,异步运行的子活动在其父代返回时发生同步点之前不会启动。 处理同一激活中的许多重新连接事件可能会延迟子代的启动。)
- 这些图显示了通过 DELETE EVENT 命令显式删除的输入和组合事件。 这并不总是绝对必要的,请参阅使用 RETURN 命令的 ENDACTIVITY 选项。 同样,可能并不总是需要发出 CHECK TIMER 命令。 否则,可以通过对活动的最终激活发出 RETURN ENDACTIVITY 命令来删除计时器事件。