Open core: don’t reinvent the wheel — build your fenestration software on ours.

Skip to main content

A series is a list of rules. When an item is built, OpenJanela reads that list from top to bottom,
in rule number (ID) order, and tries every rule on every part of the design that sits at the rule’s
Level. A rule that fits adds a part, sets a size, asks a question or routes work. Rules are edited in
OJ Setup → Series → (pick the series) → Rules tab; sub-routines have the same Rules tab on the
Sub-Routines screen. The full field list is in Field reference; every Rule Type number is
in Ruletype Dictionary.

The pieces of a rule, in shop words

Field (Rules tab) What it means on the shop floor
Level (pick it in the Select a level tree) Which piece of the window the rule
looks at: the whole unit (Overall), the frame (All Frame), a sash, the glass (All Glass), the
glazing beads (All Glazing Beads), a mullion and so on. One pick also fills Selected Level and
Parent Level. A frame rule runs once per frame, a sash rule once per sash. Why this matters:
Levels & binding.
Position Which side or spot of that piece: Top, Bottom, Left,
Right, Top + Bottom, Left + Right, All Sides, Perimeter, WxH/Area or
Unit (the piece as a whole).
Rule Type What the rule does: Part, Profile Matrix, Option Choice,
Clearance, set station, Rule Segment (call a sub-routine), Comment… It also
decides what Value 1 and Value 2 ask for.
Value 1 / Value 2 The thing the rule uses: a part, an option, a matrix, a station,
a sub-routine, or a number.
Active Ticked = the rule runs. Unticked = OpenJanela ignores it completely.
Has Test + Rule Tests panel The “only when” part: only when the colour is
not White, only for opening 1, only when Glazing Type is Heel Bead. A rule without a test runs on every piece at its
Level. See Conditions and Rule Tests by Level.

Rule order: New, Insert and Copy

  1. New adds a rule at the end of the list (the next free ID).
  2. Insert copies the selected rule and puts the copy directly below it. Every rule after it is
    renumbered (with its tests). Use Insert when the new rule has to sit inside a group, for example under a station
    rule.
  3. Copy makes a copy of the selected rule, with its tests, at the end of the list.
  4. Order matters most for rules that “set” something for the rules after them (stations, lines) and
    for clearances, where the last matching one on a side wins.

Facts that catch people out

Start Date and End Date do not stop a ruleThe Start Date and
End Date in the Validity panel are not checked when an item is built. A rule whose End Date is
years ago still runs. To stop a rule, untick Active.
Comment rules are headings onlyA rule with Rule Type Comment
(for example 3501 rule 21 “Single Door Non ADA” or 3501.FRAME rule 88 “Thresholds”) is just a
title in the list. OpenJanela skips it. It does not switch the rules below it on or off, even if you give it
a test. To make a group of rules depend on one answer, either put the same test on each rule, or move the group
into a sub-routine and call it with one tested rule — see
How to group rules in a sub-routine.
Station and line rules carry overA set station or
set production line rule sends every part rule after it to that station or line, until the next rule of
the same kind. A station rule whose test fails does not clear the station that was set before it. See
How to send parts to a production station or line.
Units in formulasOn an imperial series, W and H in a
rule’s formula (for example a Quantity Expression (imperial)) are in inches. Fixed sizes are stored as
mm×100 (metric, 100 = 1 mm) and 64ths of an inch (imperial, 4 = 4/64″). More on formulas:
Formulas.

How a typical setup is organised (a common pattern)

The series a salesperson picks (for example 3501, series 269) holds mostly questions (options) and
Rule Segment rules. The real parts live in sub-routines such as 3501.FRAME (357), SD FRAME
LABOR
(361), 3500 PW GB (465) and Sealed Units (38). A sub-routine runs when the rule that calls it
fits, even though the sub-routine itself is not marked Active as a series. So to find “the rule that adds
X”, look in the sub-routines too.