小组层级:父组、子组、继承的约束
PremiumPremium功能。 小组层级和小组时间限制包含在Premium功能中。
在“班级 → 小组”的平面模型之外,Omniscol允许将班级的小组组织成父子层级,并附加通过继承逐级传递的时间限制。当班级需要逐级细分为多个层次时,这非常有用。
通过拖放创建层级
在班级的小组页面上,通过拖放来定义层级:
- 将一个小组拖到另一个小组上 → 前者成为后者的子组。
- 将子组拖到小组列表的表头 → 子组脱离原有层级,重新成为班级的直属小组。
层级深度没有限制。如果您的划分需要,可以建立父组 → 子组 → 孙组的链条。
典型示例
典型的层级:
已声明的班内分组:
(A, B)— 在父组层级,A与B互斥。(A1, A2)— 在A之下,A1与A2互斥。(B1, B2)— 在B之下,B1与B2互斥。
自动产生的结果:Omniscol允许同时安排属于不同分支的小组——例如 A1 和 B2 可以在同一时段,因为没有任何学生同时属于两者(A1 ⊂ A,B2 ⊂ B,且A ∩ B = ∅)。
无需再声明班内分组 (A1, B2):继承会自动推算出来。
时间限制的继承
在班内分组之外,您还可以为小组附加时间限制(可用时间、不兼容)。有了层级,这些限制会从父组继承给子组——通过掩码机制实现,子组可以覆盖它。
示例:体育课预留时段
典型情形:
- 班级
8年级1班周一下午不可用(该时段被全局占用,用于集体活动)。 - 通过继承,班级的所有小组周一下午都不可用。
- 例外是小组
体育:将它的掩码反转,只允许周一下午,禁止其余所有时间。该小组的所有体育活动便会自动落在这个受保护的时段上。
这个机制很强大:一个父级掩码加一个子级例外,就足以清晰地为专用时段建模,而不必在每门课程上重复设置限制。
另一个示例:由父组 选修课 承载允许的时段
另一种非常有用的情形:学校希望所有选修课只排在少数几个预留时段,例如:
- 周一上午,
- 周三10:00之前,
- 周五上午。
此时可以:
- 创建一个父组
选修课,它本身不分配课程; - 在该父组上通过涂画时间限制来表示允许的时段;
- 在其下创建所需数量的子小组:
市场营销选修、金融选修、数据选修等。
所有这些子小组都会继承同样的允许时段。如果规则变化,只需修改一处:父组 选修课。
继承规则
- 子组默认继承父组的时间限制。
- 子组可以覆盖这些限制:添加自己的限制,或反转掩码。
- 父组的班内分组自动适用于子组:如果A与B在同一个班内分组中,则A的子组与B的子组互斥,无需显式声明。
继承的约束与教学小组组合
一个小组也可以是某个教学小组组合的成员。它的约束——包括自身的,以及从其班级和父组继承而来的——随后会与其他成员小组的约束合并:教学小组组合的课时会遵守所有这些合并后的不可用时间。因此,继承沿层级向下传递,随后合并把教学小组组合的各成员汇总在一起。
合并的详细说明参见教学小组组合。
何时使用层级
- 选修课组合:班级的语言课按级别分层(强化英语 > A1-口语、A1-文化、A2-……)。
- 带子轮换的实验课:实验课分成两个半班,每个半班再细分为若干子小组进行操作。
- 差异化路径:一条主路径,配有可在路径内部安排的不同选修模块。
- 体育:一个囊括所有学生的全局小组,配有专用于体育时段的掩码。
- 预留时段上的选修课:父组
选修课承载允许的时段,其子小组对应实际的选修课。
何时不要使用
操作步骤
构建父子层级
-
小组层级将班级的小组组织成父组和子组,时间限制可以继承。
-
先平铺创建小组:在班级的小组页面上创建
A、A1、A2、B、B1、B2,再加一个跨组小组体育。此时它们都在同一层级,直接隶属于班级。 -
拖放建立层级:将
A1拖到A上 →A1成为A的子组。A2、B1、B2同理。您会得到两个分支:A → A1, A2和B → B1, B2。层级深度没有限制。若要让子组脱离层级:将它拖到班级小组的列表表头。
-
声明班内分组:父组层级
(A, B)(互斥),A之下(A1, A2),B之下(B1, B2)。无需再声明(A1, B2):Omniscol通过继承算出A1 ⊂ A与B2 ⊂ B是兼容的(可以安排在同一时段)。 -
设置父级掩码:在班级上,标记周一下午不可用。所有小组都会自动继承。查看每个小组的网格进行验证:该时段在各处都被锁定。
-
反转
体育上的掩码:在体育小组的小组详情中,反转时间限制——允许周一下午,禁止其余所有时间。所有体育活动都会自动落在这个专用时段,而无需在每门课程上重复声明。 -
现在您已经有了一个生效的层级,班内分组和专用时间掩码都可继承。自动生成时会用到它们,继承而来的冲突会实时提示。